tosko
(usa Debian)
Enviado em 01/08/2010 - 16:33h
Ola boa tarde a todos.
Seguinte, tenho 2 links adsl em um servidor fazendo balanceamento de serviços (80 e 443 vai pro ppp1 e o resto pro ppp0), ok esta tudo funcionando.
o problema é o seguinte, no meu script que monta o balanceamento consta as linhas pon adsleth0 e pon adsleth1 que inicia os ppp, so que é o seguinte, as vezes o ppp1 inicia primeiro do que o ppp0 e as vezes o ppp0 inicia primeiro que o ppp1 e isto gera um problema porque na tabela de roteamento padrão do sistema as vezes o ppp1 ta em cima e as vezes o ppp0 esta em cima, e como o sistema rotea de acordo com a primeira rota que se encaixe se o ppp1 estiver em cima TUDO vai passar por ele e o ppp0 ficara inutilizado, já que eu só criei regras de direcionamento de 80 e 443 e o resto passa pela rota padrão
segue o meu scripts de inicialização pra ficar mais claro:
pon adsleth0
pon adsleth1
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp1 -j MASQUERADE
iptables -t mangle -A PREROUTING -i eth2 -p tcp --dport 80 -j MARK --set-mark 2
iptables -t mangle -A PREROUTING -i eth2 -p tcp --dport 443 -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -p tcp --dport 443 -j MARK --set-mark 2
ip rule add fwmark 2 table link2
ip route add default dev ppp1 table link2
ip route del default dev ppp1
a solução (gambiarra) que eu encontrei foi colocar esta ultima linha "ip route del default dev ppp1" porem, isto não fica perfeito, porque as vezes o sistema inicia e as discagens nem concluiram então como o sistema não monta o ppp1 nem o ppp0 então as rotas tambem nao são montadas e nada funciona, resumindo tenho que resolver muita coisa manualmente e se um dia eu não tiver aqui e a maquina for reiniciada é sujeito não levantar tudo pra funcionar o roteamento automaticamente. uma ideia que eu tive foi de que tipo depois da regra pon adsleth0 eu colocar tipo um tempo, de uns 15 segundos ai ele continua pon adsleth1 (mais 15 segundos) ai continua carregando o resto do script, se alguem souber fazer isto ou alguma solução melhor favor estou aqui para aprender.
Valeu des de já.