2012-08-24 14 views
14

Ho un PC con due interfacce di rete: eth0 e eth1.Come fa il sistema operativo a sapere quale interfaccia di rete utilizzare per Internet?

eth0 - Ha un indirizzo IP 192.168.11.X/24.

eth1 - Ha un IP 192.168.130.X/24. eth1 ha connettività internet.

Come fa il mio sistema operativo a sapere quale interfaccia utilizzare quando provo a connettermi a Internet? Funziona su tutti i gateway predefiniti? Ha una cache di ciò che fornisce ogni interfaccia? C'è qualche differenza nel comportamento tra Windows e Linux?

risposta

13

ho intenzione di rispondere per il lato Linux della casa (almeno per i sistemi basati su Debian, come Ubuntu, dal momento che è più comune per gli utenti a questo punto):

Digitare quanto segue in un riga di comando:

route -n 

Si dovrebbe vedere il "tabella di routing" appaiono, con qualcosa come il seguente:

Destination Gateway   Genmask   ... Iface 
0.0.0.0  192.168.11.254 0.0.0.0   ... eth0 
169.254.0.0 0.0.0.0   255.255.0.0  ... eth0 
192.168.11.0 0.0.0.0   255.255.255.0 ... eth0 
192.168.130.0 0.0.0.0   255.255.255.0 ... eth1 

ho omesso un paio di colonne, ma in fondo, la linea che dice "0.0.0.0" sotto "Destinazione" è la linea che determina dove si trova la tua rotta predefinita. In altre parole, dove tutto il traffico va che non è destinato a nessuna delle altre sottoreti nelle altre linee (google.com, facebook.com, qualunque cosa).

Se non è giusto (come nella tabella precedente, dove "eth1" è la carta che si desidera con accesso a Internet), è necessario modificare il percorso di default:

sudo route del default 
sudo route add default gw 192.168.130.254 netmask 255.255.255.0 

che risolverà tutto per ora . Per renderlo permanente, modificare il file interfacce:

sudo gedit /etc/network/interfaces 

Modifica a guardare qualcosa di simile alla seguente (cambio se necessario per la vostra situazione specifica):

auto eth0 
iface eth0 inet dhcp 
up route del default 

auto eth1 
iface eth1 inet dhcp 
up route add default gw 192.168.130.254 netmask 255.255.255.0 

quindi riavviare rete per vedere se che ha fatto il trucco:

sudo /etc/init.d/networking restart 
2

La funzione che stai chiedendo è una tabella di routing, una lista di destinazioni note all'host.

Quando il sistema operativo deve inoltrare un pacchetto, controlla questo elenco e sceglie quello più appropriato (da destinazioni specifiche a destinazioni generali). Per esempio:

192.0.2.0/28 - 192.0.2.1 via eth1 
198.51.100.0/27 - 198.51.100.1 via eth0 
0.0.0.0/0  - 203.0.113.1 via eth0 

Nota l'ultima destinazione: sarà adattarsi a qualsiasi indirizzo IPv4.

+0

Ma cosa succede la prima volta che il PC è acceso e tenta di connettersi a Internet? Non ha idea di quale eth fornisca l'accesso a Internet. Esegue iterazioni sulle interfacce e in caso di successo inserisce le informazioni nella tabella di instradamento? Grazie. –

+1

@UriH Si aspetta qualche forma di configurazione dall'utente o da un protocollo di routing. Non tenta in modo casuale di instradare i pacchetti. – cnicutar

+0

Grazie, ho verificato che rimuovendo la route predefinita e riavviando eth1, ho visto che la route predefinita è stata aggiunta, presumo a causa della richiesta DHCP che conteneva opzioni del router. –