Здравствуйте.
Просьба помочь запустить 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 amd64sysctl 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.20dmesg
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 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 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", в том что в вашем конфиге его за глаза хватит
gateway_enable="YES" в rc.conf
> 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 детальнее :)
> Посмотрите входящий в поставку rc.firewall, его и задействуйте с firewall_type="OPEN",
> в том что в вашем конфиге его за глаза хватитНа сколько я понимаю, если явно не указать firewall_type, то он как раз и будет OPEN.
>> Посмотрите входящий в поставку 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,
как и какие переменные можно использовать.
>...2lavr
Мужик!
Как жеж силы не покидают тебя, джедай?;