Preferenza dell'interfaccia di rete


8

In che modo Linux determina quale interfaccia di rete utilizzare, quando entrambe sono connesse alla stessa rete?

Nota che questa non è una domanda sul routing. Conosco bene come funziona. Questo, se, per esempio, ho il mio laptop collegato al mio router wireless attraverso sia la mia scheda ethernet che la mia scheda wireless, o se ho due schede ethernet entrambe collegate allo stesso router.

Posso dire per esperienza che nel mio caso il mio laptop sembra favorire la scheda ethernet (eth0) tramite wireless (eth1 - so che non è un nome tipico per un'interfaccia wireless, ma è quello che ho), ma ero chiedendosi, come lo decide? Se prende solo dall'interfaccia con il numero più basso, cosa succede se le due scelte sono, diciamo, eth0 e wlan0?

Modifica: @Nils ha sottolineato che questa è ancora una questione di routing e la tabella di routing fornisce la risposta (vedi la sua risposta). Questo lascia ancora la mia domanda originale, ma in una forma diversa. Cosa determina l'ordine delle voci nella tabella di routing in Linux? Ad esempio, ecco la mia tabella di routing mentre sono connesso a entrambe le interfacce:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.4.1     0.0.0.0         UG        0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
192.168.4.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.4.0     0.0.0.0         255.255.255.0   U         0 0          0 eth1

È chiaro che eth0 ha una priorità maggiore nella tabella rispetto a eth1 per le destinazioni nella rete locale, ma è deciso in Linux dalla latenza del collegamento, dalla velocità effettiva del collegamento, persino dal nome dell'interfaccia o cosa? (La stessa domanda potrebbe essere per il motivo per cui eth0 è l'interfaccia per la route predefinita.)

Risposte:


6

Bene, questa è una domanda di routing.

La risposta è semplice: la prima voce che fornirà la migliore voce di routing è "il vincitore". Quindi guarda netstat -rnper vedere quale interfaccia è la prima.

Aggiornamento: le impostazioni network-inferface-routing normalmente vengono configurate all'avvio del sistema. Quindi l'ordine di avvio dei dispositivi di rete sarà l'ordine in quella tabella. Con i dispositivi PCI, questi vengono normalmente elaborati per primi dal numero di slot più basso. I dispositivi esterni (ad es. USB) vengono normalmente più tardi.

Ma l'ordine esatto dipende dallo script di avvio di rete del tuo sapore Linux (questo è qualcosa in cui differiscono molto).

BTW: Se vuoi usare i tuoi due link, dovresti andare per il legame . Lì puoi impostare l'ordine di utilizzo dei tuoi link.


1
Questo ha senso. Quando ho detto il routing, intendevo semplicemente che non era una questione di scegliere quale interfaccia è connessa alla rete di destinazione (direttamente o indirettamente), dal momento che entrambi lo sono. Avrei dovuto essere più attento con la mia terminologia. Grazie per i suggerimenti utili (in particolare sul legame). Questo lascia comunque la mia domanda originale, in una forma leggermente diversa. Come viene determinato l'ordine delle voci di routing in Linux (ho modificato la domanda originale)?
Dominick Pastore,

@Dominick Ho aggiornato la mia risposta di conseguenza. Quale distribuzione e quale versione principale stai usando?
Nils,

Ah. Non mi ero reso conto che potesse variare così tanto tra le distribuzioni. Ho cercato dappertutto informazioni su questo, ma ho trovato solo articoli su come impostare le voci di routing, non su come sono determinati quelli originali. Sto usando Xubuntu 12.04. Questo solleva un'altra domanda (piccola però; mi sento molto illuminato dalla tua risposta :-)). Se sono connesso tramite wireless (eth1) e successivamente tramite Ethernet (eth0), il percorso predefinito e le voci principali nella tabella di routing tornano a eth0. Questo sembra andare contro la tua risposta. Sono frainteso, o è idiosincrasia di NetworkManager o cosa?
Dominick Pastore il

@Dominick Ubuntu è molto speciale. Fa alcune cose magiche in background quando si collegano / scollegano i dispositivi di rete. Immagino che riavvii l'intero stack di rete lì. (Di solito uso SLES / RH e non sono molto interessato a Ubuntu)
Nils

-3

Non per offenderti, ma se hai familiarità con la parte di routing del tuo stack di comunicazioni TCP / IP su qualsiasi macchina linux, dovresti anche sapere che, i risultati della connessione di due interfacce di rete alla stessa rete, sono imprevedibili nella migliore delle ipotesi. Se fossi in te, disabiliterei il wireless sul mio laptop o esegui un ifconfig eth0 downcomando (supponendo che eth0 sia la tua connessione ethernet cablata) per spegnerlo. Linux potrebbe avere un po 'di intelligenza per fare la stessa selezione per ogni pacchetto, ma in caso di un singhiozzo di rete a un certo punto, si potrebbero ottenere risultati inaspettati. I miei 2 centesimi.


1
Non è imprevedibile. Il primo hit nella tabella di routing viene utilizzato come spiegato da @Nils.
gertvdijk,
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.