Troca de link em caso de queda de Internet (FAILOVER)
Publicado por Marcello Carvalho (última atualização em 09/08/2016)
[ Hits: 6.453 ]
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
Configuração do VNC Server no Display 0 (terminal que estiver na tela)
Atulizações do DAT antivírus Mcafee
Instalando a última versão estável do Eclipse com uma única linha
Agora temos uma assistente virtual no fórum!!! (247)
Manutenção de sistemas Linux Debian e derivados com apt-get, apt, aptitude e dpkg
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
Como Atualizar Fedora 39 para 40
Instalar Google Chrome no Debian e derivados
Consertando o erro do Sushi e Wayland no Opensuse Leap 15
Instalar a última versão do PostgreSQL no Lunix mantendo atualizado
Flathub na sua distribuição Linux e comandos básicos de gerenciamento
Impressora Canon Ip 1800 (Drivers) 64 bit (7)
ASRock H310CM-HG4 vs Linux (16)
iso de sistema 32 bit em atividade (20)
Microfone do meu headset não é recinhecido. Meu notebook é um Acer Asp... (10)