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 пока нет, его надо создать. Пример файла (комментарий также можно вставлять в строке, начинающейся на #) для Корбины: map 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 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 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 rdr 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 rdr 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 не фигурирует) Эти 2 правила включают NAT для доступа в Интернет. Первое правило обеспечивает корректную работу клиентов ftp из внутренней сети (192.168.0.0\24) через NAT. Второе - доступ тем же клиентам ко всем портам и IP адресам Интернета через NAT. Эти 2 правила включают NAT для доступа к локальным ресурсам Корбины. Первое правило обеспечивает корректную работу клиентов ftp из внутренней сети (192.168.0.0\24) через NAT (по ftp работают многие локальные ресурсы Корбины, например ftp.corbina.ru, а также megafilms.ru он же homefilms.ru). Второе - доступ тем же клиентам ко всем портам и IP адресам локальной сети Корбины через NAT. Без NAT-а доступ ко всем локальным ресурсам Корбины будет закрыт!
Первое из этих 2 правил публикует порт 6112 udp от компьютера 192.168.0.1 в Интернете под публичным адресом 89.178.130.45. Правило обеспечивает игру в StarCraft на компьютере 192.168.0.1. Второе правило публикует сервер ssh, который работает тоже на компьютере 192.168.0.1. Эти два правила публикуют сервер ftp на компьютере 192.168.0.1. Первое правило публикует порт данных для активного режима (20), второе - порт канала управления (21). Эти 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 без перезагрузки: Документация: # 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 Обратите внимание на 2 последних правила - они публикуют конкретные номера протоколов IP (47 и 50), а не TCP или UDP порты. |