Jump to content
Калькуляторы

PF в FreeBSD 7.0 Странность в pf

Доброго времени суток!

Имеются следующие правила в PF на шлюзе в интернет:

ext_if = "em1"
int_if = "em0"
table <LAN> const { 192.168.0.0/16, 10.0.0.0/8, 197.0.0.0/8 }
nat on $ext_if from <LAN> to any -> ВНЕШНИЙ_IP
....
##
##      Default DENY policy
##
block on { $ext_if, $int_if } all

pass in quick on $int_if from <LAN> to any keep state
pass in quick on $ext_if from any to <LAN> keep state

И если в конце не добавить правило

pass out quick on $ext_if from ВНЕШНИЙ_IP to any keep state

то не работает интернет у ip'шников которые находят в таблице LAN.

 

А ведь правила для таблицы LAN создавались с keep state и по идее pf должен был разрешить пакету пройти полный путь туда и обратно, или я где то путаюсь ?

Share this post


Link to post
Share on other sites

Читайте ман по pf. Там чуть ли не подчеркнуто сообщается, что firewall rules are traversed after NAT rules are applied. Так что выпускает оно уже свой внешний адрес.

Share this post


Link to post
Share on other sites

Лучше использовать такие конструкции:

 

nat on $ext_if inet from !($ext_if) to any -> ($ext_if) # Nat to internet

# Rules: nat and routing
pass out quick on $ext_if from ($ext_if) to any flags S/SA modulate state # allow out from nated if

# rules
pass out quick on $int_if inet proto { tcp, udp } from !(self:network) to $int_if:network flags S/SA modulate state # conn from ext
pass in quick on $int_if inet proto { tcp, udp } from $int_if:network to !(self:network) flags S/SA modulate state # conn to ext

 

Вообще, почитайте: http://www.bsd.md/BSDA/BSDCert/BSDA-course...tml#firewall-pf

 

А не работает потому что после того как НАТ оттранслировал траффик, ПФ-у должно быть разрешено его выпустит.

А без последнего правила вы только разрешили впускать траффик в ПФ из лан для любых сетей ("pass in quick on $int_if from <LAN> to any keep state"),

а вот правило "pass in quick on $ext_if from any to <LAN> keep state" смысла не имеет, ибо в нём написано, что внешнему интерфейсу разрешено принимать входящий траффик для локальных сетей, но они у вас за натом, и если у вас внешний ИП на ext_if то провайдер вам врядли когданибуть что то отправит для локалок, ибо их там быть не должно.

Edited by Ivan_83

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this