Доброго времени суток!Имеется шлюз на FreeBSD 7.2, с поднятыми на нем MPD4 (pptp) и натом через PF. Ядро собрано со следующими опциями:
options NETGRAPH
options NETGRAPH_PPP
options NETGRAPH_PPTPGREoptions ALTQ
options ALTQ_CBQ
options ALTQ_RED
options ALTQ_RIO
options ALTQ_HFSC
options ALTQ_PRIQ
options ALTQ_NOPCC# PF Support
device pf
device pflog
device pfsync
Интерфейсы следующие:re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=389b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC>
ether 00:1c:25:a3:23:b3
inet 10.18.88.239 netmask 0xfffffe00 broadcast 10.18.89.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
vr0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=2808<VLAN_MTU,WOL_UCAST,WOL_MAGIC>
ether 00:21:91:8a:7a:4d
inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> metric 0 mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
pflog0: flags=0<> metric 0 mtu 33204
pfsync0: flags=0<> metric 0 mtu 1460
syncpeer: 224.0.0.240 maxupd: 128
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1460
inet 88.82.хх.хх --> 172.16.255.10 netmask 0xffffffffС недавнего времени провайдер запустил у себя некоторые медийные ресурсы, которые доступны даже без установления VPN-сессии и скорость на них провайдером не режется. Маршруты на эти сетки приходят от провайдера по DHCP. Общая таблица маршрутизации ниже (три последних - от провайдера):
# netstat -rn
Routing tablesInternet:
Destination Gateway Flags Refs Use Netif Expire
default 172.16.255.10 UGS 0 2458 ng0
10.18.88.0/23 link#1 UC 0 0 re0
10.18.88.1 00:1c:b0:ca:1b:c0 UHLW 3 29 re0 1198
127.0.0.1 127.0.0.1 UH 0 0 lo0
172.16.255.10 10.18.88.1 UGHS 1 4792 re0
192.168.1.0/24 link#2 UC 0 0 vr0
192.168.1.1 00:21:91:8a:7a:4d UHLW 1 0 lo0
192.168.1.2 00:1f:c6:e5:b9:19 UHLW 1 2018 vr0 353
217.30.ххх.ххх/28 10.18.88.1 UGS 0 0 re0
217.30.ххх.ххх/30 10.18.88.1 UGS 0 0 re0
217.30.ххх.ххх/27 10.18.88.1 UGS 0 4147 re0Конфигурация PF - наипростейшая, тестовый вариант, так сказать:
cat /etc/pf.confext_if="ng0"
dsl_if="re0"
int_if="vr0"
internal_net="192.168.1.0/24"
# nat
no nat on $ext_if from $internal_net to 217.30.ххх.ххх/27
no nat on $ext_if from $internal_net to 217.30.ххх.ххх/28
no nat on $ext_if from $internal_net to 217.30.ххх.ххх/30
nat on $ext_if from $internal_net to any -> ($ext_if)
# open all
pass out all keep state
pass in all keep state
pass quick on lo0 all
pass quick on $int_if all
pass quick on $dsl_if all
pass out on $ext_if all keep state
pass in on $ext_if all keep state
pass out on $dsl_if all keep state
pass in on $dsl_if all keep stateНу и rc.conf выглядит следующим образом:
defaultrouter="10.18.88.1"
gateway_enable="YES"
hostname="gate1.local.dom"
ifconfig_vr0="inet 192.168.1.1 netmask 255.255.255.0"
ifconfig_re0="DHCP"
keymap="ru.koi8-r"
sshd_enable="YES"
mpd_enable="YES"
pf_enable="YES"Проблема в том, что пользователи из локальной сети не могут попасть на эти медийные ресурсы. С самой BSD машины ресурсы доступны с соурсом 10.18.88.239, с соурсом 192.168.1.1 - нет. И трейс умирает на первом же хопе. Отключал pf и mpd. Ситуация не меняется. Т.е. создается такое впечатление, что не включен net.inet.ip.forwarding. Хотя на самом деле включен:
# sysctl -a | grep net.inet.ip.forwarding
net.inet.ip.forwarding: 1Сломал уже всю голову, прошу помочь, кто чем может. Заранее спасибо!
>ext_if="ng0"
>dsl_if="re0"
>int_if="vr0"
>internal_net="192.168.1.0/24"
># nat
>nat on $ext_if from $internal_net to any -> ($ext_if)Доброго времени суток.
Вам надо убрать запрет ната на эти сетки, тоесть строки:
no nat on $ext_if from $internal_net to 217.30.ххх.ххх/27
no nat on $ext_if from $internal_net to 217.30.ххх.ххх/28
no nat on $ext_if from $internal_net to 217.30.ххх.ххх/30
и сделать нат на эти сети через интерфейс что смотрит в провайдера, т.е. re0.
Должно быть примерно так:
nat on $dsl_if from $internal_net to 217.30.ххх.ххх/27
nat on $dsl_if from $internal_net to 217.30.ххх.ххх/28
nat on $dsl_if from $internal_net to 217.30.ххх.ххх/30
nat on $ext_if from $internal_net to any -> ($ext_if)
>[оверквотинг удален]
>no nat on $ext_if from $internal_net to 217.30.ххх.ххх/27
>no nat on $ext_if from $internal_net to 217.30.ххх.ххх/28
>no nat on $ext_if from $internal_net to 217.30.ххх.ххх/30
>и сделать нат на эти сети через интерфейс что смотрит в провайдера,
>т.е. re0.
>Должно быть примерно так:
>nat on $dsl_if from $internal_net to 217.30.ххх.ххх/27
>nat on $dsl_if from $internal_net to 217.30.ххх.ххх/28
>nat on $dsl_if from $internal_net to 217.30.ххх.ххх/30
>nat on $ext_if from $internal_net to any -> ($ext_if)Спасибо за подсказку! Помогло, только правила немножко по другому звучат:
nat on $dsl_if from $internal_net to 217.30.ххх.ххх/27 -> ($dsl_if)
nat on $dsl_if from $internal_net to 217.30.ххх.ххх/28 -> ($dsl_if)
nat on $dsl_if from $internal_net to 217.30.ххх.ххх/30 -> ($dsl_if)
nat on $ext_if from $internal_net to any -> ($ext_if)
Извиняюсь, забыл дописать :)
netstat -nr ?
>netstat -nr ?В первом посте есть вывод. Но все решилось уже, спасибо. Сам ступил. Понятно, что здесь провайдерские медийные сетки не directly connected, поэтому статики для локалки работать не будут, только НАТ.