Redundância de links v0.1

Publicado por Rafael Tomelin em 01/08/2008

[ Hits: 16.804 ]

Blog: http://teclinux.no-ip.org:8080

 


Redundância de links v0.1



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"
[email protected] < /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" [email protected] <
/etc/link/embratel_caiu.txt
mail -s "Link da GVT está no AR" [email protected] < /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.

Colaboração de: Jorge Borcelli

Outras dicas deste autor

Mostrando seu prompt para outro usuário

SSH (PuTTY) automatico pelo Windows

Implementando servidor de horas no Linux

Administrando o CUPS por linha de comando (parte 1)

Leitura recomendada

Bloquear Windows Live Messenger (MSN) no firewall

Tubarão nas nuvens? Vá de Cloudshark!

Resolvendo problemas na instalação do Apollon

Erro de script no live Mail/Hotmail quando passa pelo proxy (Squid3)

Flash sem áudio - Slackware Linux 12.2

  

Comentários
[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 é [email protected] Obrigado, abraços!

[2] Comentário enviado por dhcamargo em 03/10/2008 - 11:04h

vc colocou o script principal no cron? se sim, de quanto em quanto tempo configurou para ele rodar?

[3] Comentário enviado por c.rafael em 03/10/2008 - 11:30h

Oi DHCAMARGO,

Irei enviar para o seu e-mail os scripts.
Coloquei o arquivo principal no cron para rodar a cada 5 minutos

[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 [email protected]
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...

[6] Comentário enviado por info24hs em 20/11/2008 - 10:58h

Usei esse script pot muito tempo, funciona muito bem...

[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"

Att: Idalmo Junior
[email protected]

[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" [email protected] <
/etc/link/embratel_caiu.txt
mail -s "Link da GVT está no AR" [email protected] < /etc/link/gvt.txt

você ta usando que sistema para enviar o email caso o link caia ?

Att: Idalmo Junior
[email protected]

[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 [email protected]
Caso não funcione com ip variável tem algum modo de ser feito isto?

Grato.

[10] Comentário enviado por removido em 29/08/2009 - 12:08h

Ola, fera se poder me enviar os email ficarel grato, o email é [email protected]
desde ja obriga, e parabéns pelo script.

[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"

Att: Jorge Lima
[email protected]

[12] Comentário enviado por msgoulart em 22/12/2009 - 14:34h

Buenas Jorge, muito bom este script, tem como enviar para o meu e-mail:
[email protected]
Muito Obrigado.

[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.

[14] Comentário enviado por alexsilva_bike em 11/02/2010 - 18:46h

Tem como enviar os escriptes que estão faltando ?
Valeu

[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
[email protected]

[16] Comentário enviado por trgtecno em 10/10/2010 - 08:26h

bom dia. pode me enviar os scripts de cada link? Obrigado

[17] Comentário enviado por ramos1986 em 10/11/2010 - 17:39h

Boa tarde, tem como enviar os scripts dos links?

Obrigado e parabéns pelo artigo.

[18] Comentário enviado por thiagoanselmo em 27/11/2010 - 17:43h

Amigo Tem como Você compartilhar esses scripts comigo me enviando por e-mail?

[email protected]

Parabéns pelo trabalho!!!

[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?

Muito obrigado, parabéns pelo post...

[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 é [email protected]
preciso muito de uma ajuda...



Contribuir com comentário