Controlando 2 links de internet (roteados) em um gateway Linux com SQUID
Há algum tempo atrás precisei ativar 2 links dedicados e de fornecedores diferentes. Quando meu segundo link foi ativado, começou minha dor de cabeça. Não é simplesmente colocar o ip da nova operadora e ponto. Deve-se fazer muitas configurações para que isso funcione. E através de pesquisas consegui colocar essa solução para funcionar perfeitamente, veja aqui como ficou e espero que lhe ajude!
Parte 4: O iptables
Agora vamos partir para o iptables, é onde iremos determinar com qual ip os clientes vão sair, e se você tiver o SQUID é aqui que vamos redirecionar o tráfego dos clientes para o Squid.
A partir de agora será utilizado no NAT do iptables o "alvo" SNAT (Source NAT).
Como criamos no item anterior, os arquivos /etc/ips.link1 e /etc/ips.link2 que é onde guardamos os ips dos clientes que vão sair pelo link1 e pelo link2 respectivamente, agora vamos determinar no iptables como eles serão "NATeados". :)
Sobre o tratamento no iptables é basicamente isto. Agora se você utiliza o proxy SQUID, vamos ter que adicionar as seguintes regras antes destas regras acima:
Assim o tráfego para a porta 80 será redirecionada para a porta do SQUID.
O iptables é que comanda
Quando você tinha apenas um link, para permitir acesso externo bastava usar o mascaramento no iptables (MASQUERADE), mas com o iproute e 2 links na jogada as regras do negócio mudam.A partir de agora será utilizado no NAT do iptables o "alvo" SNAT (Source NAT).
Como criamos no item anterior, os arquivos /etc/ips.link1 e /etc/ips.link2 que é onde guardamos os ips dos clientes que vão sair pelo link1 e pelo link2 respectivamente, agora vamos determinar no iptables como eles serão "NATeados". :)
### script do iptables
# cuidado aqui é crase e não aspas simples
for ip in `cat /etc/ips.link1`
do
iptables -t nat -A POSTROUTING -s $ip -d 0/0 -j SNAT --to $link1_ip_local
done
for ip in `cat /etc/ips.link2`
do
iptables -t nat -A POSTROUTING -s $ip -d 0/0 -j SNAT --to $link2_ip_local
done
# cuidado aqui é crase e não aspas simples
for ip in `cat /etc/ips.link1`
do
iptables -t nat -A POSTROUTING -s $ip -d 0/0 -j SNAT --to $link1_ip_local
done
for ip in `cat /etc/ips.link2`
do
iptables -t nat -A POSTROUTING -s $ip -d 0/0 -j SNAT --to $link2_ip_local
done
Sobre o tratamento no iptables é basicamente isto. Agora se você utiliza o proxy SQUID, vamos ter que adicionar as seguintes regras antes destas regras acima:
for ip in `cat /etc/ips.link1`
do
iptables -t nat -A PREROUTING -s $ip -d 0/0 --dport 80 -j REDIRECT --to 3128
done
for ip in `cat /etc/ips.link2`
do
iptables -t nat -A PREROUTING -s $ip -d 0/0 --dport 80 -j REDIRECT --to 3128
done
do
iptables -t nat -A PREROUTING -s $ip -d 0/0 --dport 80 -j REDIRECT --to 3128
done
for ip in `cat /etc/ips.link2`
do
iptables -t nat -A PREROUTING -s $ip -d 0/0 --dport 80 -j REDIRECT --to 3128
done
Assim o tráfego para a porta 80 será redirecionada para a porta do SQUID.
:)