Проброс портов на маршрутизаторе под управлением FreeBSD

Версия для печатиОтправить другуPDF version

 

 Вот опять потребовалось сегодня по просьбе знакомого заняться пробросом портов на маршрутизаторе, чтобы пользователь из сети 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 и порт, на который будет форвардиться трафик в локальной сети.

Ваша оценка: Нет Средняя: 4.7 (16 голосов)

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 нет.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Вставай, Україно!

Литература