linux ip routing: 2 gateways padrão

1

Estou usando o Raspbian mais recente e tenho meu dispositivo conectado a duas LANs, cada uma com um gateway para a Internet. (O dispositivo está conectado a uma LAN por um cabo ethernet e à outra por USB - um telefone celular com conexão USB).

Parece que apenas funciona fora da caixa, porque consigo acessar a intenet e porque a tabela de roteamento foi configurada assim automaticamente depois de conectar os cabos:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.0.1     0.0.0.0         UG    202    0        0 eth0
default         192.168.42.129  0.0.0.0         UG    205    0        0 usb0

No entanto, gostaria de saber se o dispositivo ainda seria capaz de acessar a Internet se o gateway em uma das LANs quebrasse aleatoriamente? Eu tenho o pacote iproute2 instalado, mas não sei nada sobre como funciona, e realmente não encontrou uma boa resposta na internet. Obrigado.

    
por snoopy 20.12.2017 / 21:15

2 respostas

2

você tem duas métricas. 202 será o usado para direcionar o tráfego. 205 será em caso de falha. Você tem FLAGS UG: Up & Gateway Se o U desaparecer, significa que seu gateway está inativo. Ele ficará inativo se o suco entre o raspador e o roteador ou qualquer coisa no meio quebrar. Se o roteador estiver com bugs, ou se a linha de Internet dele estiver inativa, o tráfego será encaminhado para um beco sem saída.

Se você quiser evitar esse cenário e não for um protocolo de roteamento dinâmico, precisará criar uma estratégia de SLA.

Por exemplo: um script com "ping -I usb0" para o Google e outro com -I eth0 para o Google também. Se o que tiver métricas mais baixas estiver em alta e não conseguir entrar em contato com o Google, altere sua métrica ou feche-a drasticamente. (métricas: ip route adiciona $ {address} / $ {mask} via $ {gateway} métrica $ {number}).

Se você alterar a métrica, ainda poderá tentar o ping e restaurar a conexão quando o ping for satisfatório.

Use um ping muito lento e deixe que ele tenha 3 ou 4 falhas antes da transição.

Isso não é um problema para o seu problema, mas é um cenário legal para criar alguns scripts legais e fáceis :):).

    
por 21.12.2017 / 11:31
2

Seus gateways têm uma métrica diferente, portanto, mesmo que você tenha duas rotas padrão, você só usará uma delas. Isso é bom, porque os protocolos habituais da Internet (TCP, UDP) não são multi-homed : você não pode usá-los para formar uma única conexão usando vários endereços IP locais e / ou remotos, enquanto roteamento em caminhos diferentes.

Assim, você não pode realmente usar duas conexões de internet de uma só vez, a menos que você faça algum tipo de balanceamento de carga, usando critérios estáticos. O que não é trivial para configurar.

Quanto ao que acontece se um gateway "quebrar aleatoriamente", isso depende de como ele quebra, e como seu RaspPi detecta a quebra: Se uma interface vai para o estado inativo, eu acho (mas não testei) use a outra rota padrão. Se o próprio gateway "quebrar" (por exemplo, perder a conexão com a Internet), mas a conexão com o RaspPi estiver correta, o RaspPi continuará feliz em usar esse gateway, quebrando a conexão com a Internet para o RaspPi também.

    
por 21.12.2017 / 10:06