PostHeaderIcon Редирект портов

Редирект порта можно сделать разными способами. Рассмотрим парочку.
С помощЬю natd:
В конфиг natd.conf пишем
[cc lang=»bash»]
# Внешний интерфейс, на котором работает natd
interface rl0
# Пробовать оставить тот же самый порт у исходящих пакетов.
# При таком флаге лучше работают протоколы типа RPC. Если это
# невозможно то порт будет изменён.
same_ports
#nat`ить только частные сети (10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16)
unregistered_only
#Редиректим пакеты по протоколу tcp, приходящие на внешний порт 81
#на машину с адресом 192.168.20.251 на 80-й порт этой машины
redirect_port tcp 192.168.20.251:80 81[/cc]

На машине 192.168.20.251 в качестве шлюза по умолчанию должна быть прописана машина с натом.
Возможно, потребуется еще сделать редирект udp порта. Делается точно так же, как в примере выше, только tcp меняем на udp.
В rc.conf должно быть прописано
[cc lang=»bash»]
gateway_enable=»YES»
natd_enable=»YES»
natd_flags=»-f /etc/natd.conf»[/cc]
Если используется фаервол, то должен быть открыт соответствующий порт
[cc lang=»bash»]
${FwCMD} add allow tcp from any to 192.168.20.251 80 via ${LanOut}[/cc]
и
[cc lang=»bash»]
${FwCMD} add allow tcp from any to 192.168.20.251 80 via ${LanIn}[/cc]
Перезагружием машину или перезапускаем natd с соответствующими ключами.
Есть подозрение, что на седьмой ветке сие не заработает. Как вариант, можно попробовать в фаерволе заменить ${LanIn} и ${LanOut} на ${имя_внешнего_интерфейса} и в rc.conf должна быть запись
[cc lang=»bash»]
inetd_enable=»YES»[/cc]
Вариант без natd.conf. Пишем следующее в rc.conf:
[cc lang=»bash»]
gateway_enable=»YES»
natd_enable=»YES»
natd_interface=»rl0″
natd_flags=»-s -u -m -dynamic -redirect_port tcp 192.168.20.251:80 81″[/cc]
Небольшое дополнение при использовании пассивных портов для proftpd:
В конфиг proftpd нужно вписать диапазон портов для passive mode
[cc lang=»bash»]
PassivePorts 8001 8100[/cc]
В конфиг ната добавляем
[cc lang=»bash»]
redirect_port tcp 192.168.20.251:8001-8100 8001-8100[/cc]
Ну и это тоже впишем в proftpd.conf
[cc lang=»bash»]
MasqueradeAddress <внешний_айпи_ната>[/cc]
Теперь вариант редиректа портов с помощью inetd. Всё предельно просто.
В файл /etc/services прописываем
[cc lang=»bash»]
port81 81/tcp[/cc]
В inetd.conf пишем:
[cc lang=»bash»]
port81 stream tcp nowait root /usr/local/bin/socket socket 192.168.0.1 80[/cc]
Предполагается, что /usr/ports/sysutils/socket уже установлен.
Перезапускаем inetd.
На этом пока всё. Есть еще варианты проброса портов с помощью rinetd, ipnat, bounce, redir… Но о них в другой раз :)

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

PR-CY.ru