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

  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:0b915f7a8eaa5adeccfc8b14e52f8f47' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>&nbsp;</p>\n<p>&nbsp;Вот опять потребовалось сегодня по просьбе знакомого заняться пробросом портов на маршрутизаторе, чтобы пользователь из сети&nbsp;Internet&nbsp;мог попадать на свою машину внутри&nbsp;локальной&nbsp;сети...</p>\n<p>&nbsp;</p>\n<p class=\"rtecenter\"><strong>IPNAT</strong></p>\n<p>IPNAT загружается с такими параметрами:</p>\n<p><table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong>#&nbsp;cat /etc/rc.conf | grep ipnat</strong><br />\n ipnat_enable=&quot;YES&quot;<br />\n ipnat_program=&quot;/sbin/ipnat -CF -f&quot;<br />\n ipnat_rules=&quot;/etc/ipnat.rules&quot;</td>\n</tr>\n</tbody>\n</table>\n</p>\n<p>Удаленный рабочий стол Windows работает на порту 3389. Именно его мы и будем пробрасывать.</p>\n<p><table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong># cat /etc/services | grep 3389<br />\n </strong>rdp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3389/tcp&nbsp;&nbsp; #Microsoft Remote Desktop Protocol</td>\n</tr>\n</tbody>\n</table>\n</p>\n<p>Для проброса портов в IPNAT используем команду rdr. Рассмотрим детально ее синтаксис на примере:</p>\n<p><table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong># cat /etc/ipnat.rules | grep rdr</strong><br />\n rdr rl0 1.2.3.4 port 3389 -&gt; 192.168.0.100 port 3389</td>\n</tr>\n</tbody>\n</table>\n</p>\n<p><strong>rdr </strong>- (redirect) опция редиректа;</p>\n<p><strong>rl0 </strong>- интерфейс маршрутизатора,&nbsp;который &quot;смотрит&quot; в Internet;</p>\n<p><strong>1.2.3.4 </strong>-&nbsp;статический маршрутизируемый&nbsp;ip-адресс сервера, выданный нам провайдером. Именно его мы и будем указывать как адресс удаленной системы в клиентском приложении;</p>\n<p><strong>port 3389</strong> - опция, определяющая, трафик на каком порту будем редиректить во внутреннюю сеть;</p>\n<p><strong>192.168.0.100</strong> - IP-адресс компьютера во внутренней сети, на который и будем перенаправлять запросы;</p>\n<p><strong>port 3389</strong> - порт компьютера во внутренней сети, на который будет перенаправлен трафик.</p>\n<p>&nbsp;</p>\n<p>После внесения необходимых изменений в <strong>/etc/ipnat.rules</strong>, перестартовываем IPNAT:</p>\n<p><table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong># /sbin/ipnat -CF -f /etc/ipnat.rules</strong><br />\n 183 entries flushed from NAT table<br />\n 1 entries flushed from NAT list</td>\n</tr>\n</tbody>\n</table>\n</p>\n<p>&nbsp;&nbsp;</p>\n<p class=\"rtecenter\"><strong>NATd</strong></p>\n<p class=\"rteleft\">При испольвовании NATd, используется опция ядра DIVERT. Опции загрузки следующие:</p>\n<p><table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong># cat /etc/rc.conf | grep nat</strong><br />\n natd_enable=&quot;YES&quot;<br />\n natd_interface=&quot;rl0&quot;<br />\n natd_flags=&quot;-f /etc/natd.conf&quot;</td>\n</tr>\n</tbody>\n</table>\n</p>\n<p class=\"rteleft\">Из указанного списка опций можно сделать следующие выводы:</p>\n<p class=\"rteleft\">- включена поддержка natd;</p>\n<p class=\"rteleft\">- rl0 - интерфейс,&nbsp;на котором &quot;натится&quot; трафик;</p>\n<p class=\"rteleft\">- natd_flags - дополнительные ключи к общей конфигурации.</p>\n<p class=\"rteleft\">Просмотрим содержание natd.conf, чтобы ознакомится с синтаксисом проброса портов.</p>\n<p><table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong># cat /etc/natd.conf</strong><br />\n redirect_port tcp 192.168.0.100:3389 3389</td>\n</tr>\n</tbody>\n</table>\n</p>\n<p class=\"rteleft\">Здесь немножко меньше опций ;)</p>\n<p class=\"rteleft\">redirect_port - включаем поддержку перенаправления трафика;</p>\n<p class=\"rteleft\">tcp (udp) - тип трафика, который будем перенапралять;</p>\n<p class=\"rteleft\">192.168.0.10:3389 - сокет (связка IP-адресс +&nbsp;порт), на который будем заворачивать трафик;</p>\n<p class=\"rteleft\">3389&nbsp;- указываем номер порта, с которого будем заворачивать трафик.</p>\n<p class=\"rteleft\">&nbsp;</p>\n<p class=\"rteleft\">После внесения необходимых изменений, необходимо послать демону сигнал на перезапуск службы:</p>\n<p><table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong># sh /etc/rc.d/natd restart</strong><br />\n Stopping natd.<br />\n Waiting for PIDS: 635, 635, 635, 635, 635.<br />\n Starting natd.<br />\n Loading /lib/libalias_cuseeme.so<br />\n Loading /lib/libalias_ftp.so<br />\n Loading /lib/libalias_irc.so<br />\n Loading /lib/libalias_nbt.so<br />\n Loading /lib/libalias_pptp.so<br />\n Loading /lib/libalias_skinny.so<br />\n Loading /lib/libalias_smedia.so</td>\n</tr>\n</tbody>\n</table>\n</p>\n<p class=\"rteleft\">Только будьте осторожны и внимательны. В случае неверной конфигурации или ошибки, вы потеряете соединение с сервером,&nbsp;соответственно придется топать к нему с монитором и клавиатурой.</p>\n<p class=\"rteleft\">&nbsp;Обратите <span style=\"color: #ff0000\"><strong>ВНИМАНИЕ </strong></span>на распостраненную ошибку. Файл /etc/natd.conf должен заканчиваться пустой строкой, иначе потеря связи сервером вам гарантирована.</p>\n<p class=\"rtecenter\"><strong>PF</strong></p>\n<p class=\"rtejustify\">О том,&nbsp;как настроить&nbsp;PF&nbsp;можно прочитать&nbsp;в <a href=\"http://muff.kiev.ua/content/nat-realizatsiya-s-pomoshchyu-pf\">этой статье</a>.</p>\n<p class=\"rtejustify\">Проброс портов реализовываем следующим методом. Добавим в&nbsp;/etc/pf.conf&nbsp;такую строку:</p>\n<pre>\n&nbsp;</pre><p class=\"rtejustify\">\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>rdr&nbsp;on&nbsp;rl0 proto { tcp, udp } from any to 1.2.3.4 port&nbsp;8080 -&gt; 10.100.0.100 port 80</td>\n</tr>\n</tbody>\n</table>\n</p>\n<p><strong>rdr </strong>- (redirect) опция редиректа;</p>\n<p><strong>on rl0 </strong>- интерфейс маршрутизатора,&nbsp;который &quot;смотрит&quot; в Internet;</p>\n<p><strong>proto</strong> - ключевое слово, указывающее тип трафика для пробороса (tcp или&nbsp;udp);</p>\n<p><strong>from any</strong> - сети, с которых будет работать переадресация, в нашем случае - любая сеть;</p>\n<p><strong>to 1.2.3.4</strong> - на какой IP маршрутизатора будет приходить трафик;</p>\n<p><strong>port 8080</strong> - на каком порту &quot;слушать&quot;&nbsp;запросы для перенаправления;</p>\n<p><strong>10.100.0.100 port 80</strong> - IP и порт,&nbsp;на который будет форвардиться трафик в локальной сети.</p>\n', created = 1767333281, expire = 1767419681, headers = '', serialized = 0 WHERE cid = '2:0b915f7a8eaa5adeccfc8b14e52f8f47' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:315561cc357e664adf9ea03369322be3' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>Есть вопросик, если у клиента не стоит шлюз по уполчаниею на мою машину то &quot;rdr&nbsp;on&nbsp;rl0 proto { tcp, udp } from any to 1.2.3.4 port&nbsp;8080 -&gt; 10.100.0.100 port 80&quot; не работает, для примера: у меня 3 интерфейса 1й в мир (ИП 1.1.1.1), два в локал (2.2.2.2 и 3.3.3.3), при пробросе &quot;rdr&nbsp;on&nbsp;rl0 proto tcp from any to 1.1.1.1 port 3333 -&gt; 2.2.2.5 port 3334&quot; у абоно шлюз на 2.2.2.2 работате, у другого&nbsp;&quot;rdr&nbsp;on&nbsp;rl0 proto tcp from any to 1.1.1.1 port 4433 -&gt; 3.3.3.5 port 4434&quot; шлюз на 3.3.3.1 нет.</p>\n', created = 1767333281, expire = 1767419681, headers = '', serialized = 0 WHERE cid = '2:315561cc357e664adf9ea03369322be3' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a class=\"thickbox\" href=\"/files/imagepicker/1/wake_up_ua.png\"><img alt=\"Вставай, Україно!\" class=\"imgp_img\" src=\"/files/imagepicker/1/thumbs/wake_up_ua.png\" style=\"height:200px; width:150px\" /></a></p>\n', created = 1767333281, expire = 1767419681, headers = '', serialized = 0 WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:cc913d232116f0426090404133377d88' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a href=\"http://muff.kiev.ua/rss.xml\"><img alt=\"RSS\" width=\"160\" height=\"60\" src=\"http://muff.kiev.ua/files/muf-rss.png\" /></a></p>\n', created = 1767333281, expire = 1767419681, headers = '', serialized = 0 WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:39649256b636e3d5ded656bc52bd8c01' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
Версия для печатиОтправить другу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 нет.

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

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

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

Литература

Гарри Каспаров наконец-то выиграл у компьютера, и с двумя очками и тремя жизнями перешёл на следующий уровень.