тел. 8 917 186 46 79  ICQ: 576942540   mail: support@it-advisor.ru

pfSense: популярный дистрибутив для создания роутера
Ульяна Сме­лая

Для ор­га­низа­ции сов­мест­но­го дос­ту­па в Сеть и за­щиты внут­ренних ре­сур­сов ад­ми­нист­ра­торы со ста­жем пред­по­чита­ют ис­поль­зо­вать спе­ци­али­зиро­ван­ные ми­ни-дист­ри­бути­вы, пост­ро­ен­ные на ба­зе уре­зан­ных вер­сий Li­nux или BSD. C их по­мощью мож­но лег­ко прев­ра­тить ма­ломощ­ный комп в на­деж­ный марш­ру­тиза­тор. К по­доб­ным ре­шени­ям как раз и от­но­сит­ся pfSen­se.

О про­ек­те

В сен­тябре 2004 го­да стар­то­вал про­ект pfSen­se (www.pfsen­se.com), ос­новное наз­на­чение ко­торо­го – прев­ра­щение обыч­но­го ком­па в ро­утер с прод­ви­нуты­ми функ­ци­ями меж­се­тево­го эк­ра­на. Ро­дитель­ским дист­ри­бути­вом был m0n0wall (предс­тав­ля­ет со­бой ми­ни-вер­сию Fre­eBSD для соз­да­ния марш­ру­тиза­торов и фай­рво­лов на ба­зе без­диско­вых сис­тем, с заг­рузкой с CD-ROM или Flash-кар­ты). Ог­ра­ниче­ния «ро­дите­ля» (скром­ные воз­можнос­ти, жест­кие ли­миты по раз­ме­ру, стро­гое ори­ен­ти­рова­ние на встро­ен­ные уст­рой­ства) бы­ли не по ду­ше Кри­су Бой­хле­ру, и он взял­ся за соз­да­ние но­вого дист­ри­бути­ва.

За нес­коль­ко лет раз­ра­бот­ки функ­ци­ональ­ность бы­ла уве­личе­на на по­рядок (по срав­не­нию с «па­пашей»), кро­ме то­го, зна­читель­но воз­росло ко­личест­во дос­тупных при­ложе­ний. Се­год­ня поль­зо­вате­ли по­лучи­ли бесп­лат­ное ре­шение, по сво­им воз­можнос­тям не ус­ту­па­ющее не­кото­рым ком­мерчес­ким. Пла­той за функ­ци­ональ­ность пос­лу­жил чуть боль­ший раз­мер дист­ри­бути­ва и бо­лее вы­сокие тре­бова­ния, предъяв­ля­емые к ап­па­рат­ной час­ти, в част­нос­ти, к объему ОЗУ (хо­тя по сов­ре­мен­ным мер­кам они не вы­соки).

В pfSen­se был вы­пол­нен тех­ни­чес­кий ре­дизайн. Так, ес­ли m0n0wall во вре­мя ра­боты прак­ти­чес­ки не об­ра­ща­ет­ся к жест­ко­му дис­ку и дер­жит наст­рой­ки в ос­новном в ОЗУ (что, в об­щем-то, оп­равда­но), то pfSen­se ра­бота­ет как обыч­ный дист­ри­бутив. И хо­тя дос­тупна Em­bedded-вер­сия для встро­ен­ных уст­рой­ств, это нап­равле­ние не яв­ля­ет­ся при­ори­тет­ным.

Те­кущая вер­сия pfSen­se 1.2, вы­шед­шая в фев­ра­ле 2008 го­да, ба­зиру­ет­ся на Fre­eBSD 6.2. С ней мы и поз­на­комим­ся.

Воз­можнос­ти pfSen­se

В ка­чест­ве средс­тва филь­тра­ции в pfSen­se ис­поль­зу­ет­ся «опе­ноч­ный» Pac­ket Fil­ter с ин­тегри­рован­ным ALTQ и под­держ­кой нор­ма­лиза­ции па­кетов. Са­мо со­бой, есть и NAT, ста­тичес­кие марш­ру­ты, VLAN. Ро­утер мож­но пе­ревес­ти в ре­жим проз­рачно­го мос­та. В от­ли­чие от m0n0wall, под­держи­ва­ет­ся ра­бота с нес­коль­ки­ми WAN-ин­терфей­са­ми – с ба­лан­си­ров­кой, как ис­хо­дящих, так и вхо­дящих со­еди­нений. Это обес­пе­чит рав­но­мер­ное расп­ре­деле­ние наг­рузки по нес­коль­ким сер­ве­рам. Под­держ­ка про­токо­ла CARP (Com­mon Add­ress Re­dun­dancy Pro­tocol) поз­во­ля­ет ор­га­низо­вать от­ка­зо­ус­той­чи­вый клас­тер шлю­зов.

Но тип ка­нала для WAN име­ет ог­ра­ниче­ния. С про­токо­лами PPPoE, PPTP или Big­Pond (авс­тра­лий­ский ин­тернет-про­вай­дер) мо­жет быть наст­ро­ен толь­ко один внеш­ний ка­нал. Ос­таль­ные се­тевые ин­терфей­сы долж­ны по­лучать ста­тичес­кий или ди­нами­чес­кий IP ад­рес.

Кро­ме то­го, в сос­тав pfSen­se вхо­дят: сер­вер и кли­ент PPPoE, сер­вер и агент рет­ранс­ля­ции DHCP, сер­вер DNS, FTP прок­си, Cap­ti­ve Por­tal с воз­можностью аутен­ти­фика­ции че­рез RA­DI­US. Име­ют­ся средс­тва для подк­лю­чения к вир­ту­аль­ным част­ным се­тям и ор­га­низа­ции та­кого сер­ви­са по про­токо­лам IP­sec, PPTP, OpenVPN. Под­держи­ва­ет­ся SNMP, а RRD-гра­фики поз­во­ля­ют в наг­лядном ви­де по­лучить ин­форма­цию о заг­рузке сис­тем, ка­налов и пр.

Все наст­рой­ки про­из­во­дят­ся при по­мощи по­нят­но­го веб-ин­терфей­са, ко­торый, хоть и не ло­кали­зован (ра­боты ве­дут­ся), но при ба­зовом анг­лий­ском и зна­нии се­тей ос­ва­ивает­ся за нес­коль­ко ча­сов.

Есть воз­можность ус­та­нов­ки с сай­та pfSen­se до­пол­ни­тель­ных па­кетов, рас­ши­ря­ющих и без то­го не­малые функ­ции. Так­же мож­но поп­ро­бовать до­бавить нуж­ный па­кет с бли­жай­ше­го зер­ка­ла Fre­eBSD при по­мощи ути­литы pkg_add.

Единс­твен­ный на се­год­няшний день не­дос­та­ток про­ек­та – нет нор­маль­ной до­кумен­та­ции. Все, что ка­салось пре­дыду­щего ре­лиза, ус­та­рело и уже уда­лено с doc.pfsen­se.org. Под но­вую вер­сию HOW­TO'шки толь­ко на­чина­ют по­яв­лять­ся. По­это­му единс­твен­ным пол­но­цен­ным до­кумен­том мож­но счи­тать m0n0wall Hand­bo­ok (doc.m0n0.ch/hand­bo­ok), ко­торый ка­са­ет­ся pfSen­se лишь час­тично, а так­же нес­коль­ко flash-ру­ководств и ви­де­оуро­ков.

За­пус­ка­ем в ра­боту

На зер­ка­лах, спи­сок ко­торых дос­ту­пен на стра­нице заг­рузки про­дук­та, вы­ложе­ны две вер­сии pfSen­se: для встро­ен­ных уст­рой­ств и Li­veCD-Ins­tal­ler. Вто­рой ва­ри­ант бо­лее уни­вер­саль­ный, пос­коль­ку мо­жет ра­ботать и как Li­veCD, и ус­та­нав­ли­вать­ся на жест­кий диск. Раз­мер дист­ри­бути­ва не­боль­шой – все­го 60 Мб.

Ми­нималь­ные тре­бова­ния, предъяв­ля­емые к же­лезу, сле­ду­ющие: компьютер с час­то­той про­цес­со­ра 100 МГц, 128 Мб опе­ратив­ной па­мяти и диск объемом 1 Гб для ус­та­нов­ки сис­те­мы. Для Em­bedded дан­ные ана­логич­ны, толь­ко для ус­та­нов­ки дос­та­точ­но иметь 128 Мб флеш­ку. Та­кой компьютер бу­дет без проб­лем обс­лу­живать 10-ме­габит­ную сет­ку с не­об­хо­димы­ми функ­ци­ями, но при уве­личе­нии ско­рос­ти или функ­ций (нап­ри­мер, подс­че­те тра­фика) тре­бу­ет­ся бо­лее мощ­ное обо­рудо­вание. При ус­та­нов­ке есть воз­можность выб­рать яд­ро с под­держ­кой мно­гоп­ро­цес­сорных сис­тем, по­это­му под ро­утер мож­но сме­ло за­дей­ство­вать са­мый сов­ре­мен­ный компьютер. Бо­лее конк­рет­ные тре­бова­ния для раз­ных ва­ри­ан­тов ис­поль­зо­вания pfSen­se опи­саны на сай­те про­ек­та в до­кумен­те «Hard­wa­re Si­zing Gu­idan­ce». Ин­форма­цию о сов­мести­мом обо­рудо­вании мож­но най­ти в «Fre­eBSD 6.2 Hard­wa­re Com­pa­tibi­lity List» на сай­те Fre­eBSD.

Итак, за­писы­ва­ем об­раз и заг­ру­жа­ем­ся. Скрип­ты заг­рузки про­ана­лизи­ру­ют име­ющееся обо­рудо­вание. Пос­ле ини­ци­али­зации бу­дет вы­веден спи­сок се­тевых карт с пред­ло­жени­ем наст­ро­ить VLAN-, LAN- и WAN- се­тевые ин­терфей­сы. Сна­чала идет VLAN:

Do you want to set up VLANs now [y|n]?

В прин­ци­пе, ес­ли наст­рой­ки се­ти из­вест­ны, то VLAN мож­но за­дей­ство­вать пря­мо сей­час, на­жав «y» и вве­дя pa­rent-ин­терфейс (спи­сок се­тевух бу­дет вы­веден пов­торно). Од­на­ко боль­шинс­тву поль­зо­вате­лей бу­дет удоб­нее при по­мощи кон­со­ли наст­ро­ить лишь внут­ренний LAN-ин­терфейс. Ос­таль­ные же скон­фи­гури­ровать при по­мощи гра­фичес­ко­го ме­ню. Ес­ли вы­ход в Сеть про­из­во­дит­ся че­рез PPPoE или PPTP, то из-за спе­цифи­ки веб-ин­терфей­са при­дет­ся в лю­бом слу­чае под­ни­мать VLAN (в раз­де­ле «Наст­рой­ка че­рез веб» я по­кажу, как это сде­лать). На сле­ду­ющем ша­ге скрипт пред­ло­жит ввес­ти наз­ва­ние LAN-ин­терфей­са.

En­ter a LAN in­terfa­ce na­me or `a` for auto­detec­ti­on: fxp0

Ана­логич­но наст­ра­ивает­ся WAN и до­пол­ни­тель­ные (Op­ti­onal) ин­терфей­сы. Впос­ледс­твии вмес­то Op­ti­onal им мож­но дать лю­бое дру­гое наз­ва­ние (нап­ри­мер, DMZ). Ког­да наст­рой­ки за­кон­че­ны, на­жима­ем . Скрипт вы­ведет те­кущие наст­рой­ки.

LAN -> fxp0
WAN -> fxp1

Подт­вер­жда­ем ус­та­нов­ки на­жати­ем «y» и ждем, по­ка заг­ру­зит­ся сис­те­ма.

Do you want to pro­ces­sed [y|n]?y

Уга­дать име­на при на­личии двух оди­нако­вых се­тевых кар­то­чек без зна­ния их МАС-ад­ре­сов час­то бы­ва­ет тя­жело­вато. По­это­му, ес­ли что-то не ра­бота­ет, прос­то по­меняй мес­та­ми ин­терфей­сы в наст­рой­ках или пе­реподк­лю­чи про­вода. Ес­ли бу­дет об­на­руже­но толь­ко од­но се­тевое уст­рой­ство, по­явит­ся пре­дуп­режде­ние о не­воз­можнос­ти ра­боты в ре­жиме ро­уте­ра.

Как и в m0n0wall, LAN-ин­терфейс ав­то­мати­чес­ки по­луча­ет ад­рес 192.168.1.1, а WAN – при по­мощи DHCP. Пос­ле ини­ци­али­зации сис­те­мы по­явит­ся сис­темное ме­ню наст­рой­ки pfSen­se, ввер­ху ко­торо­го от­ра­жены те­кущие ус­та­нов­ки Се­ти:

*LAN -> fxp0 -> 192.168.1.1
*WAN -> fxp1 -> 192.168.175.128(DCHP)

Ког­да IP-ад­рес ин­терфей­са WAN наз­на­ча­ет­ся ста­тичес­ки, то при оп­ре­делен­ных наст­рой­ках Се­ти, пос­ле по­яв­ле­ния «Con­fi­guring WAN In­terfa­ce», сис­те­ма как бы за­виса­ет, пы­та­ясь по­лучить нуж­ный ад­рес. К со­жале­нию, про­пус­тить наст­рой­ку WAN ни­как нель­зя, при­дет­ся по­дож­дать. Встре­ча­ет­ся та­кой «эф­фект» не всег­да, но луч­шим вы­ходом, ес­ли что, бу­дет отк­лю­чение внеш­не­го ка­беля, тог­да скрипт быст­рее пе­рей­дет к сле­ду­юще­му эта­пу.

Пос­ле ини­ци­али­зации по­яв­ля­ет­ся ме­ню, сос­то­ящее из 15 пунк­тов. От­сю­да мож­но пе­резаг­ру­зить, ос­та­новить и об­но­вить сис­те­му, сбро­сить наст­рой­ки и па­роль ад­ми­нист­ра­тора веб-ин­терфей­са, про­верить дос­тупность уз­ла при по­мощи ко­ман­ды ping, прос­мотреть вы­вод pftop и жур­на­лы сер­ве­ра, вый­ти в shell. Пе­реназ­на­чить се­тевые ин­терфей­сы, мож­но выб­рав пункт 1 – As­sign In­terfa­ces. Пос­ле че­го пов­то­ря­ем все ша­ги, опи­сан­ные вы­ше. Что­бы ус­та­новить дру­гой IP-ад­рес для LAN, на­жима­ем циф­ру 2 (Set LAN IP add­ress). За­тем пос­ле­дова­тель­но вво­дим но­вый IP-ад­рес и се­тевую мас­ку. Пос­ледним воп­ро­сом бу­дет:

Do you want to enab­le the DCHP ser­ver on LAN [y|n]?

От­ве­ча­ем, в за­виси­мос­ти от то­го, нуж­но сей­час за­пус­тить DHCP-сер­вер для раз­да­чи ад­ре­сов во внут­ренней се­ти или нет. По окон­ча­нии наст­рой­ки скрипт вы­водит IP-ад­рес, ко­торый нуж­но на­бирать в стро­ке веб-бра­узе­ра, что­бы по­лучить дос­туп к веб-ин­терфей­су.

Под циф­рой 99 на­ходит­ся пункт, поз­во­ля­ющий ус­та­новить pfSen­se на жест­кий диск. Пос­ле ус­та­нов­ки он из ме­ню ис­че­за­ет. Кста­ти, дист­ри­бутив не­обя­затель­но ус­та­нав­ли­вать: ес­ли вста­вить дис­ке­ту, при вык­лю­чении все наст­рой­ки бу­дут сох­ра­нены на нее.

Ус­та­нов­ка pfSen­se на хард

Нес­мотря на то, что pfSen­se – это уре­зан­ная вер­сия Fre­eBSD, его ус­та­нов­ка очень прос­та и не тре­бу­ет ка­ких-ли­бо спе­цифи­чес­ких зна­ний сис­те­мы. Мас­тер ус­та­нов­ки, по­яв­ля­ющиий­ся пос­ле вво­да 99 (Ins­tall pfSen­se to hard dri­ve …), по­может про­из­вести все не­об­хо­димые дей­ствия. Но пом­ни, все раз­де­лы на выб­ранном жест­ком дис­ке бу­дут унич­то­жены. При на­личии не­кото­рого опы­та мож­но поп­ро­бовать прист­ро­ить pfSen­se в ка­чест­ве вто­рой сис­те­мы, но луч­ше для экс­пе­римен­тов ис­поль­зо­вать вир­ту­аль­ные ма­шины, под ко­торы­ми этот дист­ри­бутив от­лично ра­бота­ет (или дру­гой винч). Са­ма ус­та­нов­ка за­нима­ет пять ми­нут. Для за­писи наст­ро­ек и пе­рехо­да к сле­ду­юще­му ша­гу вы­бира­ем «Ac­cept the­se set­tings». Пе­рей­ти к сле­ду­юще­му пунк­ту мож­но при по­мощи стре­лок или та­буля­ции.

В пер­вом ок­не дос­тупны наст­рой­ки шриф­та и раск­лад­ки кла­ви­ату­ры. От­ме­ча­ем «Ins­tall pfSen­se». Сна­чала вы­бира­ем жест­кий диск, на ко­торый бу­дем ус­та­нав­ли­вать сис­те­му, и фор­ма­тиру­ем его (For­mat this disk). Скрипт про­веря­ет ге­омет­рию дис­ка и вы­водит ре­зуль­тат – обыч­но нет не­об­хо­димос­ти что-ли­бо здесь ме­нять. От­ме­ча­ем «Use this ge­omet­ry» и за­писы­ва­ем таб­ли­цу раз­де­лов (For­mat ad0). Тут доб­рый мас­тер пред­ло­жит про­из­вести раз­метку. В Edit par­ti­ti­on мож­но соз­дать нес­коль­ко слай­сов. Ва­ри­ан­та, пред­ло­жен­но­го мас­те­ром, впол­не дос­та­точ­но, по­это­му вы­бира­ем «Ac­cept and Cre­ate». Те­перь на­до выб­рать слайс, на ко­торый бу­дем ус­та­нав­ли­вать pfSen­se. Он у нас один – от­ме­ча­ем и в сле­ду­ющем ок­не подт­вер­жда­ем на­жати­ем «ОК». Пос­ле соз­да­ния слай­са прог­рамма пред­ло­жит соз­дать два раз­де­ла: кор­не­вой и swap (1024 Мб). При же­лании мож­но из­ме­нить раз­метку, пос­ле че­го нач­нется ко­пиро­вание не­об­хо­димых фай­лов на диск. В сос­тав pfSen­se вхо­дит че­тыре яд­ра: для од­нопро­цес­сорных и мно­гоп­ро­цес­сорных сис­тем, встро­ен­ных уст­рой­ств (без драй­ве­ров VGA, кла­ви­ату­ры и т.д.) и de­velo­per (с GDB). Вы­бира­ем нуж­ное. Пос­ледний шаг – ус­та­нов­ка заг­рузчи­ка. За­тем пос­ле­ду­ет пе­резаг­рузка. Даль­ней­шие наст­рой­ки про­из­во­дят­ся уже че­рез веб-ин­терфейс.

Наст­рой­ка че­рез веб

Подк­лю­чать­ся к pfSen­se мож­но по­ка толь­ко с LAN-ин­терфей­са. На­бира­ем его ад­рес в стро­ке бра­узе­ра. Для ре­гист­ра­ции ис­поль­зу­ем ло­гин ad­min и па­роль pfsen­se.
Пос­ле ус­пешно­го вхо­да те­бя встре­тит Se­tup Wi­zard, за­дача ко­торо­го – уп­ростить пер­во­началь­ную наст­рой­ку. В пер­вом ок­не ука­зыва­ем имя и до­мен, к ко­торо­му при­над­ле­жит компьютер, ад­ре­са DNS-сер­ве­ров, наст­рой­ки вре­мени, ча­совой по­яс и синх­ро­низа­цию с сер­ве­ром NTP. Что ж, прис­ту­па­ем к наст­рой­ке WAN-подк­лю­чения. Вы­бира­ем тип со­еди­нения: DHCP, ста­тичес­кий, PPPoE или PPTP. Ус­та­нов­ка флаж­ков «Block pri­vate net­works» и «Block bo­gon net­works» соз­даст пра­вила, бло­киру­ющие подк­лю­чение к WAN с ад­ре­сов ука­зан­ных се­тей. Даль­ше, ес­ли хо­чешь, сме­ни наст­рой­ки LAN-ин­терфей­са. На пос­леднем ша­ге мас­те­ра ме­ня­ем па­роль ад­ми­на. От ус­луг мас­те­ра мож­но от­ка­зать­ся и наст­ро­ить все са­мос­то­ятель­но, – пос­ту­пай, как те­бе удоб­нее. Пов­торно мас­тер вы­зыва­ет­ся в Sys­tem – Se­tup Wi­zard.

По окон­ча­нии наст­рой­ки все со­еди­нения из внут­ренних се­тей бу­дут раз­ре­шены. Пра­вила NAT соз­да­ют­ся ав­то­мати­чес­ки (но­вич­ки это оце­нят). Ког­да та­кие пра­вила пла­ниру­ет­ся соз­да­вать вруч­ную, – нуж­но снять фла­жок «Di­sab­le NAT Ref­lecti­on», ко­торый на­ходит­ся вни­зу стра­ницы Sys­tem – Ad­vanced.

Ин­терфейс pfSen­se раз­бит на 7 ос­новных вкла­док: Sys­tem, In­terfa­ces, Fi­rewall, Ser­vi­ces, VPN, Sta­tus и Di­ag­nostics. При вы­боре каж­дой отк­ро­ют­ся до­пол­ни­тель­ные под­пунк­ты. Для при­мера раз­бе­рем не­кото­рые наст­рой­ки.

Ес­ли IP-ад­рес WAN-ин­терфей­су за­да­ет­ся ста­тичес­ки или ди­нами­чес­ки, то проб­лем с наст­рой­кой WAN не пред­ви­дит­ся. Пу­тани­ца воз­ни­ка­ет, ког­да к про­вай­де­ру нуж­но подк­лю­чить­ся, ис­поль­зуя PPPoE или PPTP. Как ты пом­нишь, pfSen­se под­держи­ва­ет од­но та­кое со­еди­нение, и наст­ро­ить его мож­но толь­ко в In­terfa­ces – WAN. Но где же тог­да ука­зывать наст­рой­ки се­тево­го адап­те­ра? В этом слу­чае сле­ду­ет соз­дать VLAN-ин­терфейс. За­ходим в ме­ню In­terfa­ces – as­sign, пе­рехо­дим во вклад­ку VLANs и на­жима­ем , что­бы соз­дать но­вый ин­терфейс. По­том ука­жи наст­рой­ки се­тевой кар­ты во VLAN, а в WAN – ин­форма­цию о PPPoE.

Обя­затель­но зай­ди в Sys­tem – Ge­neral se­tup! Здесь ука­зыва­ют­ся: имя уз­ла, ад­ре­са сер­ве­ров DNS (ес­ли они не по­луча­ют­ся че­рез DHCP), имя поль­зо­вате­ля и па­роль ад­ми­нист­ра­тора, а так­же – ис­поль­зо­вание за­щищен­но­го HTTPS при подк­лю­чении че­рез web­GUI, порт для со­еди­нения, те­ма оформ­ле­ния, ча­совой по­яс и сер­вер NTP.
По умол­ча­нию сер­вер SSH отк­лю­чен. Ес­ли вдруг пла­ниру­ет­ся уда­лен­ное уп­равле­ние по это­му про­токо­лу, то пе­рехо­дим во вклад­ку Sys­tem – Ad­vanced и ус­та­нав­ли­ва­ем фла­жок Enab­le Se­cure Shell. Для по­выше­ния бе­зопас­ности в по­ле SSH port мож­но ука­зать от­личный от 22-ого порт и ак­ти­виро­вать аутен­ти­фика­цию по клю­чу. Пос­ледний сле­ду­ет ско­пиро­вать в по­ле Aut­ho­rized­ke­ys. Во вклад­ке Ad­vanced мож­но вклю­чить пер­вый пос­ле­дова­тель­ный порт (это отк­лю­чит ви­де­окар­ту и кла­ви­ату­ру), функ­цию Fil­te­ring Brid­ge; ука­зать сер­ти­фика­ты для web­GUI; вклю­чить ба­лан­си­ров­ку со­еди­нений, traf­fic sha­per и дру­гие па­рамет­ры.

Для наст­рой­ки ста­тичес­кой марш­ру­тиза­ции сле­ду­ет пе­рей­ти в Sta­tic Ro­utes и на­жать . В по­явив­шемся ме­ню выб­рать ин­терфейс и ввес­ти ад­рес се­ти, шлюз и крат­кое опи­сание.

Наст­рой­ка пра­вил меж­се­тево­го эк­ра­на и NAT про­из­во­дит­ся в Fi­rewall – Ru­les. Ко­личест­во вкла­док здесь рав­но чис­лу ис­поль­зу­емых ин­терфей­сов. По умол­ча­нию весь ло­каль­ный тра­фик раз­ре­шен: в LAN сто­ит пра­вило «De­fa­ult LAN -> any», а из WAN бло­киру­ет­ся дос­туп толь­ко с ад­ре­сов част­ных се­тей (дру­гими сло­вами, вхо­дящие се­тевые подк­лю­чения с ад­ре­сов из ди­апа­зонов 10/8, 172.16/12, 192.168/16 на внеш­ний се­тевой ин­терфейс зап­ре­щены). Пра­вило NAT фор­ми­ру­ет­ся ав­то­мати­чес­ки (Auto­matic out­bo­und NAT ru­le ge­nera­ti­on), по­это­му сра­зу пос­ле ус­та­нов­ки pfSen­se ис­полня­ет роль марш­ру­тиза­тора с филь­тра­ци­ей па­кетов.

Но­вое пра­вило соз­да­ет­ся очень прос­то. Для это­го не нуж­но об­ла­дать зна­ни­ями PF, дос­та­точ­но предс­тав­лять ко­неч­ный ре­зуль­тат. Вы­бира­ет­ся зна­чение па­рамет­ра, пред­ло­жен­но­го кон­фи­гура­тором (ад­рес/ин­терфейс ис­точни­ка и наз­на­чения, про­токол, порт или ди­апа­зон, рас­пи­сание и про­чее), оши­бить­ся здесь тя­жело. Соз­данные пра­вила мож­но расс­тав­лять по по­ряд­ку. Об­ра­ти вни­мание на не­боль­шой тре­уголь­ник сле­ва от пра­вила. Ес­ли он зе­леный – пра­вило ак­тивно, ес­ли се­рый – нет.
Сна­чала соз­да­ем раз­ре­ша­ющее пра­вило, поз­во­ля­ющее со­еди­нять­ся уда­лен­но че­рез web­GUI. Вы­бира­ем Add new ru­le и ука­зыва­ем в Ac­ti­on – Pass, In­terfa­ce – LAN, Pro­tocol – TCP. По­ля So­ur­ce и Des­ti­nati­on в том слу­чае, ког­да ис­поль­зу­ет­ся 80-ый порт, мож­но ус­та­новить в Any, что­бы поль­зо­вате­ли мог­ли по­лучить дос­туп к веб-ре­сур­сам ин­тернет. В Des­ti­nati­on port ус­та­нав­ли­ва­ем HTTP. Ана­логич­но наст­ра­ивает­ся дос­туп к ос­таль­ным уда­лен­ным сер­ви­сам. По окон­ча­нии наст­ро­ек в по­ле Ac­ti­on пра­вила «De­fa­ult LAN -> any» ме­ня­ем зна­чение с Pass на Block или Re­ject. Не за­будь, что пра­вила ра­бота­ют до пер­во­го сов­па­дения, по­это­му зап­ре­ща­ющий ру­лесет сле­ду­ет раз­местить пос­ледним, ис­поль­зуя кноп­ки Mo­ve se­lec­ted ru­le. По окон­ча­нии всех наст­ро­ек на­жима­ем кноп­ку App­ly chan­ges.

Во вклад­ке Fi­rewall так­же мож­но за­дать псев­до­нимы (ali­ases), ко­торые поз­во­лят уп­ростить соз­да­ние пра­вил. При вы­боре пунк­та Traf­fic Sha­per за­пус­тится мас­тер наст­рой­ки. На пер­вом ша­ге сле­ду­ет выб­рать внеш­ний и внут­ренний ин­терфей­сы и ука­зать ско­рость Down­lo­ad/Up­lo­ad, а за­тем ус­та­новить при­ори­тет для Vo­IP-сер­ви­сов. В Pe­nal­ty Box ука­зыва­ют­ся ад­ре­са, тра­фик с ко­торых бу­дет ид­ти с на­имень­шим при­ори­тетом. Да­лее идут наст­рой­ки ог­ра­ниче­ний для P2P-се­тей, се­тевых игр и ос­таль­ных про­токо­лов.

По хо­ду кон­фи­гури­рова­ния сис­те­ма вы­водит пре­дуп­режде­ния ввер­ху стра­ницы. Об­ра­щай на них вни­мание: иног­да тре­бу­ет­ся на­жать кноп­ку/ги­перс­сыл­ку или пе­резаг­ру­зить компьютер, ина­че наст­рой­ки не всту­пят в си­лу.

Все не зря

Опыт по­казы­ва­ет, что pfSen­se не зря поль­зу­ет­ся по­пуляр­ностью и по­луча­ет лест­ные от­зы­вы IT-спе­ци­алис­тов. Он прост в наст­рой­ке и на­дежен в ра­боте. Та­кой марш­ру­тиза­тор впол­не спо­собен ре­шить все за­дачи по предс­тав­ле­нию дос­ту­па и за­щите до­маш­ней/офис­ной се­ти.

Дист­ри­бутив m0n0wall

Дист­ри­бутив m0n0wall ори­ен­ти­рован на при­мене­ние во встро­ен­ных уст­рой­ствах. От­сю­да и раз­мер ~6 Мб. Раз­ра­бот­чик, Маньюэл Кас­пер, пос­та­вил се­бе за­дачу соз­дать прос­тое и лег­кое в наст­рой­ке ре­шение, не ус­ту­па­ющее по функ­ци­ональ­нос­ти ком­мерчес­ким про­дук­там. Уни­кален m0n0wall еще и тем, что все сис­темные наст­рой­ки сох­ра­ня­ют­ся в XML-фай­ле, а во вре­мя заг­рузки вмес­то при­выч­ных сце­нари­ев обо­лоч­ки ис­поль­зу­ет­ся PHP. Нап­равлен­ность на встро­ен­ные сис­те­мы пот­ре­бова­ла из­ме­нения ал­го­рит­ма ра­боты с CF/USB-флеш­ка­ми, ко­торые кри­тич­ны к ко­личест­ву цик­лов за­писи/пе­реза­писи (да и ско­ростью ра­боты пох­вастать­ся не мо­гут). По­это­му пос­ле заг­рузки сис­те­ма раз­ме­ща­ет­ся в опе­ратив­ной па­мяти. Об­ра­щение к но­сите­лю про­ис­хо­дит толь­ко во вре­мя сох­ра­нения кон­фи­гура­ции, об­новле­ния сис­те­мы или ПО, вхо­дяще­го в его сос­тав. В ка­чест­ве филь­тра па­кетов ис­поль­зу­ет­ся IP Fil­ter.

Ми­нималь­ные сис­темные тре­бова­ния, предъяв­ля­емые m0n0wall: i486-100, 64 Мб ОЗУ, две и бо­лее се­тевых кар­ты, жест­кий диск или кар­та Flash с IDE-ин­терфей­сом раз­ме­ром не ме­нее 8 Мб.

Воп­ро­сы ли­цен­зии

Ис­ходный код pfSen­se расп­рос­тра­ня­ет­ся под ли­цен­зи­ей BSD. С ко­дом мож­но де­лать все, что угод­но, но ав­торс­кие пра­ва долж­ны быть сох­ра­нены. Кста­ти, эмб­ле­мы про­ек­та это не ка­са­ет­ся – ее мож­но ис­поль­зо­вать толь­ко с пись­мен­но­го раз­ре­шения. За­яв­ле­на ком­мерчес­кая под­держ­ка про­дук­та, но ос­таль­ные поль­зо­вате­ли мо­гут по­лучить по­мощь на фо­руме про­ек­та.