Редирект портов
Редирект порта можно сделать разными способами. Рассмотрим парочку.
С помощЬю natd:
В конфиг natd.conf пишем
1 2 3 4 5 6 7 8 9 10 11 | # Внешний интерфейс, на котором работает 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 |
На машине 192.168.20.251 в качестве шлюза по умолчанию должна быть прописана машина с натом.
Возможно, потребуется еще сделать редирект udp порта. Делается точно так же, как в примере выше, только tcp меняем на udp.
В rc.conf должно быть прописано
1 2 3 | gateway_enable="YES" natd_enable="YES" natd_flags="-f /etc/natd.conf" |
Если используется фаервол, то должен быть открыт соответствующий порт
1 | ${FwCMD} add allow tcp from any to 192.168.20.251 80 via ${LanOut} |
и
1 | ${FwCMD} add allow tcp from any to 192.168.20.251 80 via ${LanIn} |
Перезагружием машину или перезапускаем natd с соответствующими ключами.
Есть подозрение, что на седьмой ветке сие не заработает. Как вариант, можно попробовать в фаерволе заменить ${LanIn} и ${LanOut} на ${имя_внешнего_интерфейса} и в rc.conf должна быть запись
1 | inetd_enable="YES" |
Вариант без natd.conf. Пишем следующее в rc.conf:
1 2 3 4 | gateway_enable="YES" natd_enable="YES" natd_interface="rl0" natd_flags="-s -u -m -dynamic -redirect_port tcp 192.168.20.251:80 81" |
Небольшое дополнение при использовании пассивных портов для proftpd:
В конфиг proftpd нужно вписать диапазон портов для passive mode
1 | PassivePorts 8001 8100 |
В конфиг ната добавляем
1 | redirect_port tcp 192.168.20.251:8001-8100 8001-8100 |
Ну и это тоже впишем в proftpd.conf
1 | MasqueradeAddress <внешний_айпи_ната> |
Теперь вариант редиректа портов с помощью inetd. Всё предельно просто.
В файл /etc/services прописываем
1 | port81 81/tcp |
В inetd.conf пишем:
1 | port81 stream tcp nowait root /usr/local/bin/socket socket 192.168.0.1 80 |
Предполагается, что /usr/ports/sysutils/socket уже установлен.
Перезапускаем inetd.
На этом пока всё. Есть еще варианты проброса портов с помощью rinetd, ipnat, bounce, redir… Но о них в другой раз :)