Buckminster
(usa Debian)
Enviado em 12/01/2016 - 12:19h
Por exemplo, a regra
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
redireciona todo o tráfego que entra (-i) pela eth1 na porta 80 para a porta 3128 (no caso, a porta do Squid).
Vou te dar uma sugestão:
for i in 'cat /etc/lista.txt'
do
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
iptables -t mangle -A PREROUTING -s $i -j MARK --set-mark 2
iptables -t mangle -A PREROUTING -d $i -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -s $i -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -d $i -j MARK --set-mark 2
ip rule add fwmark 2 table 20 prio 20
ip route add default via xxx.xxx.xxx.xxx dev ethy table 20
ip route flush cache
done
Mas veja bem, caso tu tiver Squid na rede tenha o cuidado de o Squid não bloquear os sites dentro do arquivo lista.txt.
No lugar de eth1 e eth2 coloque as placas de rede dos links que tu tem, se tiver mais de dois acrescente mais uma regra.
IMPORTANTE: Em ethy tu coloca a placa de rede para a qual tu quer que os pacotes sejam direcionados.
Em xxx.xxx.xxx.xxx coloque o IP (gateway) da placa de rede ethy.
Dentro do arquivo lista.txt tu coloca os domínios e/ou sites (facebook.com, youtube.com,
www.site.com.br, etc, um por linha).
Recomendo fortemente que coloque somente URLs completas de sites, por exemplo,
www.site.com.br, em vez de domínios.
O caminho do arquivo lista.txt pode ser outro à tua escolha em vez de /etc/lista.txt.
Tu podes também colocar -I em vez de -A:
-A adiciona a regra na seqüência em que ela está no script (ou seja, a regra será lida e executada na ordem em que estiver no script do Iptables);
-I adiciona a regra no início da chain (no caso POSTROUTING, ou seja, a regra será executada primeiro que outra regra com -A independentemente da posição dela no script).
Com -I tu podes numerar as regras, exemplo:
for i in 'cat /etc/lista.txt'
do
iptables -t nat -I POSTROUTING 1 -o eth1 -j MASQUERADE
iptables -t nat -I POSTROUTING 2 -o eth2 -j MASQUERADE
iptables -t mangle -I PREROUTING 1 -s $i -j MARK --set-mark 2
iptables -t mangle -I PREROUTING 2 -d $i -j MARK --set-mark 2
iptables -t mangle -I OUTPUT 1 -s $i -j MARK --set-mark 2
iptables -t mangle -I OUTPUT 2 -d $i -j MARK --set-mark 2
ip rule add fwmark 2 table 20 prio 20
ip route add default via xxx.xxx.xxx.xxx dev ethy table 20
ip route flush cache
done
Basicamente marquei os pacotes que entram/saem para os sites/domínios colocados dentro do arquivo lista.txt e direcionei eles para a placa/gateway do link desejado.
Tu poderás ter um problema de leve lentidão para os sites que estão dentro do arquivo, pois o Iptables não lida muito bem com consultas remotas ao DNS. Mas faça esse teste, acredito que a lentidão não será muito significativa.
Caso não funcionar, verifique as outras regras que tu tem no Iptables.