Victor Sudakov wrote:
> Mykola Dzham wrote:
> > > > Попробовал изобразить то же самое на pf вместо ipfw. Только что nat не
> > > > путается под ногами (хотя это большое облегчение на самом деле), а так
> > > > примерно те же яйца.
> > > > 
> > > > В freebsd-questions посоветовали использовать в pf тэги ("This can be 
> > > > used,
> > > > for example, to provide trust between interfaces"), может с ними
> > > > красивый получится. С другой стороны, в ipfw тоже тэги есть.
> > > 
> > > В общем с тэгами наиболее красиво получается. Странно, что сразу в
> > > голову не пришло.
> > 
> > Это обманчивое впечатление. Вообще тэги в pf в данном случае это костыль
> > для решения проблемы что в pf в out правиле нельзя проверить через какой
> > интерфейс трафик попал в сервер.
> > 
> > > pass in on $dmz from any to any tag FROMDMZ
> > > pass in on $inside from any to any 
> > > block out on $inside tagged FROMDMZ
> > 
> > Для полной красоты надо было from any to any опустить (pf это позволяет).
> 
> Согласен, тем более что парсер всё равно заменяет "from any to any" на "all".
> 
> > А так во первых прямым аналогом этих правил на ipfw будет что-то типа
> > 
> > permit ip from any to any in recv $dmz
> > permit ip from any to any in recv $inside
> > deny ip from any to any out recv $dmz xmit $inside
> 
> У тебя keep-state нет, IMHO твои правила не пропустят возвратный трафик
> из dmz в inside.

Ну да, нужно добавить еще keep-state (который в pf тоже есть, просто
автоматически добавляется)
 
> > 
> > Что, менее красиво? по моему один фиг.
> 
> Это пока не начнешь голову ломать, куда бы теперь приткнуть nat и
> keep-state.

keep-state в конце правил, nat там, где надо натить. Ничего сложного там
нет.
Вот когда что-то пытаешься приткнуть в pf, вот тогда точно сломаешь
голову. nat еще ладно, а шейп нарисовать это будет полный капец. Начнем
с того, что tag в pf обязательно требует keep state. queue из правила,
создающего state, запоминается в динамическом правиле. В результате
добавить в эту схему с tag элементерное: раздельный шейп на трафик
изнутри наружу и на трафик снаружи внутрь становится не реально.
 
> > А во вторых эти правила не описывают поведение pix с тремя интерфейсами.
> 
> Ну вот эти вроде уже описывают:
> 
> 
> pass in on $dmz tag FROMDMZ
> pass in on $inside 
> block out on $inside tagged FROMDMZ
> block in on $outside all
> pass out on $outside all
> 
> Правила типа "pass in on $outside proto tcp ..." расставить по вкусу.

Я бы не писал вперемешу in и out правила - все-равно на входе будут
проверяться только in правила, а на выходе только out, но в то же время
такой перемешанные порядок создаёт ложное впечатление что пакет будет
проверяться по этим правилам последовательно, как они написаны.

Эти правила переводятся практически дословно на ipfw, только без
костылей с tag, а прямым указанием recv <ifname> xmit <ifname>

-- 
LEFT-(UANIC|RIPE)
JID: [email protected]
PGP fingerprint: 1BCD 7C80 2E04 7282 C944  B0E0 7E67 619E 4E72 9280

Ответить