Подписывайтесь:


Технотрон » Сетевые технологии » FreeBSD: Проброс портов в локальную сеть для RDP и Radmin

Данная статья, это своего рода заметка на тему проброса портов на сервере под управлением ОС FreeBSD. Итак исходные данные задачи: сервер с FreeBSD и двумя сетевыми картами.  Первая - fxp0 (10.0.0.10) - смотрит на роутер с адресом 10.0.0.1 - выход в интернет; вторая - ed0 (192.168.1.1) - подключена ко второму серверу M$ Windows 2008. Задача: пробросить порты на первом сервере для доступа ко второму через RDP и Radmin. Способов есть несколько с помощью IPNAT, NATd, PF и Rinetd, их мы и рассмотрим по порядку. 
 
FreeBSD: Проброс портов в локальную сеть для RDP и Radmin


С помощью IPNAT



Замечу, что параметры в файлы конфигурации можно добавлять двумя методами, показанными ниже.

Подгружаем IPNAT со следующими параметрами:

# cat /etc/rc.conf | grep ipnat

 ipnat_enable="YES"

 ipnat_program="/sbin/ipnat -CF -f"

 ipnat_rules="/etc/ipnat.rules"

или можно по другому:

# ee /etc/rc.conf

добавляем в конец файла:

ipnat_enable="YES"
 ipnat_program="/sbin/ipnat -CF -f"
 ipnat_rules="/etc/ipnat.rules"

RDP работает на 3389 порту, а Radmin по умолчанию на 4899 (если не указан другой порт в его настройках). В целях безопасности у рекомендую указывать другой порт я советую указывать порт отличный от стандартных, но для наглядности в статье буду использовать стандартные порты.

Для проброса портов в IPNAT применяется инструкция rdr:

# cat /etc/ipnat.rules | grep rdr

 rdr fxp0 0.0.0.0 port 3389 -> 192.168.1.1 port 3389

 rdr fxp0 0.0.0.0 port 4899 -> 192.168.1.1 port 4899

Рассмотрим значения каждой части строки конфигурации:

rdr - (от англ. - redirect) указывает, что это именно перенаправление;

fxp0 - интерфейс маршрутизатора, который "смотрит" в интернет;

0.0.0.0 - статический ip-шник сервера (сетевого интерфейса который "смотрит" интернет и на который приходят пакеты, именно этот IP указывается, как адресс удаленной компьютера в RDP или Radmin);

port 3389 - собственно порт, с которого трафик перенаправляется из внешней сети во внутреннюю сеть;

192.168.1.1 - ip-адрес машины во внутренней сети, на который и будем заворачивать трафик;

port 3389 - порт на который происходит перенаправление во внутренней сети.

Точно также и для второй строки. Также можно строку редиректа прочитать так: перенаправляем (rdr) пакеты с интерфейса (fxp0) с адресом (0.0.0.0), если они пришли на порт (port 3389), во внутреннюю сеть (->) на адрес (192.168.1.1) на порт (port 3389). (Шото я гоню такое... :) )

После того как в /etc/ipnat.rules внесены все правила редиректа, IPNAT нужно перезапустить:

# /sbin/ipnat -CF -f /etc/ipnat.rules

 

 

С помощью NATd:



При испольвовании NATd, используется опция ядра DIVERT. Подгружаем NATd так:

# cat /etc/rc.conf | grep nat

 natd_enable="YES"                      #включаем поддержку natd

 natd_interface="fxp0"                 #указываем интерфейс, на котором работает natd

 natd_flags="-f /etc/natd.conf"    #указываем конфигурационный файл для natd

Теперь переходим к natd.conf, здесь синтаксис отличается от предыдущего, но тоже в целом понятен:

# cat /etc/natd.conf

 redirect_port tcp 192.168.1.1:3389 3389

 redirect_port tcp 192.168.1.1:4899 4899

Здесь:

redirect_port - тоже самое, что rdr, инструкция перенаправления;

tcp (udp) - тип трафика, который будем редиректить;

192.168.1.1:3389 - сокет (связка ip + порт), на который будет перенаправляться трафик;

3389 - номер порта, с которого будет заворачиваться трафик.

Перезапускаем NATd:

# sh /etc/rc.d/natd restart
Stopping natd.

Waiting for PIDS: ..........

Starting natd.

Loading ..........

Будьте внимательны!
Файл /etc/natd.conf (как и многие другие конфигурационные файлы) должен заканчиваться пустой строкой!

 

 

С помощью PF



В этом случае проброс реализуем, добавляя в /etc/pf.conf такие строки:

rdr on fxp0 proto { tcp, udp } from any to 0.0.0.0 port 3389 -> 192.168.1.1 port 3389

rdr on fxp0 proto { tcp, udp } from any to 0.0.0.0 port 4899 -> 192.168.1.1 port 4899

Здесь:

rdr - уже понятно, что это такое :)

on fxp0 - интерфейс маршрутизатора, который "смотрит" в интернет;

proto { tcp, udp } - тип трафика для проброса;

from any - сети, с которых будет работать переадресация, в данном случае - любая сеть;

to 0.0.0.0 - на этот IP приходит трафик извне;

port 3389 - на этом порту "слушаем" пакеты, которые будут перенаправляться;

192.168.1.1 port 3389 - IP и порт, на который будет форвардиться трафик в локальной сети.

 

Теперь о неприятном. Недостаток этих способов в том, что с ними много возни и не всегда получается сделать так как хочется - быстро и чтоб сразу работало. Тем более, что например для IPNAT нужен внешний статический ip-шник, а это не всегда доступно. Для решения всех проблем сразу есть замечательный инструмент - rinetd, которым я теперь пользуюсь все время - и быстро и сразу работает.

 

 

С помощью Rinetd



Устанавливаем rinetd:

# cd /usr/ports/net/rinetd

# make install clean

Добавляем rinetd в rc.conf:

# ee /etc/rc.conf

 rinetd_enable="YES"

Открываем файл конфигурации rinetd

# ee /usr/local/etc/rinetd.conf

и добавляем в него следующие правила:

xxx.xxx.xxx.xxx 4899 192.168.1.1 4899

xxx.xxx.xxx.xxx 3389 192.168.1.1 3389

Вот первая прелесть: вместо xxx.xxx.xxx.xxx можно указать 0.0.0.0 если нет статического IP.

Строка редиректа проста до безобразия:

ххх.ххх.ххх.ххх – внешний IP адрес, на который приходит трафик;

4899 – номер порта, на котором "слушаем" пакеты;

192.168.1.1 – внутренний IP адрес на который мы делаем проброс портов;

4899 - порт во внутренней сети, на который заворачиваем пакеты.

Пример:

0.0.0.0 40001 192.168.1.2 4899

0.0.0.0 40002 192.168.1.2 3389

Здесь для пущей безопасности, порты на которых "слушаем" изменены на 40001 и 40002. В этом случае в настройках Radmin на удаленной машине нужно указать, не стандартный порт у молчанию, а этот 40001. В случае с RDP нужно на локальной машине, с которой подключаемся, указывать порт через двоеточие прямо в строке подключения ххх.ххх.ххх.хххх:40002.

После этого необходимо внести исключения в firewall, чтобы он не отфутболивал пакеты адресованные нашим портам. Для этого открываем файл конфигурации firewall и вносим в него следующие строки:

${fwcmd} add allow tcp from any to me 3389

${fwcmd} add allow tcp from any to me 4899

Теперь перезагружаем rinetd и firewall:

# /etc/rc.d ipfw restart

# /usr/local/sbin/rinetd rinetd restart (или start если он не был запущен).

Возможно придется перезапустить Freebsd, если команды не выполняются.

 

Вот, собственно и все. О таких прописных истинах, как то, что Radmin должен быть установлен на удаленной машине и RDP разрешен, думаю, говорить не стоит.

 

Также замечу, что способ с rinetd замечательно работает с сервисом DDNS от "Укртелекома" - в этом случае заказываем на сайте my.ukrtelecom.ua в личном кабинете себе динамический DNS вида *.ddns.ukrtel.net, который будет доступен независимо от того, с каким IP в данный момент поднята сессия. Например, вы заказали DDNS такого вида cooldomain.ddns.ukrtel.net, то в Radmin в поле "IP адрес или DNS имя" указываем именно его, а в поле порт или оставляем "По умолчанию" 4899 или задаем свой порт. В случае с RDP, в окне "Подключение к удаленному рабочему столу" указываем так: cooldomain.ddns.ukrtel.net - если rinetd настроена на прослушивание стандартного порта, или так: cooldomain.ddns.ukrtel.net:40002 - если rinetd настроена на другой порт.

 

Еще раз уточняю детали:

- для Radmin: на удаленной машине (к которой будем коннектиться), устанавливаем Radmin Server, в настройках создаем пользователя и пароль для подключения, а также даем ему права; далее настраиваем rinetd как указано выше (например на нестандартный порт 40001); на локальной машине в Radmin создаем подключение с такими параметрами как на скриншоте ниже и можно пробовать подключатся.

 

FreeBSD: Проброс портов в локальную сеть для RDP и Radmin

 FreeBSD: Проброс портов в локальную сеть для RDP и Radmin

 

- для RDP: на удаленной машине настраиваем уделенный доступ (Свойства системы -> Настойка удаленного доступа -> вкладка Удаленное использование -> ставим переключатель напротив Разрешать подключения от компьютеров с любой версией удаленного рабочего стола); настраиваем rinetd на нестандартный порт (например 40002); на локальной машине в окне подключения прописываем такую строку: cooldomain.ddns.ukrtel.net:40002

 

 
Если все правильно сделано и нет других факторов, которые могут мешать нормальному пробросу портов (например кривые правила фаервола), то все должно работать.

Удачных пробросов, честь имею.


freebsd IPNAT NATd PF Rinetd redirect проброс порт
Версия для печати
Обсудить статью на форуме


 автор: Technotron    25.05.2014    Комментариев: 0

Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.
smartbooks.org
Опрос
Как Вы попали на этот сайт?
Я постоянный посетитель
Из поисковой системы
С другого сайта
Из каталога
Кто-то посоветовал
Реклама
Status online
Сейчас на сайте: 12
Гостей: 10
Пользователи: 


Роботы: