Peço desculpas àqueles que ainda esperam para fazer a transição das versões 2.0 (ipfwadm) e 2.2 (ipchains). Há notícias boas e ruins.
Primeiramente, pode-se usar ipchains ou ipfwadm como antes. Para fazer isto, carregue os módulos do kernel `ipchains.o' ou `ipfwadm.o' que estão na sua distribuição do netfilter. Tais módulos são incompatíveis (você está avisado!), e não podem ser utilizados em conjunto com quaisquer outros módulos do netfilter.
Tendo estes módulos instalados, ipchains e ipfwadm podem ser utilizados normalmente, com as seguintes diferenças:
Hackers também notarão:
Masquerading é o que a maioria das pessoas quer. Se você tem um IP dinâmico via PPP (se você não sabe, você tem um), e quer apenas passar para sua máquina que todos os pacotes vindos da sua rede interna deve parecer que têm como origem sua máquina com uma conexão dialup PPP.
# Carregar o módulo NAT (isso carrega todos os outros.
modprobe iptable_nat
# Na tabela NAT (-t nat), adicionar uma regra (-A) após o routing
# (POSTROUTING) para todos os pacotes saindo por ppp0 (-o ppp0) dizendo para
# MASCARAR a conexão (-j MASQUERADE).
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Habilitar IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
Note que você não está filtrando nenhum pacote aqui: para isso, veja o Packet Filtering HOWTO (Como fazer filtragem de pacotes): `Misturando NAT e Filtragem de Pacotes'.
O ipmasqadm era utilizado por um menor número de usuários, então não me preocupei muito com a compatibilidade de versões anteriores. Você pode utilizar `iptables -t nat' para fazer port forwarding. No Linux 2.2 você faria:
# Linux 2.2
# Transformar pacotes TCP indo para a porta 8080 de 1.2.3.4 para a porta 80 de 192.168.1.1's
ipmasqadm portfw -a -P tcp -L 1.2.3.4 8080 -R 192.168.1.1 80
Agora, você faria:
# Linux 2.4
# Adicionar uma regra em pre-routing (-A PREROUTING) para a tabela NAT (-t nat) na qual
# pacotes TCP (-p tcp) indo para 1.2.3.4 (-d 1.2.3.4) na porta 8080 (--dport 8080)
# têm seu destino trocado (-j DNAT) para 192.168.1.1, porta 80
# (--to 192.168.1.1:80).
iptables -A PREROUTING -t nat -p tcp -d 1.2.3.4 --dport 8080 \
-j DNAT --to 192.168.1.1:80
Se você quer que esta regra altere também as conexões locais (a NAT box tentando conectar-se via telnet com o endereço 1.2.3.4 porta 8080, ela chegará no endereço 192.168.1.1 porta 80), você pode inserir a mesma regra na chain OUTPUT (que serve para pacotes de saídagerados localmente):
# Linux 2.4
iptables -A OUTPUT -t nat -p tcp -d 1.2.3.4 --dport 8080 \
-j DNAT --to 192.168.1.1:80