понедельник, 6 мая 2013 г.

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


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




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

Комментариев нет:

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