Прошу прощения, что пишу сюда, но мой вопрос тесно связан с настройкой ipfw.ОС - FreeBSD 5.4
Внешний интерфейс - fxp0.
Для соединения с провайдером поднят PPPoE (tun0).
Для объединения двух контор поднят VPN при помощи mpd (ng0).
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 195.x.x.111 netmask 0xffffffff broadcast 195.x.x.x
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1492
inet 195.x.x.111 --> 195.x.x.20 netmask 0xffffffff
Opened by PID 209
ng0: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500Вопрос состоит в следующем:
Как работает такая связка?
На каком интерфейсе надо поднимать NAT?
Если из локалки идет пакет на www.ru 80, то в какой последовательности он проходит tun0 и fxp0? И как идет ответ?
Как идет пакет, предназначеный для второй конторы через tun0 fxp0 и ng0?Перекурил кучу документации, от шаманских плясок вокруг ipfw голова кругом идет.
Если от ответа достигну просветления, постараюсь более не беспокоить.
>Прошу прощения, что пишу сюда, но мой вопрос тесно связан с настройкой
>ipfw.
>
>ОС - FreeBSD 5.4
>Внешний интерфейс - fxp0.
>Для соединения с провайдером поднят PPPoE (tun0).
>Для объединения двух контор поднят VPN при помощи mpd (ng0).
>fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
> inet 195.x.x.111 netmask 0xffffffff
>broadcast 195.x.x.x
>tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1492
> inet 195.x.x.111 --> 195.x.x.20 netmask 0xffffffff
> Opened by PID 209
>
>ng0: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500
>
>Вопрос состоит в следующем:
>Как работает такая связка?route default на tun0 195.x.x.20
Пакеты для второй конторы инкапсулируются в PPP (ng0) , далее
инкапсулируются в PPP (tun0), далее в Ethernet fxp0.>На каком интерфейсе надо поднимать NAT?
Лучше на двух (tun0 и fxp0), то есть два natd и два /etc/natd.conf .>Если из локалки идет пакет на www.ru 80, то в какой последовательности
>он проходит tun0 и fxp0? И как идет ответ?fxp1-->tun0(NAT1)-->fxp0(NAT2) . Обратно, в обратной последовательности.
NAT2 пакет не обрабатывается, если в /etc/natd2.conf
unregistered_only yes
Или писать правильные сети и маски для divert NAT интерфейса fxp0 .Если пакет идет на 195.x.x.x , fxp1-->fxp0(NAT2).
Обратно, в обратной последовательности.>Как идет пакет, предназначеный для второй конторы через tun0 fxp0 и ng0?
fxp1-->ng0-->tun0(NAT1)-->fxp0(NAT2) . Обратно, в обратной последовательности.
Про MTU не забудь.
>Перекурил кучу документации, от шаманских плясок вокруг ipfw голова кругом идет.
>Если от ответа достигну просветления, постараюсь более не беспокоить.Вот тут еще глянь.
http://www.opennet.me/openforum/vsluhforumID10/3273.htmlНа сайте примеров много на эту тему.
Спасибо за ответ.>route default на tun0 195.x.x.20
Это есть: default 195.x.x.20 UGS 0 315953 tun0>>На каком интерфейсе надо поднимать NAT?
>Лучше на двух (tun0 и fxp0), то есть два natd и
>два /etc/natd.conf .
Жестко... Попробую.>fxp1-->tun0(NAT1)-->fxp0(NAT2) . Обратно, в обратной последовательности.
>NAT2 пакет не обрабатывается, если в /etc/natd2.conf
>unregistered_only yes
>Или писать правильные сети и маски для divert NAT интерфейса fxp0 .
fxp1 - Имеется ввиду локальный интерфейс, если я правильно понял?>Про MTU не забудь.
Про то, что с каждой инкапсуляцией размер пакета растет?>Вот тут еще глянь.
>http://www.opennet.me/openforum/vsluhforumID10/3273.html
>На сайте примеров много на эту тему.
Обязательно.Еще раз благодарю за ответ. Если срастется - отпишу результат.
>fxp1 - Имеется ввиду локальный интерфейс, если я правильно понял?Да. С приватными адресами.
>>Про MTU не забудь.
>Про то, что с каждой инкапсуляцией размер пакета растет?Да.
>Еще раз благодарю за ответ. Если срастется - отпишу результат.
А куда оно денется.
>>Еще раз благодарю за ответ. Если срастется - отпишу результат.
>А куда оно денется.Собственно я даже не знаю что сказать.
Результат-то я получил.... Короче.==natd.conf
same_ports yes
use_sockets yes
unregistered_only yes==rc.conf
#NAT
natd_enable="YES"
natd_program="/sbin/natd"
natd_interface="fxp0"
natd_flags="-f /etc/natd.conf"
#PPPoE
ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="YES" # Вот тут я не уверен, надо-ли...
ppp_profile="adsl"
#VPN
mpd_enable="YES"==ifconfig
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet 195.x.x.115 netmask 0xffffffff broadcast 195.x.x.115
ether 00:60:b0:1a:5e:8b
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet 192.168.77.254 netmask 0xffffff00 broadcast 192.168.77.255
ether 00:10:dc:08:fb:3e
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.0.1 netmask 0xff000000
tun0: flags=8151<UP,POINTOPOINT,RUNNING,PROMISC,MULTICAST> mtu 1492
inet 195.x.x.115 --> 195.x.y.20 netmask 0xffffffff
Opened by PID 208
ng0: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500==netstat -rn
Destination Gateway Flags Refs Use Netif Expire
default 195.x.y.20 UGS 0 514557 tun0
127.0.0.1 127.0.0.1 UH 0 28 lo0
192.168.77 link#2 UC 0 0 rl0
192.168.77.50 00:10:dc:d9:ad:92 UHLW 0 3749 rl0 234
195.x.y.20 195.x.x.115 UH 1 2 tun0
195.x.x.115 00:60:b0:1a:5e:8b UHLW 0 35 lo0 =>
195.x.x.115/32 link#1 UC 0 0 fxp0==rc.ipfw
#!/bin/sh -
fwcmd="/sbin/ipfw -q"oif="tun0"
oip="195.x.x.115"
onet="195.x.x.115/32"
omask="255.255.255.255"iif="rl0"
iip="192.168.77.254"
inet="192.168.77.0/24"
imask="255.255.255.0"nat_1="tun0"
${fwcmd} -f flush
${fwcmd} zero${fwcmd} add 100 pass all from any to any via lo0
${fwcmd} add 200 deny all from any to 127.0.0.0/8
${fwcmd} add 300 deny ip from 127.0.0.0/8 to any${fwcmd} add deny all from ${inet}:${imask} to any in via ${oif}
${fwcmd} add deny all from ${onet}:${omask} to any in via ${iif}${fwcmd} add deny all from any to 10.0.0.0/8 via ${oif}
${fwcmd} add deny all from any to 172.16.0.0/12 via ${oif}
${fwcmd} add deny all from any to 192.168.0.0/16 via ${oif}${fwcmd} add deny all from any to 0.0.0.0/8 via ${oif}
${fwcmd} add deny all from any to 169.254.0.0/16 via ${oif}
${fwcmd} add deny all from any to 192.0.2.0/24 via ${oif}
${fwcmd} add deny all from any to 224.0.0.0/4 via ${oif}
${fwcmd} add deny all from any to 240.0.0.0/4 via ${oif}${fwcmd} add divert natd all from any to any via ${nat_1}
${fwcmd} add deny all from 10.0.0.0/8 to any via ${oif}
${fwcmd} add deny all from 172.16.0.0/12 to any via ${oif}
${fwcmd} add deny all from 192.168.0.0/16 to any via ${oif}${fwcmd} add deny all from 0.0.0.0/8 to any via ${oif}
${fwcmd} add deny all from 169.254.0.0/16 to any via ${oif}
${fwcmd} add deny all from 192.0.2.0/24 to any via ${oif}
${fwcmd} add deny all from 224.0.0.0/4 to any via ${oif}
${fwcmd} add deny all from 240.0.0.0/4 to any via ${oif}${fwcmd} add pass tcp from any to any established
${fwcmd} add pass all from any to any frag
${fwcmd} add pass tcp from any to ${oip} 25 setup
${fwcmd} add pass tcp from any to ${oip} 110 setup$ipfw add pass all from any to any via ng0
${fwcmd} add deny log tcp from any to any in via ${oif} setup
${fwcmd} add pass tcp from any to any setup
${fwcmd} add pass udp from ${oip} to any 53 keep-state
${fwcmd} add pass udp from ${oip} to any 123 keep-state
rc.ipfw собран на базе Симпл по Вашему совету из Вашей ссылки =)
http://www.opennet.me/openforum/vsluhforumID10/3273.html
"Все же почитайте man ipfw , посмотрите пример Simple в /etc/rc.firewall"После ребута основные сервисы заработали 25, 53, 110. ВПН пока не работает, но я этим займусь.
До этого было все тоже за исключением ФВ, который достался в наследство.
Если интересно, могу показать обо что я голову ломал.
>>>Еще раз благодарю за ответ. Если срастется - отпишу результат.
>>А куда оно денется.
>
>Собственно я даже не знаю что сказать.
>Результат-то я получил.... Короче.
>>==rc.conf
>#NAT
>natd_enable="YES"
>natd_program="/sbin/natd"
>natd_interface="fxp0"
^^^^^^^^^^^^^^^^^^^^^^
natd_interface="tun0"См. ниже об fxp0.
Всего один natd нужен в Вашем случае.
Sorry.>natd_flags="-f /etc/natd.conf"
>#PPPoE
>ppp_enable="YES"
>ppp_mode="ddial"
>ppp_nat="YES"
^^^^^^^^^^^^^^
ppp_nat="NO"># Вот тут я не уверен, надо-ли...
>ppp_profile="adsl"
>#VPN
>mpd_enable="YES"
>
>==ifconfig
>fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
> options=8<VLAN_MTU>
> inet 195.x.x.115 netmask 0xffffffff
>broadcast 195.x.x.115
> ether 00:60:b0:1a:5e:8b
> media: Ethernet autoselect (100baseTX <full-duplex>)
> status: active
>rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
> options=8<VLAN_MTU>
> inet 192.168.77.254 netmask 0xffffff00
>broadcast 192.168.77.255
> ether 00:10:dc:08:fb:3e
> media: Ethernet autoselect (100baseTX <full-duplex>)
> status: active
>lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
> inet 127.0.0.1 netmask 0xff000000
>
>tun0: flags=8151<UP,POINTOPOINT,RUNNING,PROMISC,MULTICAST> mtu 1492
> inet 195.x.x.115 --> 195.x.y.20 netmask 0xffffffff
> Opened by PID 208
>
>ng0: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500
>
>==netstat -rn
>Destination Gateway
> Flags
> Refs Use Netif Expire
>
>default
>195.x.y.20 UGS
> 0 514557
> tun0
>127.0.0.1 127.0.0.1
> UH
> 0
> 28 lo0
>192.168.77 link#2
> UC
> 0
> 0 rl0
>
>192.168.77.50 00:10:dc:d9:ad:92 UHLW
> 0 3749
> rl0 234
>195.x.y.20 195.x.x.115
> UH
> 1
> 2 tun0
>195.x.x.115 00:60:b0:1a:5e:8b UHLW 0 35 lo0 =>
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>195.x.x.115/32 link#1
^^^^^^^^^^^^^^^^^^^^^^^^^^^^У Вас только один Ваш публичный IP на fxp0 (маска 255.255.255.255).
NAT на fxp0 не понадобиться.>==rc.ipfw
>#!/bin/sh -
>fwcmd="/sbin/ipfw -q"
>
>oif="tun0"
>oip="195.x.x.115"
>onet="195.x.x.115/32"
>omask="255.255.255.255"
>
>iif="rl0"
>iip="192.168.77.254"
>inet="192.168.77.0/24"
>imask="255.255.255.0"
>
>nat_1="tun0"
>
>${fwcmd} -f flush
>${fwcmd} zero
>
>${fwcmd} add 100 pass all from any to any via lo0
>${fwcmd} add 200 deny all from any to 127.0.0.0/8
>${fwcmd} add 300 deny ip from 127.0.0.0/8 to any
>
>${fwcmd} add deny all from ${inet}:${imask} to any in via ${oif}
>${fwcmd} add deny all from ${onet}:${omask} to any in via ${iif}
>
>${fwcmd} add deny all from any to 10.0.0.0/8 via ${oif}
>${fwcmd} add deny all from any to 172.16.0.0/12 via ${oif}
>${fwcmd} add deny all from any to 192.168.0.0/16 via ${oif}
>
>${fwcmd} add deny all from any to 0.0.0.0/8 via ${oif}
>${fwcmd} add deny all from any to 169.254.0.0/16 via ${oif}
>${fwcmd} add deny all from any to 192.0.2.0/24 via ${oif}
>${fwcmd} add deny all from any to 224.0.0.0/4 via ${oif}
>${fwcmd} add deny all from any to 240.0.0.0/4 via ${oif}
>
>${fwcmd} add divert natd all from any to any via ${nat_1}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^Только один natd на tun0 .
Natd на fxp0 не потребуется.>
>${fwcmd} add deny all from 10.0.0.0/8 to any via ${oif}
>${fwcmd} add deny all from 172.16.0.0/12 to any via ${oif}
>${fwcmd} add deny all from 192.168.0.0/16 to any via ${oif}
>
>${fwcmd} add deny all from 0.0.0.0/8 to any via ${oif}
>${fwcmd} add deny all from 169.254.0.0/16 to any via ${oif}
>${fwcmd} add deny all from 192.0.2.0/24 to any via ${oif}
>${fwcmd} add deny all from 224.0.0.0/4 to any via ${oif}
>${fwcmd} add deny all from 240.0.0.0/4 to any via ${oif}
>
>${fwcmd} add pass tcp from any to any established
>
>${fwcmd} add pass all from any to any frag
>
>${fwcmd} add pass tcp from any to ${oip} 25 setup
>${fwcmd} add pass tcp from any to ${oip} 110 setup
>
>$ipfw add pass all from any to any via ng0
>
>${fwcmd} add deny log tcp from any to any in via ${oif}
>setup
>
>${fwcmd} add pass tcp from any to any setup
>
>${fwcmd} add pass udp from ${oip} to any 53 keep-state
>
>${fwcmd} add pass udp from ${oip} to any 123 keep-state
>Если интересно, могу показать обо что я голову ломал.