Vamos imaginar o seguinte cenário (nosso proxy é
Squid e nosso
firewall é
iptables, ambos rodando na mesma máquina:
- Uma rede com IPs inválidos --- FW-Proxy --- Internet;
- Diretor (também com IP inválido, mas com privilégios!) -- FW-Proxy -- Internet.
Vamos (ufa, finalmente!) às regras para a situação mais comum.
Toda a rede poderá enviar e receber e-mail para qualquer domínio da Internet:
1- Permitir que as respostas às conexões iniciadas por nossa rede sejam aceitas:
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
2 - Permitir que nossa rede faça consultas a DNS:
iptables -A FORWARD -p UDP -s $REDE --dport 53 -j ACCEPT
3 - Vamos deixar todas as solicitações da nossa rede com destino a
porta 110, para baixarem e-mail de qualquer lugar:
iptables -A FORWARD -p tcp -s $REDE --dport 110 -j ACCEPT
4 - Vamos, também, deixar nossa rede enviar e-mail; para este caso
nossa rede precisará se conectar a um Servidor SMTP:
iptables -A FORWARD -p tcp -s $REDE --dport 25 -j ACCEPT
Estas conexões precisam de um IP válido. Só que não é seguro deixar o
POSTROUTING liberado para tudo que sai pela nossa eth_ext. Neste caso,
iremos fazê-lo apenas para o que é realmente necessário:
iptables -t nat -A POSTROUTING -p UDP -s $REDE --dport 53 -j SNAT --to IP_placa_ligada_ao_modem
iptables -t nat -A POSTROUTING -p tcp -s $REDE --dport 110 -j SNAT --to IP_placa_ligada_ao_modem
iptables -t nat -A POSTROUTING -p tcp -s $REDE --dport 25 -j SNAT --to IP_placa_ligada_ao_modem
Se você não sabe o IP de sua placa ligada ao modem, use -j MASQUERADE.
Vamos imaginar agora, o seguinte:
- Toda a nossa rede poderá receber e enviar e-mail APENAS para a matriz, PORÉM o diretor poderá receber e enviar para qualquer lugar:
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p UDP -s $REDE --dport 53 -j ACCEPT
iptables -A FORWARD -p tcp -s $REDE -d www.matriz.com.br --dport 110 -j ACCEPT
iptables -A FORWARD -p tcp -s $REDE -d www.matriz.com.br --dport 25 -j ACCEPT
iptables -A FORWARD -p tcp -s $IP_DIRETOR --dport 110 -j ACCEPT
iptables -A FORWARD -p tcp -s $IP_DIRETOR --dport 25 -j ACCEPT
Até agora fizemos o FORWARD, só que como os IPs de nossa rede são
inválidos, precisamos fazer NAT, entretanto não faremos NAT para todas as
saídas, porque senão o proxy vai virar água... faremos NAT apenas
para o que é necessário (vamos pegar os exemplos que estão logo
acima):
iptables -t nat -A POSTROUTING -p UDP -s $REDE --dport 53 -j SNAT --to IP_placa_ligada_ao_modem
iptables -t nat -A POSTROUTING -p tcp -s $REDE -d www.matriz.com.br --dport 110 -j SNAT --to IP_placa_ligada_ao_modem
iptables -t nat -A POSTROUTING -p tcp -s $REDE -d www.matriz.com.br --dport 25 -j SNAT --to IP_placa_ligada_ao_modem
iptables -t nat -A POSTROUTING -p tcp -s $IP_DIRETOR --dport 110 -j SNAT --to IP_placa_ligada_ao_modem
iptables -t nat -A POSTROUTING -p tcp -s $IP_DIRETOR -d www.matriz.com.br --dport 25 -j SNAT --to IP_placa_ligada_ao_modem
Se você usa pppoe, coloque -j MASQUERADE.
Xxoin