Eu não gosto de pegar as coisas prontas na Internet. Devem ter milhares de scripts que fazem redundância de links por aí, mas eu gosto de criar os meus. No máximo busco informações sobre comandos ou coisas do tipo. Esse script foi criado a partir da necessidade de haver redundância entre os links dedicados que interligam as unidades da empresa em que eu trabalho. Sei que existem muitas formas de se fazer isso, talvez até mais fáceis, mas essa foi a minha maneira.
Esse script trabalha o shell e o "awk", e utiliza basicamente os comandos ping e route para controlar os links. Ele captura a rota padrão atual e compara com a variável do gw primário, se ambos forem idênticos, então ele testa os ips de teste pre definidos no próprio script.
Caso haja resposta do primeiro ip de teste, ele simplesmente não faz mais nada. Caso não haja, ele faz o teste com o segundo ip. Se esse também não responder, ele troca o gateway padrão para o gateway secundário, conforme é demonstrado no função "GATEWAY()", e gera uma saída para o arquivo "gateway.log". Além de trocar o gateway padrão, ele troca todas as rotas que saem pelo gateway primário para saírem pelo gateway secundário e vice-versa.
Se no momento da comparação do gateway atual com o gateway primário eles não forem idênticos, então ele vai comparar o gateway atual com o secundário e o processo continua o mesmo. Daí é necessário agendar a execução do script para que a verificação seja contínua e automatizada.
Changelog: Testa agora apenas o link principal, caso não esteja respondendo ele muda para o segundo. Quando o link principal volta a responder, o script volta para ele.
Changelog: Nessa versão, o script testa apenas o link principal, se ele não estiver ativo a troca é feita. Quando o link principal voltar, o script troca novamente para ele.
[1] Comentário enviado por Neo_X em 08/01/2013 - 12:22h
Olá Rodrigo, tudo bem? Muito bom o artigo, estou seguindo-o e queria saber se o arquivo /etc/network/rotas.sh é criado automático ou tem que ser manual?
Rodei o exec. /redundancia2.sh:
Output from command /etc/redundancia/redundancia2.sh ..
/etc/redundancia/redundancia2.sh: line 37: /etc/network/rotas.sh: No such file or directory
/etc/redundancia/redundancia2.sh: line 38: /etc/network/rotas.sh: No such file or directory
/etc/redundancia/redundancia2.sh: line 39: /etc/network/rotas.sh: No such file or directory
[2] Comentário enviado por r.garcia em 09/01/2013 - 08:54h
[1] Comentário enviado por pedrophsp em 08/01/2013 - 12:22h:
Olá Rodrigo, tudo bem? Muito bom o artigo, estou seguindo-o e queria saber se o arquivo /etc/network/rotas.sh é criado automático ou tem que ser manual?
Rodei o exec. /redundancia2.sh:
Output from command /etc/redundancia/redundancia2.sh ..
/etc/redundancia/redundancia2.sh: line 37: /etc/network/rotas.sh: No such file or directory
/etc/redundancia/redundancia2.sh: line 38: /etc/network/rotas.sh: No such file or directory
/etc/redundancia/redundancia2.sh: line 39: /etc/network/rotas.sh: No such file or directory
Utilizo o CentOS 5.8
O arquivo /etc/network/rotas.sh é criado automaticamente e sobrescrito sempre que o script é executado. No CentOS não existe o diretório /etc/network, pois ele utiliza outra estrutura de diretórios. Você pode alterar o script nas linhas 38 e 39 para ao invés de criar o rotas.sh no diretório original, ele ser criado em um diretório de sua preferência (esse é o espirito Free Software e Open Source).
Estarei enviando em breve uma nova versão que testa sempre o link principal, que se estiver fora ele faz a troca para o secundário. Após a troca ele continua pingando o principal, qe quando voltar, ele troca novamente.
[5] Comentário enviado por Neo_X em 05/02/2013 - 17:47h
Muito bom o script, porém como eu tenho dois links (Telefonica e ALGAR). Quando o link da ALGAR - Rede Secundária Ativada - todos os acessos de clientes da Telefônica não conseguem acessam meu firewall.
Se o link fica na Rede Primária, todos conseguem acessar ou pingar os IPs da Telefonica que estão no meu firewall, menos os IPs da ALGAR, a interface não responde.
Se o link fica na Rede Secundária, todos acessam os IPs da ALGAR, inclusive da Telefonica, porém clientes que tem link da mesma operadora (Telefonica/Speed) não acessam.
Se puder me ajudar agradeço, estou há 3 dias tentando desvendar isso.
Tue Feb 5 17:06:14 BRST 2013 Rede Primaria Ativada
Tue Feb 5 17:07:04 BRST 2013 Rede Primaria OK
Tue Feb 5 17:12:04 BRST 2013 Rede Primaria OK
Tue Feb 5 17:13:01 BRST 2013 Rede Secundaria Ativada
[8] Comentário enviado por r.garcia em 22/02/2013 - 22:14h
[7] Comentário enviado por luques em 22/02/2013 - 15:36h:
Quando o link Principal voltar, ele volta para o link principal?
Sim, ele testa sempre o link principal por padrão (de acordo com o agendamento no Cron que deve ser feito por você). Quando o principal volta, ele automaticamente chaveia novamente para o principal.
[11] Comentário enviado por Neo_X em 18/03/2013 - 12:32h
Olá Rodrigo, Sobre a minha dúvida referente a conexão PPoE. Configurei o modem para discar automático e coloquei um IP na LAN - 192.168.0.100. Este IP coloquei na DMZ do modem e inseri na interface eth2 do Linux. Como o meu link primário o IP é fixo, configurei seu script para ficar testando o link principal. O script não funcionou adequadamente, pois não ficava estável. Diante disso fiz um teste sem rodar o script. Eth1 link principal e o Eth2 (PPoE com o IP fixo 192.168.0.100). Deixei os dois links conectados no CentOS, e o gateway padrão ficou a eth1. Quando desliguei a eth1, o eth2 assumiu a conexão e funcionou tudo, até a VPN. Quando retornou o link da eth1, a conexão voltou para a eth1. Neste caso não usei nenhum scrip para testar a conexão.
Como você disse (Script para testar links dedicados IP Fixo), em um outro ambiente que tenho com IP Fixo (LP) o script funciona normalmente.
Estou postando para tirar futuras dúvidas que alguém que tem esse ambiente (PPoE)
[14] Comentário enviado por lppbrito em 04/12/2013 - 16:32h
01 No campo do script GW_PRIMARIO, só que no meu caso eu uso link da net dinâmico como posso esta preenchendo esta campo
o segundo link que tenho já é estático.
No script, campo /etc/init.d/roteamento.sh este arquivo (roteamento.sh) ele cria automático ?
[15] Comentário enviado por marcusmendes em 26/04/2014 - 09:21h
[14] Comentário enviado por lppbrito em 04/12/2013 - 16:32h:
01 No campo do script GW_PRIMARIO, só que no meu caso eu uso link da net dinâmico como posso esta preenchendo esta campo
o segundo link que tenho já é estático.
Se a sua internet é dinâmica você provavelmente tem uma conexão "ppp", para pegar o "gateway" que seria a máquina destino onde você conecta,
tente usar esse comando, eu fiz aqui e se tornou muito funcional:
[16] Comentário enviado por l1p3 em 20/10/2014 - 09:45h
Parabéns pelo seus scripts:
Rodrigo eu tenho uma dúvida à cerca dos mesmos.
Por exemplo tenho 2 placas de redes etho(internet) eth1(interna) ambas configuradas no firewall, supostamente a empresa aderiu a mais um link dedicado adicionei mais uma placa no servidor eth2(link_backup) e configurei conforme IP da prestadora.
Preciso alterar a configuração no firewall para o correto funcionamento desse script?