Preferência de interface de rede

8

Como o Linux determina qual interface de rede usar quando ambos estão conectados à mesma rede?

Observe que isso não é uma pergunta sobre roteamento. Eu estou familiarizado com como isso funciona. Isto é, se, por exemplo, eu tenho meu laptop conectado ao meu roteador sem fio através da minha placa ethernet e da minha placa sem fio, ou se tenho duas placas ethernet conectadas ao mesmo roteador.

Posso dizer por experiência que, no meu caso, meu laptop parece favorecer a placa ethernet (eth0) sobre a rede sem fio (eth1 - sei que esse não é um nome típico para uma interface sem fio, mas é o que tenho), mas eu era perguntando, como isso decide? Se apenas escolher a interface numerada mais baixa, e se as duas opções forem, por exemplo, eth0 e wlan0?

Edit: @Nils apontou que isso ainda é uma questão de roteamento, e a tabela de roteamento fornece a resposta (veja a resposta dele). Isso ainda deixa minha pergunta original, mas de uma forma diferente. O que determina a ordem das entradas na tabela de roteamento no Linux? Por exemplo, aqui está minha tabela de roteamento enquanto conectado a ambas as interfaces:

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

É claro que eth0 é uma prioridade mais alta na tabela que eth1 para destinos na rede local, mas isso é decidido no Linux pela latência do link, taxa de transferência do link, até o nome da interface ou o quê? (A mesma pergunta pode ser explicada por que eth0 é a interface para a rota padrão.)

Dominick Pastore
fonte

Respostas:

6

Bem - essa é uma pergunta de roteamento.

A resposta é simples: a primeira entrada que fornecerá a melhor entrada de roteamento é "o vencedor". Então, netstat -rnveja qual interface é a primeira.

Atualização: as configurações de rede-inferface-roteamento normalmente são configuradas durante a inicialização do sistema. Portanto, a ordem de inicialização dos dispositivos de rede será a ordem nessa tabela. Com dispositivos PCI, esses normalmente estão sendo processados ​​pelo menor número de slot primeiro. Dispositivos externos (por exemplo, USB) normalmente vêm mais tarde.

Mas a ordem exata depende do script de inicialização da rede do seu sabor Linux (isso é algo em que eles diferem muito).

BTW: Se você deseja fazer uso de seus dois links, deve optar por criar um vínculo . Lá você pode configurar a ordem de uso dos seus links.

Nils
fonte
1
Isso faz sentido. Quando eu disse roteamento, o que eu quis dizer foi que não era simplesmente uma questão de escolher qual interface está conectada à rede de destino (direta ou indiretamente), pois ambas são. Eu deveria ter sido mais cuidadoso com minha terminologia. Obrigado pelas dicas úteis (especialmente sobre colagem). Isso ainda deixa minha pergunta original, porém, de uma forma ligeiramente diferente. Como é determinada a ordem das entradas de roteamento no Linux (editei a pergunta original)?
Dominick Pastore
@ Dominick Atualizei minha resposta de acordo. Qual distribuição e qual versão principal você está usando?
Nils
Ah Eu não sabia que poderia variar muito entre distribuições. Procurei informações sobre tudo isso, mas tudo o que encontrei foram artigos sobre como definir entradas de roteamento, não como as originais são determinadas. Estou usando o Xubuntu 12.04. Isso levanta outra questão (embora pequena; eu me sinto muito esclarecido com a sua resposta :-)). Se eu estiver conectado via conexão sem fio (eth1) e depois conectar via Ethernet (eth0), a rota padrão e as entradas principais na tabela de roteamento voltarão para eth0. Isso parece ir contra a sua resposta. Estou entendendo mal, ou isso é uma idiossincrasia do NetworkManager, ou o quê?
Dominick Pastore
@Dominick Ubuntu é muito especial. Ele faz algumas coisas mágicas em segundo plano ao conectar / desconectar dispositivos de rede. Eu acho que reinicia toda a pilha de rede lá. (Eu uso normalmente SLES / RH e não sou muito profundamente no Ubuntu)
Nils
-3

Não para ofendê-lo, mas se você estiver familiarizado com a parte de roteamento da sua pilha de comunicações TCP / IP em qualquer máquina Linux, também deve saber que os resultados da conexão de duas interfaces de rede à mesma rede são imprevisíveis na melhor das hipóteses. Se eu fosse você, desabilitaria a ifconfig eth0 downconexão sem fio no meu laptop ou executaria um comando (assumindo que eth0 é sua conexão Ethernet com fio) para desligá-la. O Linux pode ter alguma inteligência para fazer a mesma seleção para cada pacote, mas no caso de um soluço de rede em algum momento, pode resultar em resultados inesperados. Meus 2 centavos.

MelBurslan
fonte
1
Não é imprevisível. O primeiro hit na tabela de roteamento é usado como explicado por @Nils.
gertvdijk