PF + mpd

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
goblin13
проходил мимо
Сообщения: 7
Зарегистрирован: 2010-02-25 16:07:41

PF + mpd

Непрочитанное сообщение goblin13 » 2010-02-25 16:20:53

Всем привет. Хочу описать мою проблему: есть сеть корпоративная, в ней рулит сервер под FreeBSD 7 с фильтром пф . Была необходимость установить мпд как впн сервер для того чтоб затуннелировать с клиентом из другой сети. Все шло нормально пока появилась необходимость не только входить с мира по впн но и выходить тоже. Все порты открыты ибо стоит правила

Код: Выделить всё

pass in all
pass out all
Но выходить из этой сети по впн так и не удалось - клиент доходит до проверки имени и пароля и отваливается в 619
Читал на этом форуме что это от того что гре не ходит наружу. Из других источников узнал что пф вообще не умеет натить гре. Скажите кому-то удалось решить данную проблему или все-таки надо поменять фаер на ipfw?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Shuba
ст. сержант
Сообщения: 365
Зарегистрирован: 2008-03-25 10:58:21
Откуда: Минск
Контактная информация:

Re: PF + mpd

Непрочитанное сообщение Shuba » 2010-02-25 17:21:11

Удалось, переходом на ipfw
Сила ночи, сила дня - одинакова фигня!

goblin13
проходил мимо
Сообщения: 7
Зарегистрирован: 2010-02-25 16:07:41

Re: PF + mpd

Непрочитанное сообщение goblin13 » 2010-02-25 17:23:17

Shuba писал(а):Удалось, переходом на ipfw
все таки это единственный выход ). Не охота сейчас ядро скомпилить...

_Попов
проходил мимо

Re: PF + mpd

Непрочитанное сообщение _Попов » 2010-02-25 17:58:25

я не понял сути вопроса.

надо объяснить подробнее, а лучше с картинкой.

Аватара пользователя
Shuba
ст. сержант
Сообщения: 365
Зарегистрирован: 2008-03-25 10:58:21
Откуда: Минск
Контактная информация:

Re: PF + mpd

Непрочитанное сообщение Shuba » 2010-02-25 18:01:30

А зачем ядро пересобирать??? Оба фаера работают и без перекомпиляции адра. Вообще-то где-то на просторах инета была статейка, в ней pf оставался и дополнительно к нему делался ядерный нат с помощью ipfw... Но имхо лудше один фаер заюзать.
_Попов писал(а):я не понял сути вопроса.
надо объяснить подробнее, а лучше с картинкой.
Человеку нужно, чтобы машины за роутером могли конектиться ко внешним vpn-сервакам, т.е. нужно нат-ить gre
Сила ночи, сила дня - одинакова фигня!

goblin13
проходил мимо
Сообщения: 7
Зарегистрирован: 2010-02-25 16:07:41

Re: PF + mpd

Непрочитанное сообщение goblin13 » 2010-02-25 18:08:18

Shuba писал(а):лудше один фаер заюзать.
согласен

мне кажется ipfw лучше засунуть в ядро чем как модуль загрузить. Ибо нужны опции там допольнительные

_Гагарин
проходил мимо

Re: PF + mpd

Непрочитанное сообщение _Гагарин » 2010-02-25 18:12:45

странно, а как это у меня тогда получается в одном месте (шлюзом FreeBSD+PF) через nat поднять впн соединение из локальной WinXP до в инете находящегося сервера (FreeBSD+PF+MPD) и полностью лазить в тамошней локалке?

без картинки и листинга правил PF ничего не понятно.

goblin13
проходил мимо
Сообщения: 7
Зарегистрирован: 2010-02-25 16:07:41

Re: PF + mpd

Непрочитанное сообщение goblin13 » 2010-02-25 18:30:26

да нет там правил - все разрешено

Код: Выделить всё

ext_if="rl1"     # replace with actual external interface name i.e., dc0
int_if="rl0"   # replace with actual internal interface name i.e., dc1
internal_net="192.168.152.0/24"
external_addr="xxx.xx.xxx.xx"
int_addr="192.168.152.254"

table <users> persist file "/etc/pf/nat.conf"

nat on $ext_if proto { tcp udp icmp gre } from $int_if:network to any -> ($ext_if)

rdr on $ext_if proto tcp from any to $external_addr/32 port 3389 -> 192.168.152.251 port 3389
rdr on $ext_if proto {tcp, udp} from any to $external_addr/32 port 27000 -> 192.168.152.250 port 27000
rdr on $ext_if proto tcp from any to $external_addr/32 port 2701 -> 192.168.152.250 port 80
rdr on $int_if proto {tcp, udp} from any to $int_addr port 53 -> 218.56.210.34 port 53

pass in all
pass out all

_Сатана
проходил мимо

Re: PF + mpd

Непрочитанное сообщение _Сатана » 2010-02-25 18:50:41

я наверное повторюсь, но я так и не понял сути вопроса.

касательно того, что ты выложил, и если бы надо было просто чтобы из int_if:network законекались на удаленный VPN сервак, то вот такого:

Код: Выделить всё

ext_if="rl1"     # replace with actual external interface name i.e., dc0
int_if="rl0"   # replace with actual internal interface name i.e., dc1

#--    опции    --
set block-policy return
set skip on lo0
set timeout tcp.established 7200
#-----------------

scrub in all

nat on $ext_if from ($int_if:network) to any -> ($ext_if) #натируем

#
# ---  фильтр  ---
#
block all #запретим все отовсюду

pass out on $ext_if from ($ext_if) to any  #разрешаем лезть в инет серваку
pass in on $int_if from any to any         #разр. весь входящий из локалки

pass in inet proto icmp all icmp-type echoreq  #разрешили ping сервака

goblin13
проходил мимо
Сообщения: 7
Зарегистрирован: 2010-02-25 16:07:41

Re: PF + mpd

Непрочитанное сообщение goblin13 » 2010-02-25 19:01:45

_Сатана писал(а):я наверное повторюсь, но я так и не понял сути вопроса.

касательно того, что ты выложил, и если бы надо было просто чтобы из int_if:network законекались на удаленный VPN сервак, то вот такого:

Код: Выделить всё

ext_if="rl1"     # replace with actual external interface name i.e., dc0
int_if="rl0"   # replace with actual internal interface name i.e., dc1

#--    опции    --
set block-policy return
set skip on lo0
set timeout tcp.established 7200
#-----------------

scrub in all

nat on $ext_if from ($int_if:network) to any -> ($ext_if) #натируем

#
# ---  фильтр  ---
#
block all #запретим все отовсюду

pass out on $ext_if from ($ext_if) to any  #разрешаем лезть в инет серваку
pass in on $int_if from any to any         #разр. весь входящий из локалки

pass in inet proto icmp all icmp-type echoreq  #разрешили ping сервака

и чем же я в моем конфиге ошибся? кроме того что разрешаю всем да все. Тут вроде объяснили что вся проблема с натом гре. Где в вашем конфиге собственно этот гре разрешается?

_Сатана
проходил мимо

Re: PF + mpd

Непрочитанное сообщение _Сатана » 2010-02-25 19:42:30

у кого проблема?
с этим конфигом ты подконекаешься к впн серверу через nat

может у тебя проблема на стороне сервака vpn?

Аватара пользователя
Shuba
ст. сержант
Сообщения: 365
Зарегистрирован: 2008-03-25 10:58:21
Откуда: Минск
Контактная информация:

Re: PF + mpd

Непрочитанное сообщение Shuba » 2010-02-25 21:35:56

_Сатана писал(а):у кого проблема?
с этим конфигом ты подконекаешься к впн серверу через nat

может у тебя проблема на стороне сервака vpn?
О как, а я и не знал, ломал бедный голову, как gre занатить, оказывается просто

Код: Выделить всё

nat on $ext_if from ($int_if:network) to any -> ($ext_if) #натируем
А ты пробовал то делать соеденение по vpn с такими настройками фаера из локалки???
Сила ночи, сила дня - одинакова фигня!

_Менделеев
проходил мимо

Re: PF + mpd

Непрочитанное сообщение _Менделеев » 2010-02-25 21:52:20

получается, что ты реально не знал и голову себе ломал... я первый раз слышу что какие-то проблемы с этим GRE...

если отбросить ту кучу правил, чтобы работало остальное г*но, то именно такие правила и нужны, чтобы клиент из локалки с WinXP через nat на FreeBSD+PF законекался на впн в инете на FreeBSD+PF+MPD

я уж даже начал сомневаться...
взял вот прямо сейчас законекался - все пашет
какие-то проблемы не понятные....

реально, мож я че не понимаю

вот первые несколько строк tcpdump на внешнем интерфейсе, шлюза NAT, за которым находится клиент впн:

Код: Выделить всё

/usr/ports/net/proxychains #>tcpdump -i ng0 proto gre
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ng0, link-type NULL (BSD loopback), capture size 96 bytes
21:46:35.476490 IP VPNв ИНЕТЕ > NATшлюзПередКлиентом: GREv1, call 32768, seq 0, length 39: LCP, Conf-Request (0x01), id 1, length 25
21:46:35.500287 IP NATшлюзПередКлиентом > VPNв ИНЕТЕ: GREv1, call 41719, seq 0, length 37: LCP, Conf-Request (0x01), id 0, length 23
21:46:35.535712 IP VPNв ИНЕТЕ > NATшлюзПередКлиентом: GREv1, call 32768, seq 1, ack 0, length 27: LCP, Conf-Reject (0x04), id 0, length 9
21:46:35.537266 IP NATшлюзПередКлиентом > VPNв ИНЕТЕ: GREv1, call 41719, seq 1, ack 1, length 38: LCP, Conf-Request (0x01), id 1, length 20
21:46:35.573114 IP VPNв ИНЕТЕ > NATшлюзПередКлиентом: GREv1, call 32768, seq 2, ack 1, length 38: LCP, Conf-Ack (0x02), id 1, length 20
21:46:37.513929 IP VPNв ИНЕТЕ > NATшлюзПередКлиентом: GREv1, call 32768, seq 3, length 39: LCP, Conf-Request (0x01), id 2, length 25
21:46:37.515688 IP NATшлюзПередКлиентом > VPNв ИНЕТЕ: GREv1, call 41719, seq 2, ack 3, length 43: LCP, Conf-Ack (0x02), id 2, length 25
21:46:37.516017 IP NATшлюзПередКлиентом > VPNв ИНЕТЕ: GREv1, call 41719, seq 3, length 32: LCP, Ident (0x0c), id 2, length 20
21:46:37.516107 IP NATшлюзПередКлиентом > VPNв ИНЕТЕ: GREv1, call 41719, seq 4, length 34: LCP, Ident (0x0c), id 3, length 22
давай че надо спрашивай, я тебе выложу.

Аватара пользователя
Shuba
ст. сержант
Сообщения: 365
Зарегистрирован: 2008-03-25 10:58:21
Откуда: Минск
Контактная информация:

Re: PF + mpd

Непрочитанное сообщение Shuba » 2010-02-25 22:11:35

Код: Выделить всё

[shuba@beta ~]$ sudo pfctl -sn
nat on tun0 inet from 192.168.0.0/24 to any -> yyy.yyy.yyy.yyy
[shuba@beta ~]$

Код: Выделить всё

sudo tcpdump -i tun0 -n proto gre and dst host xxx.xxx.xxx.xxx
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type NULL (BSD loopback), capture size 68 bytes
21:18:23.460200 IP 192.168.0.100 > xxx.xxx.xxx.xxx: GREv1, call 35392, seq 0, length 37: LCP, Conf-Request (0x01), id 0, length 23
21:18:25.454355 IP 192.168.0.100 > xxx.xxx.xxx.xxx: GREv1, call 35392, seq 1, length 37: LCP, Conf-Request (0x01), id 1, length 23
21:18:28.454992 IP 192.168.0.100 > xxx.xxx.xxx.xxx: GREv1, call 35392, seq 2, length 37: LCP, Conf-Request (0x01), id 2, length 23
21:18:32.455818 IP 192.168.0.100 > xxx.xxx.xxx.xxx: GREv1, call 35392, seq 3, length 37: LCP, Conf-Request (0x01), id 3, length 23
21:18:36.456635 IP 192.168.0.100 > xxx.xxx.xxx.xxx: GREv1, call 35392, seq 4, length 37: LCP, Conf-Request (0x01), id 4, length 23
21:18:40.457484 IP 192.168.0.100 > xxx.xxx.xxx.xxx: GREv1, call 35392, seq 5, length 37: LCP, Conf-Request (0x01), id 5, length 23
Сила ночи, сила дня - одинакова фигня!

Аватара пользователя
Shuba
ст. сержант
Сообщения: 365
Зарегистрирован: 2008-03-25 10:58:21
Откуда: Минск
Контактная информация:

Re: PF + mpd

Непрочитанное сообщение Shuba » 2010-02-25 22:14:51

Хотя есть такой вариант, у меня на шлюзе стоит

Код: Выделить всё

FreeBSD host 7.2-RELEASE-p6 FreeBSD 7.2-RELEASE-p6 #0: Fri Jan 22 15:47:09 EET 2010     root@host:/usr/obj/usr/src/sys/Shuba_Kernel  i386
Может в 8-ке допилили pf???
Сила ночи, сила дня - одинакова фигня!

_FreeBSD
проходил мимо

Re: PF + mpd

Непрочитанное сообщение _FreeBSD » 2010-02-25 22:35:56

так как шлюз NAT должен подканеатьсяк прову, то имеем дело с ng0 интерфесом, но ведь это не суть важно?:

Код: Выделить всё

#>pfctl -a ng-nat/ng0 -s nat
No ALTQ support in kernel
ALTQ related functions disabled
nat on ng0 all -> (ng0) round-robin

Код: Выделить всё

#>tcpdump -i ng0 -n proto gre and dst host ИПсервераVPN
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ng0, link-type NULL (BSD loopback), capture size 96 bytes
22:24:33.852596 IP ИПшлюзаNAT > ИПсервераVPN: GREv1, call 41719, seq 0, ack 0, length 41: LCP, Conf-Request (0x01), id 0, length 23
22:24:33.852695 IP ИПшлюзаNAT > ИПсервераVPN: GREv1, call 41719, seq 1, length 39: LCP, Conf-Ack (0x02), id 1, length 25
22:24:33.886178 IP ИПшлюзаNAT > ИПсервераVPN: GREv1, call 41719, seq 2, ack 1, length 38: LCP, Conf-Request (0x01), id 1, length 20
22:24:33.920135 IP ИПшлюзаNAT > ИПсервераVPN: GREv1, call 41719, seq 3, ack 3, length 36: LCP, Ident (0x0c), id 2, length 20
22:24:33.920243 IP ИПшлюзаNAT > ИПсервераVPN: GREv1, call 41719, seq 4, length 34: LCP, Ident (0x0c), id 3, length 22
22:24:33.920526 IP ИПшлюзаNAT > ИПсервераVPN: GREv1, call 41719, seq 5, length 71: CHAP, Response (0x02), id 1, Value 44c5c8
вот правила (без лишнего г*на) PF на шлюзе NAT:

Код: Выделить всё

ext_if = "fxp0"  #соединен с интернетом
int_if = "vr0"  #внутрь локалной сети

#--    опции    --
set block-policy return
set skip on lo0
set timeout tcp.established 7200
#-----------------

scrub in all

nat-anchor "ng-nat/*"

#
# ---  фильтр  ---
#
block all #запретим все отовсюду

pass out on $ext_if from ($ext_if) to any  #разрешаем серваку все
pass in on $int_if from any to any         #разр. весь входящий из локалки

pass in inet proto icmp all icmp-type echoreq  #разрешили ping сервака

anchor "ng-out/*"
вот правила, которые грузятся при старте соединения MPD до прова на шлюзе NAT:

Код: Выделить всё

#>cat /usr/local/etc/mpd5/up-dozv
#!/bin/sh
echo "nat on $1 from any to any -> ($1)" | pfctl -a ng-nat/$1 -f -;
echo "pass out on $1 from ($1) to any" | pfctl -a ng-out/$1 -f -;

_Попов
проходил мимо

Re: PF + mpd

Непрочитанное сообщение _Попов » 2010-02-25 22:44:01

на шлюзе NAT

Код: Выделить всё

FreeBSD 8.0-RELEASE FreeBSD 8.0-RELEASE #0: Sat Nov 21 15:48:17 UTC 2009
на ВПН серваке

Код: Выделить всё

FreeBSD 7.2-RELEASE FreeBSD 7.2-RELEASE #0: Fri May  1 08:49:13  UTC 2009
но на шлюзе я поставил 8ку только лишь чтобы понять, а почему же у людей проблема с настройкой впн сервера MPD на 8ке?..
до этого был 7ка и все работало

ничего специально не настраивал по причине лени, если не завелось сразу забил бы нафигг
или не забил бы...
наверное бы OpenVPN пришлось бы осваивать

Аватара пользователя
Shuba
ст. сержант
Сообщения: 365
Зарегистрирован: 2008-03-25 10:58:21
Откуда: Минск
Контактная информация:

Re: PF + mpd

Непрочитанное сообщение Shuba » 2010-02-26 10:47:37

_FreeBSD писал(а):так как шлюз NAT должен подканеатьсяк прову, то имеем дело с ng0 интерфесом, но ведь это не суть важно?:
Если конектиться с самого шлюза - то проблемы нет, т.к. gre будет сразу без всякого nat-а идти с ng0 (или с tun0 как у меня). Для этого nat не требуется. А вот если конектиться с локалки с серым айпишником - тогда траблы. А топикстартер писал:
goblin13 писал(а):Все шло нормально пока появилась необходимость не только входить с мира по впн но и выходить тоже.
...
Но выходить из этой сети по впн так и не удалось - клиент доходит до проверки имени и пароля и отваливается в 619
Сила ночи, сила дня - одинакова фигня!

_9 мая
проходил мимо

Re: PF + mpd

Непрочитанное сообщение _9 мая » 2010-02-26 11:03:38

ты не врубился походу.
ng0 на шлюзе это чтобы у меня инет появился в локалке
а соединение до ВПН сервера поднимается от компа из локалки (192.168.1/24) через ng0 через nat

_FreeBSD
проходил мимо

Re: PF + mpd

Непрочитанное сообщение _FreeBSD » 2010-02-26 11:20:05

Shuba писал(а):

Код: Выделить всё

[shuba@beta ~]$ sudo pfctl -sn
nat on tun0 inet from 192.168.0.0/24 to any -> yyy.yyy.yyy.yyy
[shuba@beta ~]$
если это не опечатка, то правило ошибочное, т.к. не понятно зачем подменять адрес источника на yyy.yyy.yyy.yyy, а не на tun0.......

Код: Выделить всё

nat on tun0 inet from 192.168.0.0/24 to any -> tun0

Аватара пользователя
Shuba
ст. сержант
Сообщения: 365
Зарегистрирован: 2008-03-25 10:58:21
Откуда: Минск
Контактная информация:

Re: PF + mpd

Непрочитанное сообщение Shuba » 2010-02-26 16:59:20

_FreeBSD писал(а):
Shuba писал(а):

Код: Выделить всё

[shuba@beta ~]$ sudo pfctl -sn
nat on tun0 inet from 192.168.0.0/24 to any -> yyy.yyy.yyy.yyy
[shuba@beta ~]$
если это не опечатка, то правило ошибочное, т.к. не понятно зачем подменять адрес источника на yyy.yyy.yyy.yyy, а не на tun0.......

Код: Выделить всё

nat on tun0 inet from 192.168.0.0/24 to any -> tun0
Вот часть оригинального конфига:

Код: Выделить всё

# макросы                                                                                                                    
LanCard="re0"                           # Сетевуха на локальную сетку                                                        
LanNet="192.168/24"                     # Подсеть домашней локалки                                                           
VPNCard="tun0"                          # Виртуальная сетевуха VPN-клиента 
...
# Правила NAT
nat on $VPNCard from $LanNet to any -> $VPNCard
Сила ночи, сила дня - одинакова фигня!

goblin13
проходил мимо
Сообщения: 7
Зарегистрирован: 2010-02-25 16:07:41

Re: PF + mpd

Непрочитанное сообщение goblin13 » 2010-02-27 1:30:38

Shuba писал(а):
_Сатана писал(а):у кого проблема?
с этим конфигом ты подконекаешься к впн серверу через nat

может у тебя проблема на стороне сервака vpn?
О как, а я и не знал, ломал бедный голову, как gre занатить, оказывается просто

Код: Выделить всё

nat on $ext_if from ($int_if:network) to any -> ($ext_if) #натируем
А ты пробовал то делать соеденение по vpn с такими настройками фаера из локалки???
как раз этой твоей правилой я пробовал и нифига гре наружу ходить не хочеть )) На стороне серва все в порядке - ведь оттуда где нет фаера (то есть пф) конекчусь к нему.
Вы начали тут обсуждение непонятно чего, дампы выложили... не умеет пф натить наружу гре и все, че тут голову ломать. Ведь внутри все проходит все ок а наружу не пускает. А вы тут истории всякие начали

Можно считать тему закрытой. Ядро скомпилил, ipfw рулит щас.

_Попов
проходил мимо

Re: PF + mpd

Непрочитанное сообщение _Попов » 2010-02-27 9:32:54

goblin13 писал(а):как раз этой твоей правилой я пробовал и нифига гре наружу ходить не хочеть )) На стороне серва все в порядке - ведь оттуда где нет фаера (то есть пф) конекчусь к нему.
Вы начали тут обсуждение непонятно чего, дампы выложили... не умеет пф натить наружу гре и все, че тут голову ломать. Ведь внутри все проходит все ок а наружу не пускает. А вы тут истории всякие начали
зачем такие кординальные заявления. У меня умеет. Почему у тебя не умеет не знаю:
Если к Вам не прижимаются в метро, это вовсе не означает, что метро в Париже не существует!
PF рулит тоже в данном случае

tyler56
сержант
Сообщения: 198
Зарегистрирован: 2009-06-03 18:10:15

Re: PF + mpd

Непрочитанное сообщение tyler56 » 2010-02-28 12:53:53

Не осилил весь топик но у меня такая связка пашет без какого-то гемороя.

Код: Выделить всё

#192.168.5.1/25  vpn подсеть
inet_if="ng0"
local_if="rl1"
local_net="192.168.0.1/24"

nat pass on $inet_if from 192.168.5.1/25 to any -> ($inet_if)

#vpn mpd 1723 and gre
pass in on { $local_if, $inet_if } proto tcp from { $local_net, <my_inet_client> } \
to { $local_ip, $inet_ip } port = 1723 keep state

pass proto gre from any to any keep state