понеділок, 24 жовтня 2011 р.

Проброс портов в ядерном IPFW NAT

Обещанное продолжение статьи про настройку IPFW NAT в FreeBSD 8, работающего на уровне ядра системы. Из заголовка не трудно понять, что речь сегодня пойдет о том, как организовать проброс портов. Рассказывать, для чего вообще используется перенаправление портов здесь не стану - раз тема заинтересовала, то и определенные знания есть. Возможно, позже и напишу небольшой обзор для начинающих.

В сети достаточно много подробных инструкций, как настроить NAT во FreeBSD, используя демон natd. А вот про настройку ядерного NAT информацию найти достаточно сложно. Как-то эта тема обходится вниманием, видимо кто настраивал сам не спешит делиться своими наработками. Вообще, последнее время, замечаю мало интересных технических статей... так что буду, по мере сил, продолжать вносить свой маленький вклад в дело продвижения Open Source и FreeBSD в частности.

Для простоты продолжим настраивать открытый firewall - чтобы не загромождать пример правилами блокировки. Первым делом проверим в конфиге rc.conf следующие строки (интерфейс, смотрящий в интернет vr0):

firewall_enable="YES"
firewall_nat_enable="YES"
firewall_nat_interface="vr0"
firewall_type="OPEN"

Синтаксис написания правил ядерного IPFW NAT следующий:

ipfw [-q] nat number config config-options

Если явно не указать номер правила nat, система присваивает правилу номер 123. Рассмотрим живой пример. Нужно организовать проброс портов для IP-телефонии на внутренний VoIP шлюз, имеющий адрес 192.168.100.25. Перенаправить необходимо два TCP порта - 23 и 1720; и два UDP порта - 23000 и 23001. Вот пример изменений файла конфигурации rc.firewall:

case ${firewall_type} in
[Oo][Pp][Ee][Nn])
  ${fwcmd} nat 123 config if vr0 same_ports \
     redirect_port tcp 192.168.100.25:23 23 \
     redirect_port tcp 192.168.100.25:1720 1720 \
     redirect_port udp 192.168.100.25:23000 23000 \
     redirect_port udp 192.168.100.25:23001 23001
  ${fwcmd} add 65000 pass all from any to any
;;

Обратите внимание, каждое правило NAT должно писаться в одну строку. В примере для удобства чтения и написания выполнен перенос строк, что системой также будет воспринято как одна строка. Теперь можно перезапустить ipfw:

[root@router ~]# /etc/rc.d/ipfw restart

В результате у нас заработал проброс указанных портов в NAT. Смотрим конфиг запущенного NAT:

[root@router ~]# ipfw nat show config
ipfw nat 123 config if vr0 same_ports redirect_port udp 192.168.100.25:23001 23001 redirect_port udp 192.168.100.25:23000 23000 redirect_port tcp 192.168.100.25:1720 1720 redirect_port tcp 192.168.100.25:23 23

Дополнительные материалы:
Предыдущая статья IPFW NAT в FreeBSD 8.

Немає коментарів:

Дописати коментар

HyperComments for Blogger

comments powered by HyperComments