Troca de link em caso de queda de Internet (FAILOVER)
Publicado por Marcello Carvalho (última atualização em 09/08/2016)
[ Hits: 6.485 ]
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
Script Firewall Iptables + compartilhar internet
Instalação da Multilib no Slackware
Plugin para o Nagios monitorar o vencimento do certificado Zimbra
Redundância de dois links de internet
Atualizar o macOS no Mac - Opencore Legacy Patcher
Crie alias para as tarefas que possuam longas linhas de comando - bash e zsh
Criando um gateway de internet com o Debian
Configuração básica do Conky para mostrar informações sobre a sua máquina no Desktop
Aprenda a criar músicas com Inteligência Artificial usando Suno AI
Instalando e usando o Dconf Editor, o "regedit" para Linux
Como instalar o navegador TOR no seu Linux
Instalando Zoom Client no Ubuntu 24.04 LTS
Remover por completo uma DE (7)
validando quandidade de leitura no read[DUVIDA] (4)
Qual a relevancia dos valores de bogomips com os Mhz e Ghz[DUVIDA] (7)