Alta disponibilidade de links

Neste artigo venho compartilhar a minha experiência e desespero quando precisei criar um sistema de alta disponibilidade de links em ambiente Linux numa Sexta-feira às 5:30 da tarde. Acredito que muitos já passaram por isso. Obtive sucesso com a minha solução e espero que este artigo ajude muitas pessoas contribuindo ainda mais com a comunidade.

[ Hits: 31.906 ]

Por: Bruno em 16/11/2004


Implantação



Segue abaixo o script que torna esta solução possível, coloque-o em /etc/init.d e depois torne-o executável com "chmod 775":

#!/bin/bash
#
#####################################
# bruno@cdcorp.com.br 22/10/04 #
# levanta tunnel adsl #
#####################################


PATH=/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

# gateway da LP
LPGW=200.232.63.201

# speedy
SPEEDY=200.207.207.65
IPTABLES=/sbin/iptables

# Testa acesso ao gateway da LP
if ping -c 2 -i 1 -q $LPGW > /dev/null 2>&1; then
        echo "PING OK"
if route -n | grep $SPEEDY > /dev/null;then
    echo "ROTA SPEEDY ENCONTRADA..DELETANDO..."
    route del default gw $SPEEDY > /dev/null
    echo "ROTA SPEEDY DELETADA"
    route add default gw $LPGW > /dev/null
    echo "ROTA LP adicionada"
    echo "Iniciando regras de firewall"
    $IPTABLES -t nat -D POSTROUTING 1 > /dev/null
    $IPTABLES -t nat -A POSTROUTING -i eth0 -j MASQUERADE > dev/null
    echo "REGRAS DE FIREWALL OK"
        fi

                # tudo ok
                echo "OK..SAINDO"
                exit 0
                
else
                echo "SENAO...."

              echo "Caso a LP esteja down"
          
   echo "verifica se existe rota da LP, se existir deleta"
   if route -n | grep $LPGW > /dev/null; then
   route del default gw $LPGW > /dev/null
   fi
    echo "adiciono a rota default da speedy"
    route add default gw $SPEEDY > /dev/null
    echo "rota adicionada"
    $IPTABLES -t nat -D POSTROUTING 1 > /dev/null
    $IPTABLES -t nat -A POSTROUTING -i eth2 -j MASQUERADE > /dev/null
    echo "regras de firewall adicionadas"

        fi
done
Página anterior    

Páginas do artigo
   1. Introdução
   2. Ambiente
   3. Implantação
Outros artigos deste autor

Detectando possíveis trojans e lkms em seu servidor

POP3 gateway com fetchmail

Leitura recomendada

Ingressando estações de trabalho Ubuntu no AD com Closed In Directory

Gerar músicas aleatórias com YAD (Modo Gráfico)

Relatório de conexão Wi-Fi com dados de usuários conectados nos POPs

BackRE - Seu script de backup remoto

Receba seu IP externo via e-mail ou ensine o bash a ler e enviar e-mails

  
Comentários
[1] Comentário enviado por fabio em 16/11/2004 - 00:04h

Bruno, muito bom seu artigo, com certeza será útil para muito. Bela sacada! Já foi pra pastinha de favoritos da minha conta aqui no VOL :)

[]'s

[2] Comentário enviado por pop_lamen em 16/11/2004 - 01:25h

Amigo, bem legal,
mas eu acho q faltou um IF aih, se a LP estivesse down, mas o speedy ja configurado, então ele deveria sair:

echo "verifica se existe rota da LP, se existir deleta"
if route -n | grep $LPGW > /dev/null; then
route del default gw $LPGW > /dev/null

fi
#agora vamos checar se o gw ja nao eh speedy
if if route -n | grep $SPEEDY > /dev/null ;then
#se for sai, se não continua
echo "Speedy ja ativado"
exit 0
else
echo "adiciono a rota default da speedy"
route add default gw $SPEEDY > /dev/null
echo "rota adicionada"
$IPTABLES -t nat -D POSTROUTING 1 > /dev/null
$IPTABLES -t nat -A POSTROUTING -i eth2 -j MASQUERADE > /dev/null
echo "regras de firewall adicionadas"

fi
#acionamos um ultimo
fi
done

--------------
Além disso serial legal implementar funções, a asism chama-las com um loop infinito, pausando, podendo assim, checar tudo de tempo em tempo.



[3] Comentário enviado por silvioreis em 16/11/2004 - 03:41h

Bruno,

A proposta é boa, mas a sua implementação precisa melhorar, essas soluções de coisas no cron monitorando de tempos em tempos são horriveis.

Estou trabalhando no mesmo problema e não vejo como fugir do iproute2 + "alguma coisa".

O problema link dedicado com ip fixo e link adsl com ip dinamico parece não ser muito facil de resolver de maneira simples, ou seja, sem precisar aplicar patches de kernel.

Pq vc desistiu do iproute2 ?

[4] Comentário enviado por naoexistemais em 16/11/2004 - 05:28h

Bruno,

Esse artigo posso considerar o melhor que já vi aqui no VOL, parabens.......

Falou,

[5] Comentário enviado por y2h4ck em 16/11/2004 - 10:11h

Ae Bruno sup3r hax0r b1g b33r eheheh
Mandou bem no artigo.

Demorou mais saiu aheheheh

[]s brow.

Spawn

[6] Comentário enviado por chroot em 16/11/2004 - 10:18h

Obrigado pela forca galera, deixando claro que a solução esta aberta para criticas e opiniões, pois o objetivo é que juntos, consigamos tornar a solução a melhor possivel, então mãos a obra e ajudem a comunidade ;)

ps : humildade sempre

[7] Comentário enviado por wronieri em 16/11/2004 - 21:06h

Muito bom seu artigo Bruno estou tentando fazer este tipo de esquema mas com heartbeat vc nunca tentou usar este esquema?

Parabéns ;-)

[8] Comentário enviado por removido em 17/11/2004 - 15:48h

Excelente material...
Parabéns!!!!!!!!!!!!

[9] Comentário enviado por uxhsilva em 23/05/2006 - 16:08h

Parabens !!

[10] Comentário enviado por removido em 14/11/2006 - 09:38h

bonding \o/

[11] Comentário enviado por andrelopes.mrx em 26/12/2009 - 16:52h

Eu achei precário, que a inteligência fique num script agendado no cron, pense nisso: mantenha rota para os 2 gateways de saída para a internet, sendo a saída pelo link secundário com uma metrica pior.

Em ambientes BSD, você pode monitorar as interfaces de maneira eficiente com ifstated, mas creio que para o seu cenário nem isso seja necessário.

Espero ter contribuído com alguma idéia.

André Gustavo
blog: http://blog.mrx.com.br
gtalk: andre@mrx.com.br


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts