Здравствуйте! Проблема такая: есть сеть 192.168.1.0/24, шлюз 192.168.1.1 с pf на freebsd 7.0, который натит и пускает в инет. Делаю фильтрацию в pf с помощью тэгов. Выделяю подобно iptables пакеты которые форвардятся с локалки в инет и пакеты идущие непосредственно со шлюза в инет:block drop in on rl1 inet from 192.168.1.0/24 to ! 192.168.1.1 tag fwd_int_to_ext
block drop out on rl0 inet from xx.xx.xx.xx to any tag out_ext ! tagged fwd_int_to_ext
потом фильтрую по разным признакам, например:
pass quick inet proto tcp from any to 217.112.42.215 port = pop3 flags S/SA modulate state tagged fwd_int_to_ext
pass quick inet proto tcp from any to 217.112.42.215 port = smtp flags S/SA modulate state tagged fwd_int_to_ext
pass quick inet proto icmp all icmp-type echoreq keep state tagged fwd_int_to_ext
все что не нужно блочится, нужное ходит на ура, но захотелось мне пустить в инет по 123 udp порту только одну машинку 192.168.1.2, пишу:
pass quick inet proto udp from 192.168.1.2 to any port = ntp keep state tagged fwd_int_to_ext
в итоге под правило не попадает ни один udp пакет с 192.168.1.2 на 123 порт...
хотя так:
pass quick inet proto udp from any to any port = ntp keep state tagged fwd_int_to_ext
все работает, но доступ есть у всех, а это плохо...
я так понимаю pf просто не понимает что 192.168.1.2 содержится в 192.168.1.0/24 когда обрабатывает тэгированные пакеты... можно ли как-нибудь это обойти? или что-то не так я написал? спасибо