o que acontece quando você tem 2 interfaces de rede para a mesma rede em um sistema operacional Unix / Linux?

2

O que acontecerá se você tiver duas interfaces de rede na mesma rede em que o gateway / roteador padrão está?

por exemplo

  • interface de rede e1000g0 - 192.168.1.50
  • interface de rede e1000g1 - 192.168.1.51
  • Gateway - 192.168.1.1

Se eu enviar um pacote para 8.8.8.8 , qual interface de rede será usada? Eu estou usando uma caixa do Solaris 10. Mas suponha que essa questão seja para toda implementação geral do unix / linux

Na minha tabela de roteamento, parece que e1000g1 é escolhido como UG, mas por que / como ele é escolhido?

    
por Noob 08.11.2015 / 19:32

3 respostas

3

No Linux e no Unix, só pode haver um gateway por tabela de roteamento. No Linux, você pode ter várias tabelas de roteamento, mas cada uma possui um único gateway.

No Linux, ele é identificado da seguinte forma:

    > ip route show
      default via 192.168.73.1 dev eth0  proto static 
      192.168.73.0/24 dev eth0  proto kernel  scope link  src 192.168.73.75  metric 1 

A linha chave é aquela que começa com default , ela afirma que (meu) gateway é 192.168.73.1 . Você muda isso da seguinte forma:

     > ip route del default
     > ip route add default via 192.168.73.1 dev eth0

Se eu tiver mais de uma interface conectada, minha tabela de roteamento será semelhante a:

     > ip route show
       default via 192.168.73.1 dev eth0  proto static 
       192.168.73.0/24 dev eth0  proto kernel  scope link  src 192.168.73.75  metric 1 
       192.168.73.0/24 dev wlan0  proto kernel  scope link  src 192.168.73.66  metric 9 

Como você pode ver, o tráfego local pode passar por eth0 ou wlan0 , mas, graças ao menor valor metric (1 vs. 9), será encaminhado através de eth0 .

O tráfego da WAN irá certamente percorrer eth0 porque o gateway padrão está em dev eth0 .

Estes valores são automaticamente mantidos pelo seu network manager , o que favorece, por padrão, o cabo através de conexões wi-fi. Você pode, no entanto, substituir sua escolha por meio de comandos semelhantes aos anteriores,

       > ip route delete default
       > ip route add default via 192.168.73.1 dev wlan0

Se você tiver várias interfaces do mesmo tipo ( por exemplo, várias conexões ethernet), a prioridade vai para a interface que foi conectada primeiro.

O gateway padrão é identificado, por assim dizer, pela própria rede: é um dos parâmetros que são passados para a sua máquina quando uma transição DHCP é negociada (os outros são netmask, rede, endereço de broadcast). Você não tem conhecimento disso porque o processo de DHCP é tratado por você pelo network-manager . Ocasionalmente, você pode querer configurar um endereço IP estático, o qual não usa o DHCP; Nesse caso, você precisará fornecer os quatro parâmetros mencionados acima. Existem técnicas para aprender esses parâmetros, mesmo em redes totalmente novas para você, mas normalmente você configurará um endereço estático apenas em LANs que você já conheça bem.

Além das suas rotas LAN e gateway padrão, você pode ter rotas específicas através de qualquer uma das interfaces. Nesse caso, a ordem de prioridade das rotas é determinada com base no princípio rotas mais específicas primeiro . Suponha que você tenha uma rota para 1.1.1.0/24 thru wlan0 . Então, quando precisamos rotear pacotes para, digamos, 1.1.1.1 , ambas as regras (através de wlan0) e a regra padrão (através de eth0) se aplicam, mas a primeira é mais específica, portanto esses pacotes passarão por wlan0 . Nesse caso, o gateway dafult se torna a rota quando tudo mais falha, ou seja, quando nenhuma outra rota se aplica.

No Linux, você pode ter várias tabelas de roteamento, isso é chamado de policy or source routing . Neste caso, você também precisará de uma regra para o kernel discriminar quando aplicar as múltiplas tabelas de roteamento à sua disposição. Você encontra uma breve introdução ao roteamento de políticas aqui . Neste caso, os comandos acima permanecem idênticos, exceto que eles são seguidos pelo nome da tabela de roteamento na qual você deseja trabalhar, por exemplo:

       > ip route show table main
       > ip route show table MyOtherRoutingTable

Você encontrará muitas vezes referências a comandos como netstat, route, ifconfig. No Linux (mas não no Unix, leia o primeiro comentário abaixo) eles estão obsoletos . O comando atual, ip do conjunto iproute2 , substitui todos eles e mais alguns. Ao pesquisar linux ip cheat sheet , você pode encontrar sites comparando as capacidades de ip e utilitários anteriores.

Editar

No Unix, os comandos acima seriam: você consulta a tabela de roteamento como

   >  netstat -rn -f inet
      Routing tables

      Internet:
      Destination        Gateway            Flags        Refs      Use   Netif Expire
      default            192.168.11.1       UGSc           10        0     en0
      127                127.0.0.1          UCS             0        0     lo0
      127.0.0.1          127.0.0.1          UH              2   161444     lo0
      169.254            link#4             UCS             1        0     en0
      169.254.10.9       10:c3:7b:9d:c8:78  UHLSW           0        0     en0
      192.168.11         link#4             UCS             4        0     en0
      192.168.11.1       10:6f:3f:25:c6:33  UHLWIir        11     4589     en0   1162
      192.168.11.56      88:53:2e:10:77:5f  UHLWI           0        0     en0   1187
      192.168.11.65      2:f:b5:70:5b:22    UHLWI           0        0     en0   1081
      192.168.11.67      127.0.0.1          UHS             0        0     lo0
      192.168.11.113     6:20:3e:52:16:4d   UHLWIi          2      278     en0   1188

Aqui, o gateway é identificado pela palavra-chave default e pelo sinalizador G .

Você altera o gateway padrão como:

   > route delete default
   > route add default 192.168.0.1
   > route change default -interface enp0s3

Todos os comentários permanecem os mesmos, exceto aqueles sobre policy routing , que não são suportados pelos kernels Unix.

    
por 08.11.2015 / 20:35
1

Ter duas interfaces físicas diferentes ativas na mesma instância do sistema operacional conectada à mesma sub-rede, como e1000g0 e e1000g1, em sua pergunta não é confiável e, explicitamente, não é suportado pelo menos com o Solaris:

Em um sistema cujas várias interfaces se conectam a Na mesma sub-rede, você deve configurar as interfaces em um grupo IPMP primeiro. Caso contrário, o sistema não pode ser um host multihomed.

Como afirmado, uma maneira de ter este trabalho confiável é habilitar o ipmp (IP multipathing). Você também pode desativar o encaminhamento de pacotes e configurar rotas estáticas, como documentado aqui para o Solaris 10.

Como alternativa, você também pode usar a agregação de links de nível mais baixo, a.k.a. bonding de interface na terminologia do Linux.

    
por 09.11.2015 / 09:39
-1

Acho que a mensagem será enviada pela interface configurada na entrada de rota padrão. Provavelmente o último que se tornou.

    
por 08.11.2015 / 20:09