Ситуация:Есть машина (FreeBSD 5.4) с двумя сетевыми картами. (rl0, vr0).
На обеих картах "серые" адреса. Грубо говоря, есть локальная сеть "своя" (vr0) и провайдерская (rl0). Черезпровайдерскую сеть устанавливается соединение с повайдерским сервером vpn для выхода в инет (используется mpd).
После установления vpn соединения появляется интерфейс ng0.
Задача - выпустить свою локалку (vr0) в интернет, используя технологию NAT. Доступ ИЗ интернета
в локальную сеть (т.е. публикация сервисов) не НУЖНО.Настройку производил в соответствии с http://www.maxx.uz.ua/doc/www.troubles.ru/Doc/BSD/fw_natd.html
но пока схема не пашет.
Меня интересуют такие вопросы.
1) В моей схеме нат должен работать на интерфейсе ng0 или rl0?
2) В статье рассматривалась frebsd 4.9, а у меня 5.4, соответственно и ipfw2. Может что-нибудь и подругому надоделать?
3) Есть ли грубые ошибки в моих конфигах?Вот мои конфиги:
Ядро собрано с опциями:
options IPFIREWALL
options IPFIREWALL_FORWARD
options IPDIVERT################################################################################
# cat /etc/rc.conf
defaultrouter="10.22.66.1"
hostname="serverbsd.local"
ifconfig_rl0="inet 10.22.66.31 netmask 255.255.255.0"
ifconfig_vr0="inet 192.168.110.254 netmask 255.255.255.0"
firewall_enable="YES"
firewall_type="/etc/rc.firewall"
gateway_enable="YES"
natd_enable="YES"
natd_interface="ng0"
natd_flags="-f /etc/natd.conf"
################################################################################
# ifconfig
vr0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.110.254 netmask 0xffffff00 broadcast 192.168.110.255
ether 00:0f:3d:df:b9:e4
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet 10.22.66.31 netmask 0xffffff00 broadcast 10.22.66.255
ether 00:80:48:1a:ee:7e
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.0.1 netmask 0xff000000
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1456
inet 192.168.56.1 --> 111.111.111.111 netmask 0xffffffff
################################################################################
# netstat -rn
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 111.111.111.111 UGS 0 8206 ng0
10.22.66 link#2 UC 0 0 rl0
10.22.66.31 00:80:48:1a:ee:7e UHLW 0 4 lo0
111.111.111/24 10.22.66.1 UGS 0 19013 rl0
127.0.0.1 127.0.0.1 UH 0 278 lo0
192.168.56.1 lo0 UHS 0 1 lo0
192.168.110 link#1 UC 0 0 vr0
192.168.110.254 00:0f:3d:df:b9:e4 UHLW 0 222 lo0
192.168.110.255 ff:ff:ff:ff:ff:ff UHLWb 0 159 vr0
################################################################################
# cat /etc/rc.firewall
#!/bin/sh
fwcmd='/sbin/ipfw -q'
InetLanOut="ng0"
InetIPOut="192.168.56.1"
InetNetOut="32"
INLanIn="vr0"
INIPIn="192.168.110.254"
INNetInIP="192.168.110.0"
INNetInMask="24"
EXTLanOut="rl0"
EXTIPOut="10.22.66.31"
EXTNetOutIP="10.22.66.0"
EXTNetOutMask="24"
${fwcmd} -f flush
${fwcmd} add check-state
${fwcmd} add deny icmp from any to any in icmptype 5,9,13,14,15,16,17
${fwcmd} add reject ip from ${INNetInIP}/${INNetInMask} to any in via ${EXTLanOut}
${fwcmd} add reject ip from ${INNetInIP}/${INNetInMask} to any in via ${InetLanOut}
${fwcmd} add allow ip from any to any via lo0${fwcmd} add allow tcp from me to any keep-state via ${EXTLanOut}
${fwcmd} add allow gre from any to any
${fwcmd} add allow icmp from any to any# DNS
${fwcmd} add allow udp from me to any domain via ${EXTLanOut} keep-state
${fwcmd} add allow udp from ${INNetInIP}/${INNetInMask} to me domain
# NAT
${fwcmd} add divert natd ip from ${INNetInIP}/${INNetInMask} to any out via ${InetLanOut}
${fwcmd} add divert natd ip from any to ${InetIPOut} in via ${InetLanOut}
${fwcmd} add pass tcp from any to any established${fwcmd} add pass ip from ${InetIPOut} to any out xmit ${InetLanOut}
${fwcmd} add pass all from any to any via ${INLanIn}
${fwcmd} add 65535 deny ip from any to any
################################################################################
# cat /etc/natd.conf
same_ports yes
use_sockets yes
unregistered_only yes
################################################################################
Дело в том, что вы пытаетесь поднять natd в тот момент когда интерфейс ng0 не работает.. поэтому у вас ничего и не работает.... запускайте natd ПОСЛЕ того как установите VPN соединение.
По поводу Firewall.... поставте пока "OPEN" на время тестирования nat...
>Дело в том, что вы пытаетесь поднять natd в тот момент когда
>интерфейс ng0 не работает.. поэтому у вас ничего и не работает....
>запускайте natd ПОСЛЕ того как установите VPN соединение.
>По поводу Firewall.... поставте пока "OPEN" на время тестирования nat...
Нет, вы не правы, соединение VPN уже установлено, все выводы программ показаны уже при установленном VPN соединении.Связь по ВПН (через ng0) с инетом работает.
>>Дело в том, что вы пытаетесь поднять natd в тот момент когда
>>интерфейс ng0 не работает.. поэтому у вас ничего и не работает....
>>запускайте natd ПОСЛЕ того как установите VPN соединение.
>>По поводу Firewall.... поставте пока "OPEN" на время тестирования nat...
>
>
>Нет, вы не правы, соединение VPN уже установлено, все выводы программ показаны
>уже при установленном VPN соединении.
>
>Связь по ВПН (через ng0) с инетом работает.Вам человек советует поменять порядок запуска, а вы о говорите том, в какой момент снят вывод команд. Запустите, как он советует, natd не через rc.conf, а руками, или через скрипты mpd, после поднятия "ng0".
>>>Дело в том, что вы пытаетесь поднять natd в тот момент когда
>>>интерфейс ng0 не работает.. поэтому у вас ничего и не работает....
>>>запускайте natd ПОСЛЕ того как установите VPN соединение.
>>>По поводу Firewall.... поставте пока "OPEN" на время тестирования nat...
>>
>>
>>Нет, вы не правы, соединение VPN уже установлено, все выводы программ показаны
>>уже при установленном VPN соединении.
>>
>>Связь по ВПН (через ng0) с инетом работает.
>
>Вам человек советует поменять порядок запуска, а вы о говорите том, в
>какой момент снят вывод команд. Запустите, как он советует, natd не
>через rc.conf, а руками, или через скрипты mpd, после поднятия "ng0".
>и так тоже делал, господа!
я просто хочу узнать - правильно ли я делаю, что нат вешаю на ng0 а не на rl0 и правильно ли я написал конфиги!
>
>и так тоже делал, господа!
>
>я просто хочу узнать - правильно ли я делаю, что нат вешаю
>на ng0
да> а не на rl0 и правильно ли я написал
>конфиги!Определяющий фактор - не стартовые конфиги, а текущие (тем более, по вашим словам, что-то менять пробуете сами):
ps awwwx|grep nat
ipfw showВообще, если включите перед последним правилом
deny log ip from any to some_external_ip
и правило в обратную сторону, то быстрее поймете, где проблема, если пинги к some_external_ip не проходят (и если должны проходить)