URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 4428
[ Назад ]

Исходное сообщение
"Несколько вопросов по конфигу pf - не работает как надо :("

Отправлено UltraLaser , 23-Ноя-09 23:24 
Прошу помочь по ряду вопросов. Осваиваю файровол pf (во FreeBSD OpernBSD) и пишу свой первый кофиг. Получается пока плохо , но я не сдаюсь. Хотя временами думаю о жизни…А кстати предстоит вкусить плоды моего творчества юзверям в реальной сети в одной конторе. Компов 50. Если юзвери останутся без своего порно то боюсь начнутся массовые волнения в офисе. А не очень желаетльно :) Подскажите плиз по следующим вопросам:

1) По правилам NAT. Почему в большинстве конфигов основное правило трансляции записывают так
nat on $ext_if from $int_net to any ->($ext_if)

почему on  $ext_if ??? Ведь сначала трафик проходит через внутренний интерфейс затем выполняется трансляция, затем фильтрация затем роутинг, а затем уже трафик уходит в облачко через внешний интерфейс $ext_if. Т.е. в моей первой редакции правило было записано так

nat on $int_if from $int_net to any ->($ext_if)

Чего то я не понимаю – что означает on $ext_if – т.е я понимаю что означает – что там конкретно происходит – я видимо не очень догоняю этот момент.

2) Уж так вот вышло, но внешний айпишник (один всего) – т.е. гайтвей сети распределяется по DHCP. Нужно ли в КАЖДОМ правиле указывать ($ext_if) – т.е.  в круглых скобках. Для примера у меня например записано так

## 7.7. TCP porno browsing (правило для просмотра веб страниц пользователями)
table <tcp_udp> { tcp, udp}
pass out quick on $ext_if inet proto <tcp_udp> from any to any port www keep state
pass in quick $int_if from any port www to $int_net keep state

нужно ли заменять каждое $ext_if на ($ext_if) ?
Правильно ли написаны эти правила? Вернее спрошу так – какие ошибки в данных правилах – остальные (для smtp, pop, ftp итд) постараюсь сделать по аналогии – видимо я просто каких то базовых вещей не догоняю.

3) Правильно ли я понимаю что при анализе исходящего трафика правила фильтрации вообще не видят внутренний айпишник сети так как сначала выполняется NAT а потом уже фильтрацию. Т.е нельзя написать такое правило

$int_net=”192.168.0.1/24”
pass on $ext_if proto tcp from $int_net to any port www

потому что когда пакет дойдет до внешнего интерфейса то айпи в нем будет заменен на внешний айпи сети т.е на адрес гейтвея.  

Буду признателен за ответы, а то нескладуха с конфигом сильно огорчает  - спросил бы больше но боюсь что будет слишком много букв для чтения…
  


Содержание

Сообщения в этом обсуждении
"Несколько вопросов по конфигу pf - не работает как надо :("
Отправлено vagif , 24-Ноя-09 03:02 
>Если юзвери останутся без своего порно то боюсь начнутся массовые волнения в
>офисе.

порно в офисе - дело важное! ;)

>1) По правилам NAT. Почему в большинстве конфигов основное правило трансляции записывают
>так
>nat on $ext_if from $int_net to any ->($ext_if)

это можно перевести как - "навесить на внешний интерфейс NAT правило - если что-то приходит из внутренней сети в направлении наружу"

>видимо не очень догоняю этот момент.

представь картинку: INET  <=> ext_if <=> [ server ] <=> int_if <=> LAN
вот мы и вешаем правило на ext_if, чтобы оно смотрело и НАТило все пакеты, которые уходят наружу. Какоя смысл НАТить пакеты, который только пытаются зайти на сервер из int_if? (вдруг они наружу не хотят?) :)

>2) Уж так вот вышло, но внешний айпишник (один всего)

это нормально

>гайтвей сети распределяется по DHCP. Нужно ли в КАЖДОМ правиле указывать

не вижу связи между внешним IP и default gateway'ем, который выдается пользователям.
Внешний IP живет на ext_if, а default gateway для LAN должен жить на int_if. Вроде как их интересы никак не пересекаются...

>pass out quick on $ext_if inet proto <tcp_udp> from any to any port www keep state
>pass in quick $int_if from any port www to $int_net keep state

если все что тебе надо - это НАТить запросы во внешнюю сеть, то правилами fw можно вообще пренебречь. Просто пропиши
# default rule - pass from any to any
pass in  from any to any
pass out from any to any

и не заморачивайся.

>нужно ли заменять каждое $ext_if на ($ext_if) ?

вот, живой пример - nat on $ext_if from $int_net to any -> ($ext_if)
этого на все достаточно.

вот, примеры живых конфигов http://wiki.zeynalov.com/vagif:docs:freebsd:pf


"Несколько вопросов по конфигу pf - не работает как надо :("
Отправлено UltraLaser , 24-Ноя-09 17:02 
Спасибо большое за ответ  - что то начало проясняться.