= bubbalog =Дневникът на моето стадо

FreeBSD 7.0 и NAT portforwarding (portredirect)

Saturday 20.12.2008 13:33 EEST · Публикувано от в = FreeBSD =

Преди време, преди да открия за себе си pfSense използвах за рутер стандартно Freebsd, което с годините няколко пъти е сменяло версията. Сега всичко е лесно с pfSensa – само цъкаш по менютата и правиш всичко много интуитивно. Но преди не беше така. Искаше се знание, четене, нерви и време за да подкараш нещо. Така беше и с NAT-a и Portforwarding-а на BSD-то. Докато имах само една машина зад него всичко беше ОК, но когато машините станаха 2 и повече – нещата загрубяха и трябваше да се използва и тази опция… Как се прави това обаче? Еми лесно бих казал сега, но тогава много ме мъчеше този въпрос. Тук е представено обяснението и ще се види реално колко лесно е наистина, като изплючим достатъчно огромното време за окомплектоване (на 266MHz/64RAM отне около 6 часа), което беше и основната прочина да търся алтернатива и да намеря сегашното решение.

Като начало се предполага, че имате вече инсталирано, работещо и настроено за работа FreeBSD.

Първата стъпка е да се редактира /etc/rc.conf файла като се добавят следните редове:

gateway_enable=”YES” # команда за работа като Gateway
firewall_enable=”YES” # пускане на Firewall при старт
firewall_type=”OPEN” # посочване на типа Firewall (конфигурацията е /etc/rc.firewall)
natd_enable=”YES”
natd_interface=”rl0″ # посочване на “външния” адрес през който се NAT-ва
natd_flags=”-f /etc/natd.conf” # посочване на natd конфигурационния файл

Следващата съпка е създаването на /etc/natd.conf файла в който се описвт в последствие самите пренасочвания, като се използва следната структура, a данните в скобите са променливи, които се сменят в зависимост от предназначението:

redirect_port [tcp/udp] [target_IP]:[target_port] [listen_NAT_”out”_port]

В следващите редове е описано преконфигурирането на кърнъла. Това е най-дългата част от заниманието. Като начало, отидете в /usr/src/sys/i386/conf и копирайте конфигурацията на кърнъла коятпо позвате в момента под ново име, което ще използваме в последствие.

#cp GENERIC NAT_KERNEL

Предактирайте новия файл като промените идентификатора на кърнъла който е в началото на файла

ident NAT_Kernel

и прибавете следните редове към края на файла:

options IPFIREWALL
options IPDIVERT
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_VERBOSE

Следва самото компилиране на овия кърнъл. изпълняват се последователно следните комади, и може да се проготвите да правите нещо друго, тъй като както споменах по-горе, работата по точка 3 и 4 ще отнеме доста дълго време.

  1. #config NAT_KERNEL
  2. #cd ../compile/NAT_KERNEL/
  3. #make cleandepend
  4. #make
  5. #make install

Това е. След края на последната команда престартирайте машината и вече имате работещ NAT с пренасочване на портовете при входяши конекции.

Няколкото забележки по това изпълнение са, че само по себе си, това е най-простия вариянт при който обаче машината е с абсолютно отворена защитна стена, което не е много хубаво ако е външна в мрежата ви. Има разбира се и други решения, но те са свързани с повечко четене и настройки… Но като за проста мрежичка, мисля че и това би свършило достатъчно работа. Другото е както вече споменах – огромното време за прекомпилиране, а това е много изнервящо, когато пипате много от любознателност и често се налага да преинсталирате. Третото е сравнително големия ресърс, който е нужен за реализирането на системата, сравнен с неговата функционалност. За едно инсталирано и работещо FreeBSD са нужни поне няколко гигабайта, докато един pfSens (който сам по себе си пак е FreeBSD и затова се спрях на него) изпълняващ тази роля, заедно с още куп други неща като VPN сървър, защитна стена и DNS forwarder може да “живее” дори на флашка, а инсталиран на диск заема едва 128MB дисково пространсство… А да не забравяме и за прекрасната опция за боравене с веб-интерфейса… Но всеки си има вкус както е казало кучето. Разбира се, сървърната ми машина на която се помешава блога е на FreeBSD 7.0, просто няма как да е друго, но за рутер просто сметнах че е ненужно чак толкова главоболие с него.

3 коментара за “FreeBSD 7.0 и NAT portforwarding (portredirect)”

  1. krasi says:

    good pfsence stava no i m0n0wall go testvai ako ne si i toi e baziran FreeBSD i si ima web ;) , samo za info de inache az FreeBSD ne ;go zamenqmai za nishto ta ako shte i 20 h da chakam kompilaciq :)

    good pfsence става но и m0n0wall го тествай ако не си и той е базиран FreeBSD и си има web ;) , само за инфо иначе аз FreeBSD не го заменям за нищо та ако ще и 20h да чакам компилация :)

    (их ма начи… ко не и се кефите на тая кирилица…)

  2. pfSenase-то ми е само за рутера. Инак за самите сървъри са си на FreeBSD, аз също не бих го заменил за нищо на света и там си чакам колкото е нужно. Относно m0n0wall – знам го, но преди да започна от прочетеното разбрах, че pfSense е един вид надстройка на моно-то, с някакво по-удобни неща, та за тва с него…

  3. Пич, всичко е много хубаво, НО всичко е толкова бавно по твоя блог, явно БТК-то и слабите машинки си оказват влияние. Ако имаш интерес имам решение на твоя проблем. Предлагаме безплатен хостинг на посочения адрес.

Остави коментар

Писането на кирилица е задължително!
Коментари, които не са на кирилица ще бъдат изтрити без предупреждение.
Всеки коментари съдържащи 1 или повече линка, ще бъдат публикувани след одобрение.