brunoalmeidam
(usa RedHat)
Enviado em 24/03/2008 - 11:22h
Amigos eu tenho um provedor de internet, e possuo 3 gateways de internet
gateway1 = 192.168.254.1
gateway2 = 192.168.253.1
gateway3 = 192.168.252.1
Utilizo ip route + iptables para determinar quais clientes saem pelo gateway1, gateway2, gateway3 segue script abaixo.
#Criado automaticamente
sudo echo 'Libera os Macs dos Gateways'
sudo /sbin/iptables -A FORWARD -m mac --mac-source 00:0B:23:03:AB:B2 -j ACCEPT
sudo /sbin/iptables -A FORWARD -m mac --mac-source 00:E0:7D:83:35:9E -j ACCEPT
sudo /sbin/iptables -A FORWARD -m mac --mac-source 00:19:5B:C4:90:5D -j ACCEPT
sudo /sbin/iptables -A FORWARD -m mac --mac-source 00:19:5B:C5:0E:F5 -j ACCEPT
echo 'Libera o mac das maquinas'
sudo iptables -A FORWARD -m mac --mac-source 00:18:E7:0F:7E:AB -s 10.0.0.99 -j ACCEPT
sudo iptables -A FORWARD -m mac --mac-source 00:0E:2E:D9:48:09 -s 10.0.0.100 -j ACCEPT
sudo iptables -A FORWARD -m mac --mac-source 00:40:F4:DD:2F:DB -s 10.0.0.237 -j ACCEPT
echo 'Mascara as saidas para os tres Gateways'
sudo /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 'Marca os pacotes de fora pra dentro e de dentro pra fora'
echo 'Libera o CPF: 090244277-54'
sudo /sbin/iptables -t mangle -A PREROUTING -i eth1 -s 10.0.0.99 -j MARK --set-mark 1
sudo /sbin/iptables -t mangle -A OUTPUT -s 10.0.0.99 -j MARK --set-mark 1
echo 'Libera o CPF: 089279577-84'
sudo /sbin/iptables -t mangle -A PREROUTING -i eth1 -s 10.0.0.100 -j MARK --set-mark 2
sudo /sbin/iptables -t mangle -A OUTPUT -s 10.0.0.100 -j MARK --set-mark 2
echo 'Libera o CPF: 057332957-59'
sudo /sbin/iptables -t mangle -A PREROUTING -i eth1 -s 10.0.0.237 -j MARK --set-mark 3
sudo /sbin/iptables -t mangle -A OUTPUT -s 10.0.0.237 -j MARK --set-mark 3
echo 'Encaminha os pacotes para as respectivas tabelas de rotas'
sudo ip rule add fwmark 1 table link1 prio 20
sudo ip rule add fwmark 2 table link2 prio 20
sudo ip rule add fwmark 3 table link3 prio 20
echo 'Crias as rotas para as respectivas tabelas de rotas'
sudo ip route add default via 192.168.254.1 dev eth0 table link1
sudo ip route add default via 192.168.253.1 dev eth0 table link2
sudo ip route add default via 192.168.252.1 dev eth0 table link3
echo 'LIMPA tabela de roteamento CACHE'
sudo ip route flush cache
echo 'NEGA O RESTANTE DOS MAC ADDRESS'
sudo iptables -A FORWARD -m mac --mac-source ! FF:FF:FF:FF:FF:FF -j DROP
sudo echo 'CONCLUIDO'
esse foi so um trecho do script uma vez que o script original tem muito mais linhas. então, isso funicona perfeitamente, porem tem um negocio que eu queria ver se dava para implementar que seria algo mais dinamico, por que se o link1 (gateway1) cair o cliente que esta marcado para sair pelo link1 simplemente para da fuincionar, eu queria saber se algum amigo de forum sabe uma forma de fazer com que ao cair o link1 (ou 2 ou 3) o cliente que esta direcionado a sair pelo link1 saia pelo link2, mas isso tem que ser somente se o link1 cair e nao alternadamente. fico no aguardo de uma ajuda
atenciosamente
Bruno Almeida