Pessoal, como tive trabalho para achar alguma dica de redundância, resolvi criar um script para resolver o meu problema.
O script abaixo está todo comentado, então acho que fica fácil para todos. E como o fiz o mais dinâmico possível, é só mudar as variáveis que funcionará.
Antes de começar, criaremos o diretório /etc/link e o arquivo de log /var/log/redundante.log:
# mkdir /etc/link
# touch /var/log/redundante.log
No diretório /etc/link ficarão todos os arquivos utilizados pelo o script. Já no arquivo de log /var/log/redundante.log ficará todo o log gerado a cada execução do script.
Sempre que um link caiu e o outro substituiu o mesmo, demorou cerca de uns 20 segundos para a internet ficar no ar.
#!/bin/bash
#####A Embratel usa o TERRA para fazer o teste (ping)
TERRA="200.176.2.10"
#####A GVT usa o UOL para fazer o teste (ping)
UOL="200.98.249.120"
#####GW da Embratel
ROTAEMBRATEL="10.0.0.55"
#####GW da GVT
ROTAGVT="10.1.1.1"
#####IP fixo da Embratel
IPEMBRATEL="10.0.0.170"
#####IP da gvt
IPGVT="10.1.1.254"
#####Interface da REDE INTERNA
ETHG="eth0"
#####Interface da Embratel
ETHE="eth1"
#####Interface da GVT
ETHG="eth2"
#####IP do terra para fazer o teste de ping
TESTE="200.176.2.10"
#####Arquivo de firewall da Embratel
FWE="/etc/link/fwembratel.sh"
#####Arquivo de firewall da gvt
FWG="/etc/link/fwgvt.sh"
#####Data atual
DATA=`date +%Y-%m-%d`
#####Verifica a rota atual
ROTAATUAL=`(route -v | grep default | awk -F' ' '{ print $2}')`
#####Deleta a rota
ROTADEL="route del default gw "
##### Comando para adicionar a rota
ROTAADD="route add default gw "
#####Adiciona a rota do terra (Se a Embratel estiver fora)
route add -host 200.176.2.10 gw 10.0.0.55 dev eth1
route add -host 200.98.249.120 gw 10.1.1.1 dev eth2
#####Se o terra pingar, o link está OK
if ( ping -I $ETHE -c 4 $TERRA > /dev/null ); then
#Cria os logs
echo $DATA >> /var/log/redundante.log
echo "Link Embratel está OK" >> /var/log/redundante.log
#####Se a rota default for igual a rota da Embratel, não faz nada
if [ "$ROTAATUAL" == "$ROTAEMBRATEL" ]; then
echo "Rota Embratel está OK" >> /var/log/redundante.log
#####Se a rota default for diferente da Embratel, coloca a rota default como Embratel
else
$ROTADEL $ROTAGVT
$ROTAADD $ROTAEMBRATEL
$FWE
echo "Ativado a rota da Embratel" >> /var/log/redundante.log
#Envia um email avisando que o link da Embratel voltou a funcionar
mail -s "Link da EMBRATEL volto a funcionar"
meuemail@meudominio.com.br < /etc/link/embratel.txt
fi
#Finaliza os logs
echo "Fim da verificação EMBRATEL" >> /var/log/redundante.log
echo " " >> /var/log/redundante.log
echo " " >> /var/log/redundante.log
else
#####Se pingar é porque o link está ok
if ( ping -I $ETHG -c 4 $UOL >/dev/null ); then
#cria os logs
echo $DATA >> /var/log/redundante.log
echo "Link GVT está OK" >> /var/log/redundante.log
##### Se a rota default for igual a da gvt, não faz nada
if [ "$ROTAATUAL" == "$ROTAGVT" ]; then
echo "Rota Embratel ainda está fora do ar" >> /var/log/redundante.log
echo " " >> /var/log/redundante.log
echo " " >> /var/log/redundante.log
##### Se a rota default for diferente da GVT, adiciona a rota default como sendo da GVT
else
$ROTADEL $ROTAEMBRATEL
$ROTAADD $ROTAGVT
$FWG
echo "Ativando a rota da GVT" >> /var/log/redundante.log
#Envia o email avisando o que link da Embratel está fora do ar (embratel_caiu.txt) e que o link da GVT irá assumir (gvt.txt)
mail -s "Link da EMBRATEL fora do AR" meuemail@meudominio.com.br <
/etc/link/embratel_caiu.txt
mail -s "Link da GVT está no AR" meuemaile@meudominio.com.br < /etc/link/gvt.txt
fi
#Cria os logs
echo "Fim da verificação GVT" >> /var/log/redundante.log
echo " " >> /var/log/redundante.log
echo " " >> /var/log/redundante.log
fi
fi
#####Deleta rotas do Terra
route del -host 200.176.2.10 gw 10.0.0.55 dev eth1
route del -host 200.98.249.120 gw 10.1.1.1 dev eth2
Temos que dar permissão de execução nos scripts de firewall (fwembratel.sh e fwgvt.sh).
Os arquivos usados no script acima podem ser baixados aqui.
[1] Comentário enviado por dhcamargo em 18/09/2008 - 13:24h
Muito legal este script! Mas o arquivo dos scripts para download está corrompido. Vc teria os arquivos fwembratel.sh e fwgvt.sh para me enviar? meu email é dhcamargo@hotmail.com Obrigado, abraços!
[4] Comentário enviado por dhcamargo em 03/10/2008 - 11:39h
Obrigado! Sobre os scripts, estão ok agora, acho que vc acertou eles =) Foi o melhor script que encontrei na net sobre redundância sem load-balance. Abraços!
[5] Comentário enviado por randão em 31/10/2008 - 12:07h
Rafael boa tarde,
Venho por meio de este e-mail lhe solicitar o script que esta compactado, pois o mesmo ao ser baixado esta com problemas. Meu e-mail e rande33@gmail.com.
Estou com uma dificuldade em realizar a redundância do meu Link de Internet e meu speedy. O que ocorre não sei se pode me ajudar tenho dois Servers aqui na empresa
rodando Debian com tres placas de redes cada uma para a rede interna outra para o link e uma que esta ligada via cabo cross entre os servers. Tenho um Link da telefônica e um
speedy que no caso utilizo para a redundância, mas quando meu Link cai tenho que sair correndo para altear as configurações para meu Speedy, pois a NET não pode para aqui
a idéia seria quando o speedy cair o link assumir automático e vise-versa... Teria alguma idéia para me ajudar... Dês de já agradeço sua atenção...
[7] Comentário enviado por calaff2 em 14/12/2008 - 21:48h
Amigo tem como vc mandar o script para meu email e se possivel os script do:
#####Arquivo de firewall da Embratel
FWE="/etc/link/fwembratel.sh"
#####Arquivo de firewall da gvt
FWG="/etc/link/fwgvt.sh"
[8] Comentário enviado por calaff2 em 14/12/2008 - 22:07h
Agora amigo + 1 pergunta como funciona: mail -s "Link da EMBRATEL fora do AR" meuemail@meudominio.com.br <
/etc/link/embratel_caiu.txt
mail -s "Link da GVT está no AR" meuemaile@meudominio.com.br < /etc/link/gvt.txt
você ta usando que sistema para enviar o email caso o link caia ?
[9] Comentário enviado por esmatos em 15/05/2009 - 13:47h
boa tarde, funcionaria em uma distribuição CENTos?
Pode ser duas ADSL com IP's variáveis - PPPOE? (GVT 2Mb e BRTURBO de 4Mb)
se sim gostaria de recebero o script por mail para esmatos@terra.com.br
Caso não funcione com ip variável tem algum modo de ser feito isto?
[11] Comentário enviado por jorgealf em 05/10/2009 - 21:22h
Amigo tem como vc mandar o script para meu email e se possivel os script do:
#####Arquivo de firewall da Embratel
FWE="/etc/link/fwembratel.sh"
#####Arquivo de firewall da gvt
FWG="/etc/link/fwgvt.sh"
[13] Comentário enviado por msgoulart em 22/12/2009 - 14:38h
Tchê por favor me envie os scripts (fwembratel.sh e fwgvt.sh) tmbm...
É muito bom mesmo este script, vai me ajudar bastante na resolução do meu problema...
Obrigado.
[15] Comentário enviado por adailtonlp em 10/05/2010 - 10:14h
Ola Rafael!!!
Parabéns pelo artigo! Das documentações que li na internet o seu artigo é sem duvida muito pratico e didatico!!
O amigo poderia me enviar os arquivos do seu script?
Atenciosamente,
Adailton Lima Pereira
GOIANIA - GO
adailton.lima@gmail.com.
[19] Comentário enviado por alexandredsc em 08/04/2011 - 16:45h
Muito bom o script, mas no meu caso, não consigo executar o comando route -v quando o gateway default é o do link principal, que caiu.
O script para naquela linha:
#####Verifica a rota atual
ROTAATUAL=`(route -v | grep default | awk -F' ' '{ print $2}')`
Mas se o gateway for o do link secundário, consigo executar o comando e o script funciona perfeitamente.
Entretanto, o padrão é que o gateway default seja do link principal.
Alguém já passou por algo assim?
[20] Comentário enviado por eluanf em 23/03/2012 - 20:54h
Boa noite, gostaria de saber, neste script qual dos dois links é o principal? E se acaso esse principal voltar a funcionar ele volta automaticamente a operar?
Outra duvida é a variável ETHG que esta atribuída tanto para etho quanto para a eth2, isso esta correto?
[21] Comentário enviado por farochasp em 27/08/2012 - 16:56h
Amigos, sou novato e estou com uma duvida terrível... preciso criar essa redundancia com dois links o Principal AJato e o outro Virtua ... baixei os scrips fw e criei um arquivo com os dados acima... e gostaria de saber como edito o cron para rodar o meu arquivo redundancia.conf (executei um chmod no arquivo e deixei na pasta /init.d/ ...
e agora o que faço??? to perdidão primeira vez fazendo isso... abraços...
meu mail é farochasp@gmail.com
preciso muito de uma ajuda...