Rexxer

Some tips for me and other

FreeBSD – проброс портов через NATD

FreeBSD – проброс портов через NATD

Собственно вот содержимое конфиг-файлов для реализации. Взято из офизиальной документации, см.ниже. Работает либо alias (-a), либо interface (-n) – выбор за вами. Т.е. в конфиге мы указываем либо алиас-адрес, либо интерфейс.

rc.conf

natd_enable="YES"
natd_interface="rl0"
natd_flags="-f /etc/natd.conf"

natd.conf

interface rl0
same_ports
use_sockets
unregistered_only
redirect_port tcp 192.168.0.10:25 25
# редирект идет на 192.168.0.10 с 25го порта на 25й.

rc.firewall

# Я решил не изменять дефолтный:

# Main devert for ALL
case ${natd_enable} in
[Yy][Ee][Ss])
if [ -n “${natd_interface}” ]; then
${fwcmd} add divert natd all from any to any via ${natd_interface}
fi
;;
esac

# Allow SMTP – обратите внимание – разрешение идет после диверта
${fwcmd} add allow tcp from any to 192.168.2.197 25 via ${oif}

Для запуска 2х инстансов NATD либо так:

rc.firewall

#First NAT

natd -m -u -a ${oip1} -p 8668
${fwcmd} add divert 8668 all from any to any via ${oif2}

# Second NAT
natd -m -u -a ${oip2} -p 8778
${fwcmd} add divert 8778 all from any to any via ${oif2}

либо через natd.conf

# default instance
port 8668
alias_address 158.152.17.1

# second instance
instance dsl1
port 8778
alias_address 192.168.0.1

Сам NATD для перезапуска можно кильнуть: killall natd или kill PID(NATD), а затем запустить /etc/rc.d/natd -f /etc/natd.conf

Либо: /etc/rc.d/natd restart

Важное замечание: разрешающее правило для прохождения пакета должно стоять после диверта, а до этого никких РАЗРЕШАЮЩИХ (запрещающих) правил. Проверено, если стоит разрешающее правило перед дивертом и после диверта тоже разрешающее, то до второго пакет не доходит, даже несмотря на net.inet.ip.fw.one_pass=0

http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-natd.html

Leave a Reply