MaLblsH Опубликовано 9 декабря, 2008 · Жалоба Доброго времени суток! Имеются следующие правила в 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 должен был разрешить пакету пройти полный путь туда и обратно, или я где то путаюсь ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
GateKeeper Опубликовано 9 декабря, 2008 · Жалоба Читайте ман по pf. Там чуть ли не подчеркнуто сообщается, что firewall rules are traversed after NAT rules are applied. Так что выпускает оно уже свой внешний адрес. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 10 декабря, 2008 (изменено) · Жалоба Лучше использовать такие конструкции: 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 то провайдер вам врядли когданибуть что то отправит для локалок, ибо их там быть не должно. Изменено 10 декабря, 2008 пользователем Ivan_83 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...