[BSD] PF nat és filter
Péchy Gáspár
gpechy at ggg.hu
2012. Feb. 13., H, 17:22:29 CET
Szervusztok,
egy kis segítségre lenne szükségem tisztázandó néhány ellentmondást.
A PF műveletek végrehajtási sorrendjére több helyen is az alábbinak megfelelő infót kaptam:
'Filtering is performed before Network Address Translation (NAT) for transmitted datagrams, and
after NAT for received datagrams. This allows you to filter on the "Actual LAN Address" as opposed
to the "Apparent Gateway Address".'
Ez érthetőnek, s logikusnak tűnik, de ellentmodani látszik tapasztalatomnak:
A környezet:
Egy kábelen bejövő több IP, ami FreeBSD firewallra kapcsolódik, ami egy másik NIC-en at switchen
keresztül szolgálja ki a szervereket.
Internet <-> em0(a.b.c.{xyz}) <-> Freebsd-Firewall <-> em1 <-> switch(10.0.0.{xyz})
a pf conf releváns része az alábbi:
==============================================
...
ext_ip1 = "a.b.c.x"
int_ip1 = "10.0.0.x"
ext_ip2 = "a.b.c.y"
int_ip2 = "10.0.0.y"
...
binat on em0 inet from $int_ip1 to any -> $ext_ip1
binat on em0 inet from $int_ip2 to any -> $ext_ip2
...
block all
....
================================================
Namármost:
pass out quick on em0 inet proto tcp from $_ext_ip2 to any flags S/SA keep state queue extq_a
kiengedi a forgalmat, míg a
pass out quick on em0 inet proto tcp from $_int_ip2 to any flags S/SA keep state queue extq_b
nem
Ergó, nem a belső, hanem a külső IP-n kell szűrnöm, ami ellentmondani látszik a papírformának.
Előre is köszönettel a felhomályosításért
Gazsi
További információk a(z) BSD levelezőlistáról