Solução simples de failover WAN do Linux necessária

3

Estou batendo a cabeça contra a parede para encontrar uma solução inteligente e simples para o failover de WAN. Isto é para uma instalação SOHO com dois IPs externos diferentes. Somente o failover de conexão de saída é necessário.

  • Provedor 1: cabo
  • Provedor 2: sem fio

O Firewall é um Debian GNU / Linux, então a solução deve usar Linux e ser baseada em software.

Eu quero ser capaz de não apenas detectar, se um dos roteadores ficar inativo (isso é fácil com o iproute2), mas quando suas conexões caírem. Ambos os roteadores não possuem SNMP ou outros RMON baseados em padrões.

Existe algo como um utilitário ping em que posso especificar a rota padrão a ser usada?

Dessa forma, posso monitorar os dois links de maneira ideal com um script pequeno. Ou devo seguir outro caminho?

    
por Peter Meyer 14.03.2012 / 20:45

3 respostas

3

Isso é um pouco mais complexo, pois suponho que seus roteadores não possam exportar suas rotas de maneira significativa. Se você sentir vontade de pesquisá-lo, lembre-se de que quando você envia um pacote localmente, o endereço IP ainda é o host da extremidade remota e o endereço MAC (na Ethernet, de qualquer forma) é baseado na tabela de rotas do host e no cache de arp. >

Se você derrubar seu software e usar o pacote do kernel chamadas para formar sua mensagem, você pode escrever esse pacote IP com o endereço MAC de sua escolha. O pacote irá então usar o roteador de sua escolha como o primeiro salto. Use isso para executar ping e monitorar respostas e você poderá testar a conectividade sem alterar as configurações do sistema.

Claro, você precisará de algumas permissões elevadas em seu programa para conseguir isso.

Caso contrário, entradas de tabela de roteamento de endereço único forçadas sugeridas pelo Evan permitirão que você fique de fora de escrever coisas que invocam o kernel. Para qualquer método em que os roteadores não são cúmplices, você precisa estar na DMZ, caso contrário você não pode escolher para onde os pacotes vão, a menos que você de alguma forma acabe com roteamento de origem ativado.

    
por 14.03.2012 / 21:52
5

As rotas do host para endereços IP "canários" são o que você procura.

Escolha um endereço IP no lado mais distante de cada roteador a ser usado como o "canário" para monitorar com PING (ou HTTP GET, ou qualquer métrica de falha que você queira usar). Adicione uma rota estática com uma máscara de rede / 32 no firewall para que o endereço IP "canário" envie o roteador apropriado.

Se eu estivesse monitorando "10.0.0.1" pelo roteador "192.168.178.254", adicionaria a rota com route add 10.0.0.1 gw 192.168.178.254 . Depois de adicionar essa rota, todo o tráfego para 10.0.0.1 seria roteado através do gateway em 192.168.178.254. Se a conexão à Internet no lado oposto de 192.168.178.254 falhar, o tráfego para 10.0.0.1 nunca chegará ao seu destino (nenhum PING retornará, etc).

O uso de rotas do host como essa deve permitir que você escreva um script simples para trocar o gateway padrão no caso de falha de uma das conexões da Internet.

    
por 14.03.2012 / 21:21
0

Se você quiser usar como 'canary' algum cluster de alta disponibilidade (como yahoo.com ou google.com) que usa DNS round-robin e vários IPs (talvez de alguns intervalos), essas rotas de host não são muito útil.

No host Linux, o utilitário 'ping' usual tem dois argumentos úteis:

ping -I <interface> example.com O ping enviará pacotes da interface especificada. Use-o se o seu host tiver uma interface separada para cada conexão.

ping -m <interface> example.com Ping enviará pacotes de saída marcados; O kernel pode usar essas marcas para selecionar a rota de saída. Útil se você acessar os dois canais uplink por meio de uma única interface. Isso requer regras de roteamento IP baseadas em marca, que você provavelmente usará no host multi-wan em qualquer caso (para enviar respostas para solicitações da Internet pelo mesmo link, não por rota padrão). Aqui é muito curto descrição de como fazer esse roteamento.

    
por 03.04.2012 / 14:50