Come associare una rotta con un'interfaccia?

0

Ho un Mac con due interfacce di rete, connesso a reti diverse. Per ragioni, diciamo che uno è connesso a una rete privata e l'altro a Internet.

Capisco che posso utilizzare il pannello delle preferenze di sistema delle reti per posizionare l'interfaccia Internet più in alto nell'ordine dei servizi rispetto alla rete privata e, così facendo, il suo "router" diventerà il gateway predefinito del sistema (e "Router" di un'altra interfaccia è ignorato).

Tuttavia, questo ovviamente comporta che il traffico tutto venga instradato su Internet (eccetto la sottorete specifica della rete privata a cui la macchina è direttamente connessa). Voglio sovrascrivere questo comportamento per la intera rete privata, instradando tutto il traffico privato tramite l'interfaccia appropriata.

Che cos'è la "Via della Mela" per realizzare questo? Solo l'esecuzione di sudo route add ... crea solo temporaneamente il percorso, mentre io voglio associarlo con l'interfaccia in modo permanente (vale a dire che sopravviverà allo stato di modifica dell'interfaccia o al riavvio del sistema).

Suppongo che la soluzione implichi il lancio di invocazione di uno script dopo che l'interfaccia è comparsa ... ma come?!

    
posta eggyal 19.11.2014 - 13:29
fonte

1 risposta

0

1 - Ecco un copiato soluzione ma deprecato:

Prima di tutto, devi essere un amministratore locale.

Apri un terminale e passa alla directory StartupItems

cd /Library/StartupItems

Quindi crea una nuova directory con i privilegi di root, ad es. AddRoutes e cambiarlo

sudo mkdir ./AddRoutes
cd ./AddRoutes

Ora devi creare e modificare lo script di bash

sudo touch ./AddRoutes
sudo nano ./AddRoutes

Incolla le seguenti linee nello script di bash e adatta per la tua rete

#!/bin/sh

# Set static routing tables

. /etc/rc.common

StartService ()
{
sleep 10
ConsoleMessage "Adding Static Routing Table"
sudo /sbin/route add -net 10.0.0.0 -netmask 255.0.0.0 -gateway w.x.y.z
}

StopService ()
{
return 0
}

StopService ()
{
return 0
}

RestartService ()
{
return 0
}

RunService "$1"

Quando hai finito con lo script, salvalo.

Quindi crea il plist corrispondente.

sudo touch StartupParameters.plist
sudo nano StartupParameters.plist

Quando hai creato il file Plist, incolla le seguenti righe.

{
Description = "Add static routing tables";
Provides = ("AddRoutes");
Requires = ("Network");
OrderPreference = "None";
}

Al termine del file Plist, salvalo.

Infine devi impostare i diritti di accesso

sudo chmod 755 /Library/StartupItems/AddRoutes/*

Alla fine è necessario riavviare e ora sono impostate le rotte statiche permanenti.

Puoi verificare con il seguente

netstat -nr

2 - Qui puoi trovare una soluzione più aggiornata con un piccolo programma:

staticroute

Configured static routes survive a restart, and will automatically be added and removed as network interfaces go up and down.

    
risposta data 19.11.2014 - 21:46
fonte

Leggi altre domande sui tag