Instradamento WIFI e LAN per traffico specifico


12

Ho due dispositivi di rete a bordo del mio macbook pro:

  1. WIFI (en1): utilizzato per il traffico generale. Si collega a un IP del 192.168.19. * Tramite DHCP
  2. LAN (en0): utilizzato per traffico specifico. Si collega a un IP di 192.168.2.10 come IP statico. Non si collega a un router, solo uno switch per la connessione di routing diretto .

Ho 4 indirizzi IP a cui devo accedere sulla LAN:

  1. 192.168.2.1
  2. 192.168.2.21
  3. 192.168.2.20
  4. 192.168.2.30

Il resto del traffico deve passare al WIFI. Ho provato a configurare una tabella di routing per gli indirizzi IP specifici, ma sono riuscito solo a rovinare la mia rete. Non mi avventuro troppo spesso nel mondo del networking, ma questo è stato l'ultimo comando che ho provato:

sudo route add -host 192.168.2.30 -interface en0

Questo comando ha ucciso la mia capacità di usare il ping. Mi ha detto che il ping non ha potuto allocare memoria (è anche possibile)? Ha anche ucciso il mio accesso wifi. La disconnessione e il rientro hanno risolto il problema. Non mi dispiace davvero rendere permanente questa soluzione, quindi sto bene con un routing temporaneo.

MODIFICARE:

Se al momento ho provato:

sudo route flush
sudo route add default 192.168.19.1

Questo fa funzionare tutto per circa un minuto. Ma dopo un tale minuto "dimentica" il routing verso il WiFi mantenendo il routing LAN (en0). Se scollego e ricollego il cavo LAN (en0), il processo funziona per un altro minuto.

MODIFICA 2:

Questi erano alcuni dei comandi inseriti come richiesta da d34dh0r53.

$ netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            192.168.2.1        UGSc            4        0     en0
default            192.168.19.1       UGScI           0        0     en1
127                127.0.0.1          UCS             0        1     lo0
127.0.0.1          127.0.0.1          UH              5  1429023     lo0
169.254            link#4             UCS             0        0     en0
192.168.2          link#4             UCS             4        0     en0
192.168.2.1        0:27:22:2e:5f:1a   UHLWIi          2        0     en0   1199
192.168.2.10       127.0.0.1          UHS             0        0     lo0
192.168.2.30       90:a2:da:0:f5:63   UHLWIi          1     1433     en0   1191
192.168.2.255      ff:ff:ff:ff:ff:ff  UHLWbI          0        7     en0
192.168.19         link#5             UCS             2        0     en1
192.168.19.1       3e:d0:f8:aa:28:56  UHLWIi          0        2     en1   1192
192.168.19.3       127.0.0.1          UHS             1        0     lo0
192.168.19.255     ff:ff:ff:ff:ff:ff  UHLWbI          0        5     en1

Internet6:
Destination                             Gateway                         Flags         Netif Expire
::1                                     link#1                          UHL             lo0
fe80::%lo0/64                           fe80::1%lo0                     UcI             lo0
fe80::1%lo0                             link#1                          UHLI            lo0
fe80::%en0/64                           link#4                          UCI             en0
fe80::226:4aff:fe00:b68a%en0            0:26:4a:0:b6:8a                 UHLI            lo0
fe80::%en1/64                           link#5                          UCI             en1
fe80::226:bbff:fe03:cbd%en1             0:26:bb:3:c:bd                  UHLI            lo0
ff01::%lo0/32                           fe80::1%lo0                     UmCI            lo0
ff01::%en0/32                           link#4                          UmCI            en0
ff01::%en1/32                           link#5                          UmCI            en1
ff02::%lo0/32                           fe80::1%lo0                     UmCI            lo0
ff02::%en0/32                           link#4                          UmCI            en0
ff02::%en1/32                           link#5                          UmCI            en1
$ traceroute -n 192.168.2.1
traceroute to 192.168.2.1 (192.168.2.1), 64 hops max, 52 byte packets
 1  192.168.2.1  2.499 ms  3.392 ms  3.829 ms
$ traceroute -n google.com
traceroute: unknown host google.com

Il sistema operativo gestisce il routing, non l'hardware.
Ignacio Vazquez-Abrams,

Tutto è 192.168.2.X sulla LAN? Se lo è, ciò rende la soluzione molto più semplice.
LawrenceC,

@ultrasawblade Sì, tutto su quella rete è 192.168.2. *
jakebird451

Risposte:


11

Non è necessario creare manualmente regole di routing per quella configurazione, a condizione che tutti gli indirizzi 192.168.2.x con cui si desidera comunicare siano collegati all'interfaccia con l'indirizzo 192.168.2.x.

  1. Vai a Preferenze di Sistema -> Rete
  2. Seleziona il tuo dispositivo Ethernet, assicurati che "Configura IPv4" sia impostato su "Manualmente", che la tua subnet mask sia impostata su 255.255.255.0 e che la scatola del router sia vuota.

Una volta fatto ciò, netstat -rndovrebbe comunque mostrare le route per entrambe le sottoreti, ma solo una route "link # 4" al posto della route predefinita attraverso 192.168.2.1.

Se non si desidera un percorso predefinito, lasciare vuota la casella del router. Il valore nella casella del router viene utilizzato solo per impostare una route predefinita attraverso questa interfaccia di rete e non viene utilizzato per nient'altro.


Grazie! Questo è stato! Ho installato tutto correttamente tranne nel campo router. Ho inserito l'indirizzo IP 192.168.2.1nel campo del router per abbinare un "router" sul lato lan. Pensavo fosse necessario, ma ora vedo che ha assunto il percorso predefinito per il traffico generale.
jakebird451,

Grazie per questo! Aveva lo stesso problema e ha funzionato perfettamente per me.
BaronVonKaneHoffen,

4

Il problema è che l' en0interfaccia sta aggiungendo una route predefinita che ha la precedenza sulla route predefinita stabilita dall'interfaccia 802.11. Non sono esattamente sicuro del perché, ma è il fatto che BSD preferisce un'interfaccia cablata rispetto a una wireless, oppure preferisce un'interfaccia staticamente configurata rispetto a una configurata dinamicamente. Puoi dire che il en0percorso predefinito è utilizzato dalla Refscolonna; Refsè una metrica che indica il numero corrente di usi attivi del percorso, quindi possiamo vedere che sta ricevendo tutto il traffico.

La soluzione è rimuovere quel percorso, preferibilmente in modo permanente dalla tabella di routing in modo che il traffico destinato a host diversi da quelli sulle reti locali attraversi il gateway predefinito stabilito da DHCP su en1. La prima cosa che vorrei controllare è nel pannello di configurazione per en0assicurarmi di non aver inserito nulla nel routercampo. Le informazioni in quel campo vengono aggiunte come gateway predefinito. Se il problema persiste, è necessario eliminare manualmente il percorso, la ragione per cui route flushnon funziona è che credo che indichi a OS X di ricaricare le informazioni di instradamento dai file di configurazione dell'interfaccia, annullando quindi la modifica dopo breve tempo. Il comando seguente dovrebbe rimuovere la route predefinita peren0 interfaccia fino al riavvio della rete o al sistema IPLed:

sudo route delete -net 0.0.0.0 192.168.2.1

Se vuoi rendere permanente questa modifica puoi a) creare un servizio in /Library/StartupItemscui mi sembra troppo lavoro oppure b) aggiungere quella linea /etc/rc.localcon un comando come:

echo 'route delete -net 0.0.0.0 192.168.2.1' >> /etc/rc.local

Potrebbe essere necessario aggiungere un sleep <number_of_seconds>comando prima di quella riga /etc/rc.localper evitare di eseguire il comando prima che le interfacce siano completamente attive e stabilita la tabella di routing.

Spero che questo aiuti e buona fortuna!


Grazie per la tua lunga risposta. Il percorso predefinito è 192.168.2.1stato il problema, ma @rakslice ha riscontrato che ho commesso un errore durante l'immissione delle informazioni di instradamento per la connessione en0. Ho messo l'indirizzo IP 192.168.2.1nel campo del router nella convinzione che fosse richiesto. Dopo aver rimosso l'ip del router predefinito, ho anche rimosso la route predefinita non valida per 192.168.2.1. Grazie ancora per il tuo aiuto.
jakebird451,

1
Un po 'sconvolto non ho ricevuto la generosità: "La prima cosa che vorrei controllare è nel pannello di configurazione per en0 assicurarmi di non aver inserito nulla nel campo del router. Le informazioni in quel campo vengono aggiunte come gateway predefinito. " Ma alla fine va tutto bene, felice che tu l'abbia fatto funzionare.
d34dh0r53,

0

Vuoi impostare il tuo IP WiFi come gateway predefinito e rimuovere qualsiasi gateway predefinito (o instradare su 0.0.0.0) connesso alla LAN o 192.168.2.0/24.

Questo è ovviamente più semplice se puoi impostare en1 su un IP fisso che funzionerà con il wifi.

Potrebbe essere necessario aggiungere 192.168.2.10 come route alla rete 192.168.2.0/24. Tuttavia, questo dovrebbe essere automatico poiché può dire che 192.168.2.0/24 è direttamente connesso tramite virtuale di ciò che hai assegnato all'interfaccia.

Quindi il traffico diretto a qualsiasi 192.168.2.X uscirà da 192.168.2.10 e il traffico diretto altrove uscirà dall'indirizzo IP del tuo en1.


Ho impostato il mio ordine wifi al top tramite le preferenze del sistema di rete. Ma non sono sicuro di come remove any default gateway connected to the LAN.
jakebird451,

forse sudo route del default 192.168.2.10?, non sai esattamente come farlo su freebsd / mac osx ma dovrebbe essere simile.
LawrenceC,

Il comando su mac è sudo route delete default 192.168.2.10. Il ping è ancora attivo. Tuttavia, blocca l'accesso al traffico wifi escluso l'ip del router.
jakebird451,

Ottieni internet attraverso il tuo wifi, giusto, cioè se non ti connetti tramite LAN e solo Wifi, puoi raggiungere siti esterni come Google, ecc.?
LawrenceC,

Sì, il WiFi è per il traffico generale come google.com (principalmente per l'API di google maps)
jakebird451
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.