Вот опять потребовалось сегодня по просьбе знакомого заняться пробросом портов на маршрутизаторе, чтобы пользователь из сети Internet мог попадать на свою машину внутри локальной сети...
IPNAT
IPNAT загружается с такими параметрами:
# cat /etc/rc.conf | grep ipnat ipnat_enable="YES" ipnat_program="/sbin/ipnat -CF -f" ipnat_rules="/etc/ipnat.rules" |
Удаленный рабочий стол Windows работает на порту 3389. Именно его мы и будем пробрасывать.
# cat /etc/services | grep 3389 rdp 3389/tcp #Microsoft Remote Desktop Protocol |
Для проброса портов в IPNAT используем команду rdr. Рассмотрим детально ее синтаксис на примере:
# cat /etc/ipnat.rules | grep rdr rdr rl0 1.2.3.4 port 3389 -> 192.168.0.100 port 3389 |
rdr - (redirect) опция редиректа;
rl0 - интерфейс маршрутизатора, который "смотрит" в Internet;
1.2.3.4 - статический маршрутизируемый ip-адресс сервера, выданный нам провайдером. Именно его мы и будем указывать как адресс удаленной системы в клиентском приложении;
port 3389 - опция, определяющая, трафик на каком порту будем редиректить во внутреннюю сеть;
192.168.0.100 - IP-адресс компьютера во внутренней сети, на который и будем перенаправлять запросы;
port 3389 - порт компьютера во внутренней сети, на который будет перенаправлен трафик.
После внесения необходимых изменений в /etc/ipnat.rules, перестартовываем IPNAT:
# /sbin/ipnat -CF -f /etc/ipnat.rules 183 entries flushed from NAT table 1 entries flushed from NAT list |
NATd
При испольвовании NATd, используется опция ядра DIVERT. Опции загрузки следующие:
# cat /etc/rc.conf | grep nat natd_enable="YES" natd_interface="rl0" natd_flags="-f /etc/natd.conf" |
Из указанного списка опций можно сделать следующие выводы:
- включена поддержка natd;
- rl0 - интерфейс, на котором "натится" трафик;
- natd_flags - дополнительные ключи к общей конфигурации.
Просмотрим содержание natd.conf, чтобы ознакомится с синтаксисом проброса портов.
# cat /etc/natd.conf redirect_port tcp 192.168.0.100:3389 3389 |
Здесь немножко меньше опций ;)
redirect_port - включаем поддержку перенаправления трафика;
tcp (udp) - тип трафика, который будем перенапралять;
192.168.0.10:3389 - сокет (связка IP-адресс + порт), на который будем заворачивать трафик;
3389 - указываем номер порта, с которого будем заворачивать трафик.
После внесения необходимых изменений, необходимо послать демону сигнал на перезапуск службы:
# sh /etc/rc.d/natd restart Stopping natd. Waiting for PIDS: 635, 635, 635, 635, 635. Starting natd. Loading /lib/libalias_cuseeme.so Loading /lib/libalias_ftp.so Loading /lib/libalias_irc.so Loading /lib/libalias_nbt.so Loading /lib/libalias_pptp.so Loading /lib/libalias_skinny.so Loading /lib/libalias_smedia.so |
Только будьте осторожны и внимательны. В случае неверной конфигурации или ошибки, вы потеряете соединение с сервером, соответственно придется топать к нему с монитором и клавиатурой.
Обратите ВНИМАНИЕ на распостраненную ошибку. Файл /etc/natd.conf должен заканчиваться пустой строкой, иначе потеря связи сервером вам гарантирована.
PF
О том, как настроить PF можно прочитать в этой статье.
Проброс портов реализовываем следующим методом. Добавим в /etc/pf.conf такую строку:
rdr on rl0 proto { tcp, udp } from any to 1.2.3.4 port 8080 -> 10.100.0.100 port 80 |
rdr - (redirect) опция редиректа;
on rl0 - интерфейс маршрутизатора, который "смотрит" в Internet;
proto - ключевое слово, указывающее тип трафика для пробороса (tcp или udp);
from any - сети, с которых будет работать переадресация, в нашем случае - любая сеть;
to 1.2.3.4 - на какой IP маршрутизатора будет приходить трафик;
port 8080 - на каком порту "слушать" запросы для перенаправления;
10.100.0.100 port 80 - IP и порт, на который будет форвардиться трафик в локальной сети.
Re: Проброс портов на маршрутизаторе под управлением FreeBSD
Есть вопросик, если у клиента не стоит шлюз по уполчаниею на мою машину то "rdr on rl0 proto { tcp, udp } from any to 1.2.3.4 port 8080 -> 10.100.0.100 port 80" не работает, для примера: у меня 3 интерфейса 1й в мир (ИП 1.1.1.1), два в локал (2.2.2.2 и 3.3.3.3), при пробросе "rdr on rl0 proto tcp from any to 1.1.1.1 port 3333 -> 2.2.2.5 port 3334" у абоно шлюз на 2.2.2.2 работате, у другого "rdr on rl0 proto tcp from any to 1.1.1.1 port 4433 -> 3.3.3.5 port 4434" шлюз на 3.3.3.1 нет.