Redundância de links v0.1

Publicado por Rafael Tomelin em 01/08/2008

[ Hits: 16.320 ]

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

Colaboração de: Jorge Borcelli

Outras dicas deste autor

Implementando servidor de horas no Linux

Mostrando seu prompt para outro usuário

SSH (PuTTY) automatico pelo Windows

Administrando o CUPS por linha de comando (parte 1)

Leitura recomendada

Instalando modem ZTE MF645 Vivo 3G no Ubuntu 8.04

Iceweasel atualizado no Debian Wheezy - Repositório mozilla.debian

Colabore para encontrar a cura para a "Gripe Suína"

Temas e extensões: Resolvendo problemas de instalação no Firefox

Proxy Autenticado - Atualização automática do Microsoft Security Essentials e Windows Update

  

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 é dhcamargo@hotmail.com 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 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...

[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
calaff2@hotmail.com

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

Att: Idalmo Junior
calaff2@hotmail.com

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

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 é lucas_vts@hotmail.com.
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
jorge-fl@uol.com.br

[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:
msgoulartrs@gmail.com
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
adailton.lima@gmail.com.

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

thiagoo.anselmoo@gmail.com

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 é farochasp@gmail.com
preciso muito de uma ajuda...



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts