Перейти к содержимому
Калькуляторы

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 должен был разрешить пакету пройти полный путь туда и обратно, или я где то путаюсь ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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 то провайдер вам врядли когданибуть что то отправит для локалок, ибо их там быть не должно.

Изменено пользователем Ivan_83

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.