Alta disponibilidade de Links com CentOS 6

Publicado por Carlos Eduardo Maciel Rodrigues (última atualização em 15/07/2012)

[ Hits: 6.606 ]

Download script_links.txt




O objetivo deste script é checar se o link principal está online, caso o mesmo não esteja é trocado automaticamente para o link secundário e assim que o link principal volta a ficar online a conexão é direcionada para placa principal novamente.

Este script tem a função de checar a disponibilidade dos links de internet, fazendo com que a empresa nunca fique sem internet, sendo que toda vez que o link principal fica indisponível a conexão é direcionada para o link secundário.  

Para que este script funcione os scripts de firewall deve esta configurado com o seguinte cenário:

Linux CentOS 6 com 3 placas de redes sendo:

eth0 = local 192.168.0.1 (rede local)
eth1 = 200.200.200.10  (link dedicado) principal
eth2 = 189.189.189.10  (link vivo)        secundário



  



Esconder código-fonte

#!/bin/bash
#
#####################################
##Carlos Eduardo Maciel Rodrigues                              #
# cadurodrigues@hotmail.com                                     #
#####################################
 
PATH=/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/

# gateway do Link principal

LDGW=200.200.200.1
DNS=4.2.2.2
 
# gateway do link Secundário
LVGW=189.189.189.1

IPTABLES=/sbin/iptables
 
# Testa acesso ao DNS do Google
# Se o mesmo estiver funcionando não é alterado as conexões caso contrário é deletada 
#a rota da placa principal e adicionada a rota da placa secundária.

if ping -c 2 -i 1 -q $DNS > /dev/null 2>&1; then         
       echo "PING OK"
   else
       if route -n | grep $LDGW > /dev/null; then
       route del default gw $LDGW  eth1 > /dev/null

       echo "adicionando nova rota default da Vivo"
       route add default gw $LVGW eth2 > /dev/null
       echo "Rota do Link da vivo adicionada"
       fi
fi

# Caso a rota da placa principal foi trocado para placa secundária o sistema lê o (fi) abaixo.
#O (fi) abaixo verifica se o link principal voltou a funcionar, caso o mesmo tenha voltado é trocado 
#a conexão da placa secundária para placa principal.

  # "Testando link principal" 
 
if
    ping -c 2 -i 1 -q $LDGW > /dev/null 2>&1; then
    echo "voltando para o link principal"
    route del default gw $LVGW eth2 > /dev/null
    echo "Adicionando Rota do Link dedicado"
    route add default gw $LDGW eth1 > /dev/null
   
fi 

#fim do script.

Scripts recomendados

Monitore vários servidores ao mesmo tempo com Apache + shellscript

Backup com TAR em LOG usando FITA LTO/DLT com filtro de arquivos

Projetinho de firewall

Implementando Statement e RecordSet em bash script

Remove palavras


  

Comentários
[1] Comentário enviado por retcon em 02/08/2012 - 10:17h

Meu cliente tem 2 links (net 10Mb e Vivo 4Mb) fiz um servidor de internet Debian 6.0 com squid e sarg usando 3 placas de rede, ai foi só usar esse script e adaptar para minhas configurações que ficou blz. Agora quando cai a net, o vivo entra automaticamente e quando volta a net é novamente trocada a rota. Obs. adcionei esse script na crontab para rodar a cada 1 minuto. Valeu Cadu.

[2] Comentário enviado por cristianrocks em 11/10/2012 - 09:53h

Olá, sou meio novo no universo linux, estou testando seu script em um Centos 6.3 e só me retorna que o comando grep não foi encontrado no comando route -n | grep $LDGW. Poderia me dar uma luz do que poderia ser? Grato

[3] Comentário enviado por cadurodrigues14 em 02/09/2013 - 11:34h

Olá Quote, desculpe fiquei um tempo afastado, porém essa dúvida é tranquila já tentou dar um restart nas placas de rede ?

[4] Comentário enviado por cadurodrigues14 em 02/09/2013 - 11:36h


[1] Comentário enviado por retcon em 02/08/2012 - 10:17h:

Meu cliente tem 2 links (net 10Mb e Vivo 4Mb) fiz um servidor de internet Debian 6.0 com squid e sarg usando 3 placas de rede, ai foi só usar esse script e adaptar para minhas configurações que ficou blz. Agora quando cai a net, o vivo entra automaticamente e quando volta a net é novamente trocada a rota. Obs. adcionei esse script na crontab para rodar a cada 1 minuto. Valeu Cadu.


Cristianrocks , boa tarde.

Desculpe fiquei um tempo afastado, porém essa dúvida é tranquila já tentou dar um restart nas placas de rede ?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts