Configuração de failover de links de internet
Publicado por Wagner Souza (última atualização em 06/02/2015)
[ Hits: 12.541 ]
Homepage: https://medium.com/@souzaw
Para quem utiliza dois links de internet e precisa fazer um failover, ou seja, quando um cair o outro assume, fazendo assim uma redundância de links, evitando ficar offline.
#!/bin/bash
#---------------------------#
# CONFIGURAÇÃO DOS GATEWAYS #
#---------------------------#
GW1=10.0.2.2
GW2=192.168.1.1
LOG=/root/rc.firewall.log
#------------------------------#
# INÍCIO DA FUNÇÃO DE FAILOVER #
#------------------------------#
# Aqui optei em por uma função para deixar a estrutura do
# script mais organizada e legível. É de suma importância
# que você esteja familiarizado com o shell script
failover ()
{
# Criação de um loop infinito para testar a disponibilidade
# dos links de internet
while [ 1 ]
do
# Altera sempre para o gateway padrão dentro da tabela
# main de roteamento, ou seja, quando o link primário voltar,
# automáticamente a navegação volta para este
/sbin/ip route replace default via $GW1
# Neste for, o comando dig retornará os dois IPs relacionados
# ao site do UOL. Você poderia por qualquer site aí, porém o UOL
# retorna dois IPs que serão utilizados pelo script para saber
# se o link de internet principal está fora
for i in `dig +short uol.com.br`
do
# Verificando a comunicação do link de internet
/bin/ping -c 1 $i
done
# Caso o resultado do comando anterior seja 0 (zero), o link
# de internet principal está ok. Se for 1 (um) houve falha no comando
# deduzindo assim ausência de conexão. Quem vai determinar isso é o
# comando echo $?. Mais abaixo, haverá um if para testar as condições
STATUS_CMD_LINK=`echo $?`
if [ $STATUS_CMD_LINK -eq 0 ]; then
# Caso haja sucesso no teste do comando do ping
# as regras para o compartilhamento de internet serão inseridas
/sbin/iptables -F
/sbin/iptables -t nat -F
/sbin/modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
else
# Se o link falhar, os comandos mais abaixo farão a limpeza
# das regras de iptables e irão configurar o segundo link de internet
# e será criado um arquivo de log informando quando houve a queda
echo "_________________________" >> $LOG
echo " " >> $LOG
echo "# LINK SECUNDARIO ATIVO.: `date +%d/%m/%y-%H:%M:%S`">> $LOG
echo " " >> $LOG
echo "_________________________" >> $LOG
/sbin/ip route replace default via $GW2
/sbin/iptables -F
/sbin/iptables -t nat -F
/sbin/modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
fi
# A cada 2 minutos (120 segundos) será feito um teste no link
# principal para constar se o mesmo encontra-se no ar.
sleep 120
done
}
####### CHAMA A FUNÇÃO ########
failover
Compara colunas e mostra a maior
Manipulação de contas de email com o postfix
Gerenciamento de software e hardware de desktop
Alta disponibilidade de Links com CentOS 6
LazyDocker – Interface de Usuário em Tempo Real para o Docker
Instalando COSMIC no Linux Mint
Turbinando o Linux Mint: o poder das Nemo Actions
Inteligência Artificial no desenvolvimento de software: quando começar a usar?
O widget do Plasma 6 Área de Notificação
[Resolvido] Algo deu errado ao abrir seu perfil
Quando vocês pararam de testar distros? (14)
Problema com som no laptop (3)
Não estou conseguindo fazer funcionar meu Postfix na versão 2.4 no Deb... (2)









