[FUG-BR] Testando IPFW NAT

Ricardo B. Volpato ricardobvolpato em yahoo.com.br
Quinta Agosto 20 19:05:25 BRT 2009


Novamente, vamos la.
Passei a utilizar o PF mesmo para fazer o NAT, pois com o IPFW não consegui.
Regras de nat do PF:
lan_net = "192.168.17.0/24"
ext_if1 = "re0"
ext_if2 = "rl1"
ext_gw1 = "192.168.28.1"
ext_gw2 = "192.168.29.1"
nat on $ext_if1 from $lan_net to ! $lan_net -> 192.168.28.2
nat on $ext_if2 from $lan_net to ! $lan_net -> 192.168.29.2

O nat funciona, consigo pingar o IP dos dois modem's ADSL (192.168.28.1 e 192.168.29.1)
Configurei as duas rotas com o setfib 0 e 1
setfib 0 route add default 192.168.28.1 e setfib 1 route add default 192.168.29.1
Com o comando setfib 0 ping registro.br recebo respostas.
Com o comando setfib 1 ping www.terra.com.br também recebo respotas.

Bom, apartir daí comecei os testes marcando os pacotes icmp para sair pelo gw2, o que ocorreu com sucesso. Conforme mostrado abaixo:
ipfw add 55 setfib 1 icmp from any to any
# tcpdump -i rl1 -n -p icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on rl1, link-type EN10MB (Ethernet), capture size 96 bytes
18:44:19.060237 IP 192.168.27.1 > 200.160.2.3: ICMP echo request, id 9659, seq 37033, length 40
18:44:19.184044 IP 200.160.2.3 > 192.168.27.1: ICMP echo reply, id 9659, seq 37033, length 40
18:44:20.060250 IP 192.168.27.1 > 200.160.2.3: ICMP echo request, id 9659, seq 37034, length 40
18:44:20.175981 IP 200.160.2.3 > 192.168.27.1: ICMP echo reply, id 9659, seq 37034, length 40

Os outros pacotes saem todos pelo gw1, sem executar nenhuma regra para que façam isso, depois do sucesso com o teste de ping criei uma regra para jogar a porta 80 pra cima do gw2, (ipfw add 50 setfib 1  all from 192.168.17.0/24 to any 80 in via rl0) isso não funcionou.
Nem mesmo se eu fizer ipfw add 55 setfib 1 tcp from any to any 80 não funciona. 
O ipfw possui algum esquema de logar os pacotes tipo o pass log do PF? Alguém sabe como utilizar?
Será que continuo fazendo alguma coisa errada?

Como eu já disse no post de ontem, no PF eu consigo fazer mas tenho um firewall em produção com uma quantia enorme de regras no IPFW, este firewall faz uma bridge para algumas redes de IPs publicos e Nat para duas redes de IPs privados, com controle de banda, etc... tudo no IPFW. Sem condições de migrar totalmente para o PF (com bastante esforço seria possivel), mas como tempo não não brota em árvore, por enquanto tem que ficar no IPFW mesmo.

Desculpem a insistencia no assunto, mas é de meu interesse resolver este problema e não sei mais onde procurar.


Mais detalhes sobre a lista de discussão freebsd