Troca de link em caso de queda de Internet (FAILOVER)
Publicado por Marcello Carvalho (última atualização em 09/08/2016)
[ Hits: 6.918 ]
Download 1469052792.failover.sh (versão 2)
Um simples script para troca de gateway de um firewall com duas wans em caso de queda do link ativo.
Adcione uma regra ao cron da seguinte forma:
*/1 * * * * /home/script/failover.sh
No meu caso meu script é executado a cada minuto e esta localizado dentro da pasta HOME.
Versão 2 - Enviado por Marcello Carvalho em 20/07/2016
Changelog: Adicionado
- Função que gera um script auxiliar para voltar para o Gateway principal quando este estiver ON novamente
Retirados
- LOG de monitoramento de testes
Download 1469052792.failover.sh
#!/bin/bash
Link1="192.168.0.1"
Link2="192.168.10.1"
Ver1="8.8.8.8"
Ver2="8.8.4.4"
arquivoLog='failover.log'
pastaLog='/var/log/failover/'
dataAtual=$(date | awk '{print $1, $2, $3, $4}')
function Verifica(){
ping=$(ping -c 3 $1 | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
}
function getGateway(){
#Identifica o Gateway Default do servidor
gateway=$(/usr/sbin/route -n | grep UG | grep 0.0.0.0 | awk '{print $2}');
}
function setGatway(){
#Deleta Gateway Default
/usr/sbin/route del default gw $oGateway >> /home/script/LOG
#Seta novo Gateway Default
/usr/sbin/route add default gw $nGateway >> /home/script/LOG
}
function down(){
#verifica se ja existem rotas definidas para os Verificadores
tVer1=$( /usr/sbin/route -n | grep $Ver1 | awk '{ print $1}' )
tVer2=$( /usr/sbin/route -n | grep $Ver2 | awk '{ print $1}' )
#Teste se a rota ja existe para não tentar criar duas vezes
if [ -z $tVer1 ]; then
/usr/sbin/route add -net $Ver1 netmask 255.255.255.255 gw $Link1 >> /home/script/LOG
fi
if [ -z $tVer2 ]; then
/usr/sbin/route add -net $Ver2 netmask 255.255.255.255 gw $Link2 >> /home/script/LOG
fi
getGateway
case $gateway in
"$Link1")
Verifica $Ver1 $gateway >> /home/script/LOG
oGateway=$(echo $Link1)
nGateway=$(echo $Link2);;
"$Link2")
Verifica $Ver2 $gateway >> /home/script/LOG
oGateway=$(echo $Link2)
nGateway=$(echo $Link1);;
esac
if [ $ping -gt 0 ]; then
echo "$dataAtual Conexão válida com a internet através do GW: $gateway" >> $pastaLog$arquivoLog #Caso não queira o log deste registro basta alterar a saida para "> /dev/null"
else
if [ -d $pastaLog ]; then
echo "$dataAtual Gateway Atual: $gateway sem conexão com a internet, mudando para o gateway: $nGateway" >> $pastaLog$arquivoLog
else
mkdir $pastaLog
echo "$dataAtual Gateway Atual: $gateway sem conexão com a internet, mudando para o gateway: $nGateway" >> $pastaLog$arquivoLog
fi
echo "Falha em obter conectividade com a internet através do GW: $gateway"
echo "Alternando link"
setGatway
fi
}
down
Adicionar/Deletar Usuarios Samba/Sistema
Atualização Automática do Uvscan (Antivirus for linux)
Verificar conexão com Internet
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?









