Em 29-11-2011 09:51, Thiago Andrighetti escreveu:
Olá, O que dá para fazer é criar duas tabelas roteamento, sendo um gateway padrão diferente em cada rota, aí define-se a regra para qual tabela a ser usada em cada ping. Por exemplo, vamos pingar 8.8.8.8 primeiro pela tabela 101 e depois pela tabela 102, sendo GW1 o gateway 1 e GW2 o gateway 2 na interface eth0 com IP1 para o gateway1 e IP2 para gateway 2: # Gateways IP1=192.168.10.100 GW1=192.168.10.1 IP_PING1=8.8.8.8 IP2=10.0.0.100 GW2=10.0.0.1 IP_PING2=8.8.4.4 # Criar tabelas ip route flush table 101 ip route add default via $GW1 dev eth0 src $IP1 table 101 ip route flush table 102 ip route add default via $GW2 dev eth0 src $IP2 table 102 # Regra para direcionar os pings ip rule add to $IP_PING1 table 101 ip rule add to $IP_PING2 table 102 Pronto! Agora um traceroute ou ping no IP_PING1 vai pelo GW1 com IP1 e IP_PING2 vai pelo GW2 com IP2. Se quiser utilizar o mesmo IP de ping, então cria a regra para a tabela 101, pinga, apagar a regra para a tabela 101, criar a regra para a tabela 102, pinga, e assim vai. Para alterar a rota padrão caso caia o GW1 para o GW2 e se voltar o GW1 volte o padrão para GW1, avisando se GW2 está ativo ou não, de TEMPO em TEMPO, use: TEMPO=60 PADRAO='' while true; do ....if ping -c 3 $IP_PING1; then ........echo "GW1 passando..." ........if [ "$PADRAO" == "GW2" ]; then ............ip route del default ............ip route add default via $GW1 dev eth0 src $IP1 ............PADRAO=GW1 ............echo "Rota padrão alterada para GW1" ........fi ....else ........echo "GW1 não passando..." ........if [ "$PADRAO" == "GW1" ]; then ............ip route del default ............ip route add default via $GW2 dev eth0 src $IP2 ............PADRAO=GW2 ............echo "Rota padrão alterada para GW2" ........fi ....fi ....if ping -c 3 $IP_PING2; then ........echo "GW2 passando..." ....else ........echo "GW2 não passando..." ....fi ....sleep $TEMPO done []'s Junior Polegato |