jmsb
(usa Outra)
Enviado em 25/08/2015 - 17:52h
ola a todos , tenho um scripts adquirido aqui o vivaolinux, ele faz a redundância de dos links de internet da empresa se um cair o outro assume, so tem um pequeno problema , quando o link principal volta ele tem que assumir, a internet não pode sair pelo backup, tem que volta pro principal , só esta voltando se o backup cair. vou posta o script quem pode me ajudar a melhorar
galera antes de criticar e pedir pra estudar sobre os comandos e ações no sistemas linux , eu vou entender que tem quer fuçar e ler sobre os assunto , eu estou justamente fazendo isso
mais o caso e um pouco urgente ,e agradeço quem pode me ajudar .
segue abaixo o script
#!/bin/bash
### CONFIGURE AS VARIÁVEIS AQUI:
testeip="8.8.8.8"
iface1=eth0
iface2=eth1
gw1="10.26.20.1"
gw2="10.15.20.1"
nomeGw1="link1"
nomeGw2="link2"
### FIM DA CONFIG.
rota1=0
rota2=0
nomeScript="loadbalanceFAILOVER.sh"
iniciar(){
### LIMPEZA:
iptables -t mangle -F
iptables -t mangle -X
iptables --flush
iptables -F
iptables -t nat -F
iptables -X
iptables -t nat -X
ip route flush cache
### HABILITA ROTEAMENTO:
echo "1" > /proc/sys/net/ipv4/ip_forward
### MASCARA OS PACOTES COM DESTINO A INTERNET (NAT):
iptables -t nat -A POSTROUTING -o $iface1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o $iface2 -j MASQUERADE
### ADICIONA OS GATEWAYS NAS DEVIDAS INTERFACES:
route add -net default gw $gw1 dev $iface1
route add -net default gw $gw2 dev $iface2
### LINK 1 ATIVO
clear
echo "Link em atividade: $nomeGw1"
echo "Interface:$iface1"
echo "Gateway:$gw1"
echo "Status: Ok"
while [ $(ping -qc 3 $testeip -I $iface1 > /dev/null 2>&1 ; echo $? ) = 0 ]
do
if [ $rota1 = 0 ]
then
rota1=1
route del -net default gw $gw2 dev $iface2
fi
done
route add -net default gw $gw2 dev $iface2
### LINK 2 ATIVO
clear
echo "Link em atividade: $nomeGw2"
echo "Interface:$iface2"
echo "Gateway:$gw2"
echo "Status: Ok"
while [ $(ping -qc 3 $testeip -I $iface2 > /dev/null 2>&1 ; echo $? ) = 0 ]
do
if [ $rota2 = 0 ]
then
rota2=1
route del -net default gw $gw1 dev $iface1
fi
done
### Se os links estiverem 'down', tenta uma reparação restartando a rede e chamando novamente o script:
if [ $(ping -qc 3 $testeip -I $iface1 > /dev/null 2>&1 ; echo $? ) != 0 ] || [ $(ping -qc 3 $testeip -I $iface2 > /dev/null 2>&1 ; echo $? ) != 0 ]
then
clear
echo "Sem conexao!"
echo "Tentando reparar..."
/etc/init.d/networking stop
/etc/init.d/networking start
iniciar
fi
}
parar(){
kill -9 `ps aux | grep $nomeScript | awk '{print $2}'`
echo "Morto"
exit
}
helpp(){
echo "Para executar o script, usa-se a seguinte sintaxe:"
echo " "
echo "Iniciar:"
echo "sh $nomeScript start"
echo "Parar:"
echo "sh $nomeScript stop"
echo "Rodar em modo background:"
echo "sh $nomeScript start &"
echo "Após rodar em background, verifique se está rodando:"
echo "ps aux | grep $nomeScript"
echo "Obs.: Não esquecer de configurar as VARIÁVEIS do script de acordo com sua rede."
echo " "
echo ""
echo " "
exit
}
case $1 in
'start') iniciar ; exit ;;
'stop') parar ; exit ;;
'--help') helpp ; exit ;;
*) echo "Parâmetro desconhecido: '$1'" ; echo "Utilize --help para informações. Exemplo: sh $nomeScript --help"; exit ;;
esac