Olá a todos!!!
Criei uma versão melhor do script de redundância de links dedicados, e a diferença agora é que ele testa apenas o link principal e caso esteja offline, ele muda para o link secundário. Quando o link principal volta, o script retorna para ele.
#!/bin/bash
# Script de redundancia de links dedicados
# Desenvolvido por Rodrigo Manzzato Alves Garcia em 08/10/2012
# Atualizado em 20/12/2012
PATH=/sbin:/usr/sbin:/bin:/usr/bin
# Informe abaixo o gateway principal
GW_PRIMARIO=""
# Informe abaixo os IPs primários de teste
IP_TESTE_PRIMARIO1=""
IP_TESTE_PRIMARIO2=""
# Informe abaixo o IP do link primario
IP_PRIMARIO_ROUTER=""
# Informe abaixo o gateway do link secundario
GW_SECUNDARIO=""
# Informe abaixo o IP do link secundario
IP_SECUNDARIO_ROUTER=""
# Armazenar gateway padrao na variavel GW_ATUAL
GW_ATUAL=`netstat -nr | awk '$1 ~ /^[0.0.0.0]/ {print $2}'`
# ATENCAO!!! A secao abaixo so deve ser alterada com absoluta certeza de que sabe o que esta fazendo!!!
# Funcao para troca do gateway
function GATEWAY()
{
netstat -nr | awk -v gw2="$GW2" -v gw="$GW" 'NR > 1 {if ($2 == gw2) print "route add -net " $1 FS "netmask " $3 " gw " gw > "/etc/network/gateway";}'
netstat -nr | awk -v gw2="$GW2" 'NR > 2 {if ($2 == gw2) print "route del -net " $1 FS "netmask " $3 " gw " gw2 > "/etc/network/gateway_del";}'
while read ROTA2
do
echo -e "`$ROTA2`"
done < /etc/network/gateway_del
while read ROTA
do
echo -e "`$ROTA`"
done < /etc/network/gateway
}
# Backup das rotas existentes
echo "#!/bin/bash" > /etc/network/rotas.sh
netstat -nr | awk 'length($2) > 7' | awk 'NR > 1 {print "route add -net " $1 FS "netmask " $3 " gw " $2}' >> /etc/network/rotas.sh
# Teste das redes
ping -c4 $IP_TESTE_PRIMARIO1 -I $IP_PRIMARIO_ROUTER >> /dev/null
if [ $? = "0" ]
then
if [ $GW_ATUAL = "$GW_PRINCIPAL" ]
then
exit
else # Troca de Gateway caso o link atual não for o principal
GW=$GW_PRIMARIO
GW2=$GW_SECUNDARIO
GATEWAY
echo `date` "Rede Principal Ativada" >> /etc/network/gateway.log
exit
fi
else
ping -c4 $IP_TESTE_PRIMARIO2 -I $IP_PRIMARIO_ROUTER >> /dev/null
if [ $? = "0" ]
then
exit
else # Troca de Gateway caso o link atual não estiver respondendo
GW=$GW_SECUNDARIO
GW2=$GW_PRIMARIO
GATEWAY
echo `date` "Rede Secundaria Ativada" >> /etc/network/gateway.log
exit
fi
fi
Espero que seja útil!!!
Até a próxima!!!
Boa noite Rodrigo!
ResponderExcluirSaberia me informar quantas e quais ferramentas (servicos) trabalham com a redudancia de link para unix?
Obrigado pela colcaboracao!
Att,
Joao Freitas.
Rodrigo, ola boa tarde.
ResponderExcluiramigo me tira uma duvida.
tenho 2 vpns e hoje faço redundancia entre elas MPLS e INTERNET.
so que nos cliente das VPNs nao consigo fazer a routa automatica.
toda vez que desconecto a internet na vpn ele nao adiciona a rota nova para que assim os clientes continuem seus trabalhos passando pela outra rota.
vi alguns artigos a respeito de METRIC+QUAGGA+RIP em VPN's so que nao consegui um scrip que gere automaticamente a nova rota.
pretendo usar rip pois ja utilizo para alguns fins.
teria alguma solucao para me ajudar a solucionar este pequeno problema de rotas.
Ubuntu 12.04
Atenciosamente
Adriano D.
Boa Tarde
ResponderExcluirutilizei seu script no Debian e da o seguinte erro:
redundancia.sh: 26: redundancia.sh: Syntax error: "(" unexpected
tem alguma dica? Obrigado
Regis boa tarde,
ResponderExcluirTroque a linha "function GATEWAY()" por apenas "GATEWAY()"
Att.
Parabéns pelo seus scripts:
ResponderExcluirRodrigo eu tenho uma dúvida à cerca dos mesmos.
Por exemplo tenho 2 placas de redes etho(internet) eth1(interna) ambas configuradas no firewall, supostamente a empresa aderiu a mais um link dedicado adicionei mais uma placa no servidor eth2(link_backup) e configurei conforme IP da prestadora.
Preciso alterar a configuração no firewall para o correto funcionamento desse script?
Filipe,
ResponderExcluirEsse script é para links dedicados entre unidades, sem passar por firewall algum. Não sei como é a configuração do seu firewall e por isso fica difícil ajudar.
Att.
Este comentário foi removido pelo autor.
ResponderExcluirOlá Rodrigo,
ResponderExcluirComo faço para adaptar esse seu script para uma rede onde os endereços IPS da WAN é recebido por DHCP,
Grato pela atenção
Bom dia,
ExcluirEste script é para links entre unidades, roteadores, e não links de Internet.
Att.
Mas é entre roteadores, caro colega. Acho que me expressei mal.
ExcluirO IP não é dedidcado, eles são recebido através de DHCP e ADSL. Como faço pra adaptar a este cenário, ou não é possível ?