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.)
fonte
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 down
conexã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.fonte