Страница 1 из 1

block all в pf

Добавлено: 2012-09-22 20:36:49
carharot
Всем привет.

Люди. Помогите, пожалуйста настроить pf. Полный новичек в этом деле.
Ищу уже целый .. блин больше суток точно правило - почему block all стоит в pf не в конце, а (вот не найду хоть тресни!!!) где-то в середине правил.

Прочитал статью http://www.lissyara.su/articles/openbsd/pf/pf/ по настройке pf. Попробовал воспроизвести это дело, но постоянно сталкиваюсь с проблемой, что нет доступа с локальной машины, где этот pf стоит, в инет. При этом, клиентские локальные машины спокойно через нее в инет ходят.
Логично предположить, что правило "pass out on $ext_if_cheap from $ext_if_cheap to any" как бы ее пускать должно, но нет.

ping ya.ru
ping: cannot resolve ya.ru: Host name lookup failure

таблица двояка:

Код: Выделить всё

pfctl -sa
pfctl -sa
TRANSLATION RULES:
nat on tun0 inet from 192.168.1.0/24 to any -> (tun0) round-robin
nat on tun0 inet from 192.168.2.0/24 to any -> (tun0) round-robin

FILTER RULES:
scrub in all fragment reassemble
block drop in quick on ! tun0 inet from x.x.x.x to any
block drop in quick inet from x.x.x.x to any
block return all
pass out on tun0 inet from x.x.x.x to any flags S/SA keep state
pass out on tun0 inet from 192.168.1.0/24 to any flags S/SA keep state
pass out on tun0 inet from 192.168.2.0/24 to any flags S/SA keep state
pass log inet proto icmp all icmp-type echoreq keep state
pass log inet proto icmp all icmp-type unreach keep state

правила:
ext_if_cheap="tun0"
int_if="nfe0"
icmp_types="{ echoreq, unreach}"
trusted_lan="{ 192.168.1.0/24, 192.168.2.0/24 }"
untrusted_lan="10.0.0.0/8"
localnet="127.0.0.0/8"
set block-policy return
set skip on lo0
set skip on $int_if
scrub in all
nat on $ext_if_cheap from $trusted_lan to any -> ($ext_if_cheap)
antispoof quick for $ext_if_cheap
block all
pass out on $ext_if_cheap from $ext_if_cheap to any keep state
pass out on $ext_if_cheap from $trusted_lan to any keep state
pass log inet proto icmp all icmp-type $icmp_types
если выключить pf, пинг на внешние хосты идет.

почему pf не пускает локальную машину?

Re: block all в pf

Добавлено: 2012-09-22 20:53:43
carharot
забыл добавить.
Пинг по адресам идет ок.
Проблема при обращении к именам хостов. выключаем pf, пинг по именам идет.
пинг dns адресов провайдера идет в обоих случаях.

Re: block all в pf

Добавлено: 2012-09-22 21:02:36
carharot
разобрался, но не до конца.
локальная машина с поднятым dns
добавление в resolv.conf петли решило проблему.

это мой косяк
запрещено хождение с моего внешнего адреса на мой же внешний адрес.
кстати, если антиспуф в тех правилах убрать, то без изменения resolv.conf один фик не пускало. видимо, есть какие-то умолчания в самом pf.

Re: block all в pf

Добавлено: 2012-09-24 15:47:12
skeletor
pf работает про принципу - последнее совпавшее правило, а не первое, как у многих файерволов. Но это можно так же изменить, если указать параметро quick. Тогда правило сработает сразу и остальные проверяться не будут.