URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 95214
[ Назад ]

Исходное сообщение
"IPFW + NAT - NAT не работает."

Отправлено Royal Flash , 22-Ноя-13 05:23 
Здравствуйте.
Просьба помочь запустить NAT на моем сервере. Пробовал запустить NAT в ipfw и отдельно natd. В итоге пинг с клиентской машины внутри локалки:

C:\Windows\system32>ping r0.ru
Обмен пакетами с r0.ru [81.19.70.7] с 32 байтами данных:
Превышен интервал ожидания для запроса.

То же самое происходит, если NAT вообще не настроен, но у клиента указан адрес шлюза - сервер. Т.е. IP-адрес r0.ru каким-то "чудесным образом" определяется, но вот далее дело не идет.

Просьба подсказать, в чем может быть причина неработоспособности NAT? Ниже - конфиги...

Ядро собрано с такими опциями:
options <------>IPFIREWALL<----><------># Включение IPFW
options <------>IPFIREWALL_VERBOSE<----><------># Ведение логов
options <------>IPFIREWALL_VERBOSE_LIMIT=1000<-># Ограничение кол-ва записей в с
options <------>IPFIREWALL_DEFAULT_TO_ACCEPT<--># Открытый файрволл по умолчанию
options <------>IPFIREWALL_FORWARD <---><------># перенаправление пакетов (для s
options <------>IPFIREWALL_NAT<><------><------># включаем ipfw NAT
options <------>LIBALIAS<------><------># включаем в ядро необходимые библиотеки
options <------>IPDIVERT<------><------># необходимо для NAT
options <------>DUMMYNET <-----><------># ограничение скорости

Система
# uname -a
FreeBSD mydomain.com 8.3-RELEASE FreeBSD 8.3-RELEASE #0: EET 2013     mydomain:/usr/obj/usr/src/sys/MYKERNEL  amd64

sysctl net.inet.ip.fw.one_pass: 1

rc.conf
ifconfig_em0="192.168.1.20  netmask 255.255.255.0" # Локалка
ifconfig_em1="inet SYNCDHCP" # Внешний интерфейс
sshd_enable="YES"
ipv6_ipv4mapping="YES"
firewall_enable="YES"
firewall_nat_enable="YES"
firewall_nat_interface="em1"
firewall_flags="unreg_only same_ports unregistered_only"
firewall_script="/etc/firewall"

/etc/firewall
#!/bin/sh -
ipfw -f flush
ipfw nat 123 config ip 192.168.1.20 log  #em0
ipfw add 10 nat 123 ip from 192.168.1.0/24 to any
ipfw add 20 nat 123 ip from any to 192.168.1.20

dmesg
ipfw2 (+ipv6) initialized, divert enabled, nat enabled, rule-based forwarding enabled, default to accept, logging disabled

# ipfw show
00010   18   1440 nat 123 ip from 192.168.1.0/24 to any
00020    4    312 nat 123 ip from any to 192.168.1.20
65535 2513 330150 allow ip from any to any


Содержание

Сообщения в этом обсуждении
"IPFW + NAT - NAT не работает."
Отправлено михалыч , 22-Ноя-13 06:05 
>[оверквотинг удален]
> ipfw add 20 nat 123 ip from any to 192.168.1.20
> dmesg
> ipfw2 (+ipv6) initialized, divert enabled, nat enabled, rule-based forwarding enabled,
> default to accept, logging disabled
> # ipfw show
> 00010   18   1440 nat 123 ip from 192.168.1.0/24
> to any
> 00020    4    312 nat 123 ip
> from any to 192.168.1.20
> 65535 2513 330150 allow ip from any to any

Вы включаете ДВА ната, на внешнем интерфейсе (em1 DHCP) и на внутреннем интерфейсе (em0 192.168.1.20).

В вашем случае, так делать не надо и нельзя. Лучше включить голову и мозг. ))


"IPFW + NAT - NAT не работает."
Отправлено Сергей , 22-Ноя-13 09:11 
>[оверквотинг удален]
> ipfw add 20 nat 123 ip from any to 192.168.1.20
> dmesg
> ipfw2 (+ipv6) initialized, divert enabled, nat enabled, rule-based forwarding enabled,
> default to accept, logging disabled
> # ipfw show
> 00010   18   1440 nat 123 ip from 192.168.1.0/24
> to any
> 00020    4    312 nat 123 ip
> from any to 192.168.1.20
> 65535 2513 330150 allow ip from any to any

Посмотрите входящий в поставку rc.firewall, его и задействуйте с firewall_type="OPEN", в том что в вашем конфиге его за глаза хватит


"IPFW + NAT - NAT не работает."
Отправлено pavel , 22-Ноя-13 22:29 
gateway_enable="YES" в rc.conf

"IPFW + NAT - NAT не работает."
Отправлено Royal Flash , 23-Ноя-13 00:48 
> gateway_enable="YES" в rc.conf

Спасибо, добавил gateway_enable="YES", воспользовался советом lazhu с форума forum.lissyara.su и изменил правила IPFW:
ipfw nat 123 config if <внешний интерфейс> reset same_ports deny_in
ipfw add 10 nat 123 ip from 192.168.1.0/24 to any out xmit <внешний интерфейс>
ipfw add 20 nat 123 ip from any to me in recv <внешний интерфейс>

NAT заработал.

Теперь, увидев что все это работает, можно включать мозг и разбираться с IPFW и NAT детальнее :)



"IPFW + NAT - NAT не работает."
Отправлено Royal Flash , 23-Ноя-13 00:51 
>  Посмотрите входящий в поставку rc.firewall, его и задействуйте с firewall_type="OPEN",
> в том что в вашем конфиге его за глаза хватит

На сколько я понимаю, если явно не указать firewall_type, то он как раз и будет OPEN.



"IPFW + NAT - NAT не работает."
Отправлено lavr , 23-Ноя-13 13:34 
>>  Посмотрите входящий в поставку rc.firewall, его и задействуйте с firewall_type="OPEN",
>> в том что в вашем конфиге его за глаза хватит
> На сколько я понимаю, если явно не указать firewall_type, то он как
> раз и будет OPEN.

нет, он будет (см ниже в grep): UNKNOWN

Все default'ные параметры заданы в /etc/defaults/rc.conf, и могут быть
переопределены в /etc/rc.conf.

# grep firewall_type /etc/defaults/rc.conf
firewall_type="UNKNOWN"         # Firewall type (see /etc/rc.firewall)
#

Основное правило:
- НЕ ТРОГАТЬ /etc/defaults/rc.conf
- все что нужно, задавать-изменять-переопределять через /etc/rc.conf

# less /etc/defaults/rc.conf - используют как образец для своего /etc/rc.conf,
как и какие переменные можно использовать.


"IPFW + NAT - NAT не работает."
Отправлено oser , 29-Ноя-13 19:30 
>...

2lavr

Мужик!
Как жеж силы не покидают тебя, джедай?

;