Network Manager: failover entre dois gateways padrão

5

O Network Manager é capaz de verificar se um gateway padrão pode rotear pacotes para a Internet?

Eu tenho duas interfaces, ambas fornecem uma rota para a internet.

Quando eu desconecto um cabo de qualquer um deles, o gateway padrão está sendo atualizado e minha conexão com a internet funciona. Mas se o atual gateway preferencial falhar sem romper um link físico, o sistema não passará para o segundo.

Eu tentei definir uma métrica mais alta para um GW com falha manualmente, mas funcionou, mas é um passo manual que eu quero evitar.

Este problema pode ser resolvido usando o Network Manager?

Minha configuração: Ubuntu 16.04, NM 1.2.2

UPD

O membro da comunidade no canal irc da NM respondeu que o NM não verifica se um gateway realmente funciona e não executa nenhuma comutação GW.

VRRP / ucarp / heartbeat / keepalived também não verifica. Eles apenas verificam a disponibilidade da rede e trocam os GWs upstream por uma interface virtual. Isso não ajuda no meu caso.

O nexthop de Iproute funciona, mas com uma enorme latência. As rotas estão sendo armazenadas em cache pelo kernel e até mesmo depois de ip route flush cache Demorou cerca de 10 minutos para o sistema fazer o failover para o segundo GW.

ip route replace default scope global \
  nexthop via 11.22.33.1 dev eth0 weight 1 \
  nexthop via 55.66.77.1 dev eth1 weight 1

Minha solução atual: um script de shell que verifica se o gw padrão atual fornece acesso à internet; se não - aumenta a métrica do GW atual e o sistema efetua failover para o segundo com uma métrica mais baixa.

Ainda espero encontrar uma solução mais elegante.

    
por Volodymyr Linevych 20.12.2016 / 10:39

2 respostas

1

É para isso que o BGP foi feito. Usando o que é comumente referido como iBGP para intercomunicação de roteador interno e redundância de caminho e / ou eBGP para redundância de caminho completo no nível da Internet. O BGP descreve um protocolo para os roteadores se comunicarem entre si com os dados analíticos necessários para fazer julgamentos sobre a natureza dos caminhos de tráfego válidos e funcionais dentro de um sistema autônomo.

Não vejo ninguém fazendo isso com o NetworkManager como uma ferramenta de configuração de tempo de execução para esse grau de roteamento. O NM teve problemas históricos ao não escalar bem ao usar muitas rotas, e há um software muito melhor projetado para fazer o que você quer.

A maioria dos roteadores comerciais terá a funcionalidade BGP, então você pode obtê-lo "enlatado". Eu normalmente uso pfSense ou VyOS se estou indo para um "roteador de software" como ambos virtualizar bem. O VyOS ainda mantém imagens LXD, então eu normalmente uso isso. Você também pode usar o BGP na maioria das distribuições Linux manualmente com os pacotes openbgbpd ou quagga.

Muitas soluções SDN usam BGP para fornecer redundância e balanceamento de rede em vez de sistemas como MLAG, já que muitas implementações de MLAG em switches e roteadores ethernet têm sido historicamente muito específicas ou não operam como esperado, especialmente quando se usa hardware não compatível. Em vez de se preocupar com drivers de controle para cada switch lá fora, a SDN geralmente é direcionada para operar acima da camada 2 para essas soluções de redundância de vários nós, mesmo dentro de uma rede interna.

    
por 15.03.2018 / 03:42
0

Eu acho que existem várias possibilidades: a melhor / moderna maneira é usar o iproute2 "tabelas"; Eu ainda não estalei completamente, mas é descrito aqui: link Infelizmente, esse exemplo faz mais do que o que você pede, e isso confundiu a questão. Mas acredito que algo assim pode funcionar:

ip route show table main

ip route add default via 10.70.1.1 dev eth0 table 100

ip route add default via 10.70.70.1 dev eth0 table 101

Opcionalmente, edite /etc/iproute2/rt_tables e adicione duas linhas

100 myfavgw

101 myothergw

e, em seguida, você pode se referir a eles pelo nome:

ip route add default via 10.70.70.1 dev eth0 table myothergw

e assim por diante. Alguns ajustes adicionais podem ser necessários .. mas o acima parece ser um começo promissor; Eu não posso testar, porque um dos meus dois gateways acabou de descer: - (

O método dois parece depender da tecnologia olde: Este artigo de 2005 sugere que, se você tiver duas placas de rede, você pode especificar um gateway padrão diferente para cada: Então - pensando em voz alta - se você não tem duas placas de rede, existe uma maneira (eu esqueci como) criar uma segunda interface virtual, e use a mesma placa ethernet. (Fazer isso foi tão fácil quanto carregar um módulo do kernel, e funcionou muito bem) Se ainda é possível especificar um gw padrão diferente para cada interface, essa segunda abordagem seria uma solução oled-skool para o problema.

A terceira solução é a feia: como você aponta, é possível executar um script de shell a cada minuto, para verificar. Tal script está aqui: rapellys.biz /? P = 59

    
por 24.01.2017 / 07:39