Troca de link em caso de queda de Internet (FAILOVER)
Publicado por Marcello Carvalho (última atualização em 09/08/2016)
[ Hits: 6.719 ]
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
Calculadora de host de uma rede
Atualizando o kde para kde3.5.7
Adicionar/Deletar Usuarios Samba/Sistema
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Configurando o Conky para iniciar corretamente no sistema
3 configurações básicas que podem melhorar muito a sua edição pelo editor nano
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Jogando com Proton no LInux (0)
Ingress NGINX Controller CVSS base score of 9.8 (4)
Impossível corrigir problemas, você manteve (hold) pacotes quebrados. (2)