É possível executar ping em 8.8.8.8 a partir de duas interfaces conectadas a diferentes WANs

1

Vou começar explicando a situação. Eu comecei meu projeto usando um raspberry Pi 2 modelo B e instalei o Fedora Arm nele. Meu objetivo atual é conectar o pi à internet por meio de um cabo ethernet conectado a um roteador DSL, além de um dongle usb 3G, de maneira que eu possa configurar um mecanismo de failover. Para fazer isso eu descobri que preciso fazer um script que verifique se a eth0 (conexão ethernet) está funcionando, emitindo ping 8.8.8.8 -I eth0 , se não estiver funcionando, posso alternar para a conexão 3G, desativando a eth0 e ativando eth1 ( Dongle 3G).

Tudo estava bem e é aqui que um problema apareceu, eu queria voltar para a Ethernet assim que voltasse, mas tive que fazer isso enquanto minha conexão 3G estava em execução (a emissão de ping 8.8.8.8 -I eth0 não estava funcionando nem pensei que eu trouxe eth0) Eu tive que derrubar a eth1 para poder verificar se a conexão com a internet está de volta na eth0. Eu percebi que, quando eu tenho as duas interfaces, apenas uma está ativa de cada vez e não consigo fazer ping na internet usando as duas ping 8.8.8.8 -I eth0' and 'ping 8.8.8.8 -I eth1 ao mesmo tempo. minha pergunta é:

É possível fazer ping através das duas interfaces enquanto as duas estão ativas?

Se sim, então como?

Se não, então eu apreciaria qualquer diretiva sobre o que estou tentando alcançar.

    
por Ezwig 19.07.2016 / 15:39

1 resposta

1

Aparentemente, o problema é que, por padrão, você só pode ter um gateway padrão em um sistema. O caso descrito levaria a um roteamento assíncrono.

Solução

O programa iproute2, que é incluído em todas as distribuições atuais do Linux e já instalado, como regra, pode ser usado para a solução deste problema. Normalmente, um sistema Linux tem apenas uma tabela de roteamento, na qual apenas um gateway padrão pode fazer entradas. Com o iproute2, você tem a capacidade de configurar uma tabela de roteamento adicional, por um lado, e permitir que essa tabela seja usada pelo sistema com base em regras, por outro. Posição Inicial

Vamos supor que temos duas interfaces: eth0 e eth1. As duas redes que devem ser usadas são 192.168.0.0/24 e 10.10.0.0/24, sendo que o primeiro endereço IP em cada rede deve ser o gateway. A configuração inicial apareceria da seguinte maneira. / etc / network / interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface

auto lo
iface lo inet loopback

# The primary network interface

allow-hotplug eth0
iface eth0 inet static
    address 192.168.0.10
    netmask 255.255.255.0
    gateway 192.168.0.1

# The secondary network interface
allow-hotplug eth1
iface eth1 inet static
    address 10.10.0.10
    netmask 255.255.255.0

Adicionando uma segunda tabela de roteamento

Para adicionar uma nova tabela de roteamento, o arquivo / etc / iproute2 / rt_tables deve ser editado. Vamos chamar a tabela de roteamento “rt2” e definir sua preferência para 1. O arquivo nomeado deve então aparecer da seguinte forma.

#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
1 rt2

Configurando a nova tabela de roteamento

A partir deste ponto, quatro comandos são necessários para atingir nosso objetivo. Primeiro, a nova tabela de roteamento precisa ser preenchida, o que é feito usando o seguinte comando.

ip route add 10.10.0.0/24 dev eth1 src 10.10.0.10 table rt2
ip route add default via 10.10.0.1 dev eth1 table rt2

O primeiro comando diz que a rede, 10.10.0.0/24, pode ser acessada através da interface eth1. O segundo comando define o gateway padrão. Regras de roteamento

Para que o sistema saiba quando usar nossa nova tabela de roteamento, duas regras devem ser configuradas.

ip rule add from 10.10.0.10/32 table rt2
ip rule add to 10.10.0.10/32 table rt2

Essas regras dizem que o tráfego do endereço IP, 10.10.0.10, bem como o tráfego direcionado para ou por meio desse endereço IP, deve usar a tabela de roteamento rt2.

    
por 19.07.2016 / 18:45

Tags