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

Исходное сообщение
"MPD4+NAT+Static - Проблема"

Отправлено Snake , 16-Окт-09 11:45 
Доброго времени суток!

Имеется шлюз на FreeBSD 7.2, с поднятыми на нем MPD4 (pptp) и натом через PF. Ядро собрано со следующими опциями:

options         NETGRAPH
options         NETGRAPH_PPP
options         NETGRAPH_PPTPGRE

options         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 tables

Internet:
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.conf

ext_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

Сломал уже всю голову, прошу помочь, кто чем может. Заранее спасибо!


Содержание

Сообщения в этом обсуждении
"MPD4+NAT+Static - Проблема"
Отправлено serg_b , 16-Окт-09 12:14 
>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)


"MPD4+NAT+Static - Проблема"
Отправлено Snake , 16-Окт-09 12:36 
>[оверквотинг удален]
>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)


"MPD4+NAT+Static - Проблема"
Отправлено serg_b , 16-Окт-09 12:45 
Извиняюсь, забыл дописать :)

"MPD4+NAT+Static - Проблема"
Отправлено mr_gfd , 16-Окт-09 12:47 
netstat -nr ?

"MPD4+NAT+Static - Проблема"
Отправлено Snake , 16-Окт-09 14:05 
>netstat -nr ?

В первом посте есть вывод. Но все решилось уже, спасибо. Сам ступил. Понятно, что здесь провайдерские медийные сетки не directly connected, поэтому статики для локалки работать не будут, только НАТ.