Администрирование FreeBSD, Linux, ... FreeBSD: настройка NAT с помощью ipnat Thu, November 21 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


FreeBSD: настройка NAT с помощью ipnat Печать
Добавил(а) microsin   

ipnat - утилита, реализующая подсистему NAT.


Чтобы включить NAT, в /etc/rc.conf нужно добавить:
ipnat_enable="YES"    # включить NAT
gateway_enable="YES"  # включить пересылку кадров между интерфейсами
      После этого перегружаемся.
      Конфигурация ipnat хранится по умолчанию в файле /etc/ipnat.rules (уже задано в /etc/defaults/rc.conf). Файла /etc/ipnat.rules пока нет, его надо создать. Пример файла (комментарий также можно вставлять в строке, начинающейся на #) для Корбины:
1.pngmap ng0 192.168.0.0/24 -> 0.0.0.0/32 proxy port ftp ftp/tcp
map ng0 from 192.168.0.0/24 to any -> 0.0.0.0/32

2.pngmap fxp0 192.168.0.0/24 -> 0.0.0.0/32 proxy port ftp ftp/tcp
map fxp0 from 192.168.0.0/24 to any -> 0.0.0.0/32

3.pngrdr ng0 89.178.130.45/32 port 6112 -> 192.168.0.1 port 6112 udp
rdr ng0 89.178.130.45/32 port 22 -> 192.168.0.1 port 22 tcp

4.pngrdr ng0 89.178.130.45/32 port 20 -> 192.168.0.1 port 20 tcp
rdr ng0 89.178.130.45/32 port 21 -> 192.168.0.1 port 21 tcp

5.pngrdr ng0 89.178.130.45/32 port 50000 -> 192.168.0.1 port 50000 tcp
rdr ng0 89.178.130.45/32 port 50001 -> 192.168.0.1 port 50001 tcp
      rdr ng0 89.178.130.45/32 port 50002 -> 192.168.0.1 port 50002 tcp
      rdr ng0 89.178.130.45/32 port 50003 -> 192.168.0.1 port 50003 tcp
      rdr ng0 89.178.130.45/32 port 50004 -> 192.168.0.1 port 50004 tcp
      rdr ng0 89.178.130.45/32 port 50005 -> 192.168.0.1 port 50005 tcp
      rdr ng0 89.178.130.45/32 port 50006 -> 192.168.0.1 port 50006 tcp
      rdr ng0 89.178.130.45/32 port 50007 -> 192.168.0.1 port 50007 tcp
      rdr ng0 89.178.130.45/32 port 50008 -> 192.168.0.1 port 50008 tcp
      rdr ng0 89.178.130.45/32 port 50009 -> 192.168.0.1 port 50009 tcp
      rdr ng0 89.178.130.45/32 port 50010 -> 192.168.0.1 port 50010 tcp

Примечания.

192.168.0.1 - этот компьютер получает основной доступ через NAT - на нем можно играть в StarCraft. Кроме того, на этом компьютере работает сервер ftp и сервер SSH. Оба эти сервера опубликованы в Интернете через ipnat.

89.178.130.45 - такой адрес выдан на виртуальном интерфейсе ng0 после успешного VPN-ppp соединения с Корбиной (постарался демон mpd).

fxp0 - сетевой интерфейс, который подключен к Корбине, по DHCP ему выдан адрес a.b.103.223. Какой тут IP адрес - не имеет значения, ipnat к нему не привязан (в /etc/ipnat.rules этот IP не фигурирует)
ng0 - внешний виртуальный интерфейс, создаваемый демоном mpd через pptp соединение поверх fxp0. IP также выдается автоматически на этом интерфейсе по протоколу ppp.

1.pngЭти 2 правила включают NAT для доступа в Интернет. Первое правило обеспечивает корректную работу клиентов ftp из внутренней сети (192.168.0.0\24) через NAT. Второе - доступ тем же клиентам ко всем портам и IP адресам Интернета через NAT.

2.pngЭти 2 правила включают NAT для доступа к локальным ресурсам Корбины. Первое правило обеспечивает корректную работу клиентов ftp из внутренней сети (192.168.0.0\24) через NAT (по ftp работают многие локальные ресурсы Корбины, например ftp.corbina.ru, а также megafilms.ru он же homefilms.ru). Второе - доступ тем же клиентам ко всем портам и IP адресам локальной сети Корбины через NAT. Без NAT-а доступ ко всем локальным ресурсам Корбины будет закрыт!

3.png

Первое из этих 2 правил публикует порт 6112 udp от компьютера 192.168.0.1 в Интернете под публичным адресом 89.178.130.45. Правило обеспечивает игру в StarCraft на компьютере 192.168.0.1. Второе правило публикует сервер ssh, который работает тоже на компьютере 192.168.0.1.

4.pngЭти два правила публикуют сервер ftp на компьютере 192.168.0.1. Первое правило публикует порт данных для активного режима (20), второе - порт канала управления (21). 

5.pngЭти 11 правил публикуют 11 портов ftp-сервера 192.168.0.1 для его работы в пассивном режиме. Этот диапазон портов должен быть прописан также на ftp сервере специальной настройкой.


Пример правил для Акадо:
map fxp0 192.168.0.0/24 -> 0.0.0.0/32 proxy port ftp ftp/tcp
map fxp0 from 192.168.0.0/24 to any -> 0.0.0.0/32
rdr fxp0 83.167.123.75/32 port 6112 -> 192.168.0.1 port 6112 udp
rdr fxp0 83.167.123.75/32 port 22 -> 192.168.0.1 port 22 tcp
rdr fxp0 83.167.123.75/32 port 20 -> 192.168.0.1 port 20 tcp
rdr fxp0 83.167.123.75/32 port 21 -> 192.168.0.1 port 21 tcp
rdr fxp0 83.167.123.75/32 port 50000 -> 192.168.0.1 port 50000 tcp
rdr fxp0 83.167.123.75/32 port 50001 -> 192.168.0.1 port 50001 tcp
rdr fxp0 83.167.123.75/32 port 50002 -> 192.168.0.1 port 50002 tcp
rdr fxp0 83.167.123.75/32 port 50003 -> 192.168.0.1 port 50003 tcp
rdr fxp0 83.167.123.75/32 port 50004 -> 192.168.0.1 port 50004 tcp
rdr fxp0 83.167.123.75/32 port 50005 -> 192.168.0.1 port 50005 tcp
rdr fxp0 83.167.123.75/32 port 50006 -> 192.168.0.1 port 50006 tcp
rdr fxp0 83.167.123.75/32 port 50007 -> 192.168.0.1 port 50007 tcp
rdr fxp0 83.167.123.75/32 port 50008 -> 192.168.0.1 port 50008 tcp
rdr fxp0 83.167.123.75/32 port 50009 -> 192.168.0.1 port 50009 tcp
rdr fxp0 83.167.123.75/32 port 50010 -> 192.168.0.1 port 50010 tcp

Тут все то же самое, за исключением отсутствия виртуального интерфейса ng0 - теперь внешний интерфейс не ng0, а fxp0, и "локальных" ресурсов, как были у Корбины, нет.

Эта команда применяет правила /etc/ipnat.rules без перезагрузки:
# ipnat -CF -f /etc/ipnat.rules


Документация:
# man ipnat
/usr/share/examples/ipfilter/BASIC.NAT
/usr/share/examples/ipfilter/nat-setup

См. также статью автоматическая поддержка правил NAT в актуальном состоянии.


 Вот еще правила для публикации сервера VPN, работающего на Windows XP (см. статью Windows XP: как быстро настроить VPN (соединить компьютеры через Интернет)):

rdr ng0 83.167.123.75/32 port 1701 -> 192.168.0.1 port 1701 udp
rdr ng0 83.167.123.75/32 port 1723 -> 192.168.0.1 port 1723 tcp
rdr ng0 83.167.123.75/32 port 47 -> 192.168.0.1 port 47 gre
rdr ng0 83.167.123.75/32 port 50 -> 192.168.0.1 port 50 esp

Обратите внимание на 2 последних правила - они публикуют конкретные номера протоколов IP (47 и 50), а не TCP или UDP порты.

 

Комментарии  

 
0 #1 mugger 06.05.2011 19:59
После переноса ОС на другое Hardware MB, Ethernet, etc.
соответственно перенастроены конфиги, перестали работать пробросы портов, nat работает.

/etc/ipnat.rules
rdr ng0 62.148.128.100/32 port 3389 -> 192.168.0.5 port 3389 tcp
map ng0 192.168.0.0/24 -> 62.148.128.100/32

# ipnat -l
List of active sessions:RDR 192.168.0.5 3389 62.148.128.100 3389 [62.148.128.50 10324]
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Top of Page