Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по FreeBSD (http://forum.oszone.net/forumdisplay.php?f=10)
-   -   [решено] MPD и настройки bundle (http://forum.oszone.net/showthread.php?t=98679)

Oleg_Sch 21-01-2008 14:16 722119

MPD и настройки bundle
 
Доброе время суток!
Сразу скажу - ни гугль, ни opennet с налета не ответили.
Кратко конфигурация и ТЗ:
Есть шлюз под FreeBSD 7 current. на нем крутится MPD (3.18), обеспечивает VPN подключения. Пользователей немного (около 10), поэтому радиусов и т.п. нет - родные mpd.conf, mpd.secret, mpd.links.
Все это работает прелестно, но... Надо конкретным пользователям отдавать конкретные сервера ДНС в зависимости от логина. Почитал man на mpd, вроде как "set bundle authname bla-bla" должен привязывать конкреный узел пользователю. Пытаюсь сделать так (mpd.conf):
Код:

default:
        load vpn00
        load vpn01
        load vpn02
        load vpn03
.....
vpn00:
        new -i ng5 vpn00 vpn00
        load vpn_standart

vpn01:
        new -i ng6 vpn01 vpn01
        load vpn_standart

vpn02:
        new -i ng7 vpn02 vpn02
        load vpn_standart
        set bundle authname "Oleg_Sch"
        set ipcp dns 192.168.0.2 192.168.0.1

vpn03:
        new -i ng8 vpn03 vpn03
        load vpn_standart

vpn_standart:
        set iface disable on-demand
        set bundle enable multilink
        set link yes acfcomp protocomp
#Требуем chap авторизации
        set link no pap chap
        set link enable chap
        set link keep-alive 60 180
        set ipcp yes vjcomp
#Устанавливаем DNS и Wins
        set ipcp dns здесь_ДНСы_моего_провайдера
        set iface enable proxy-arp
#Включаем компрессию данных
        set bundle enable compression
#Включаем компрессию данных, совсестимую с Microsoft-клиентами, должно быть вкомпилено в ядро
        set ccp yes mppc
#Включаем шифрование, совместимое с Microsoft-клиентами, должно быть вкомпилено в ядро
        set ccp yes mpp-e40
        set ccp yes mpp-e56
        set ccp yes mpp-e128
        set ccp yes mpp-stateless
        #set bundle yes crypt-reqd

#Разрешаем входящие соединения
        set pptp enable incoming
        set pptp disable originate
#Проблема с потерей пакетов в виндовозном клиенте
        set pptp disable windowing
        set iface enable tcpmssfix
        set iface mtu 1500
        set link mtu 1500

Пытаюсь подключиться со своим логином (должно привязаться к vpn02 и дать отдельные ДНСы), не получается. Все равно попадаю на bundle vpn00 на ng5, т.е. не могу сделать "тонкую" настройку под конкретного пользователя.
У кого-нибудь будут соображения ?

Aksel 25-01-2008 09:15 725109

vpn02:
new -i ng7 vpn02 vpn02
load vpn_standart
set bundle authname "Oleg_Sch"
set ipcp dns 192.168.0.2 192.168.0.1

Как видно по твоему конфигу у тебя вообще не присваиваются IP адреса... или может быть они в другом месте у тебя присваиваются ..?
set ipcp ranges 192.168.50.1/24 192.168.50.52/24 - примерно так - этот параметр можно указать либо отдельно для каждого бундла либо в vpn_standart т.е. когда ты будешь знать что у тебя к примеру бундл vpn02 имеет ip 192.168.10.5 ты просто этот IP прибьешь к пользователю в файле mpd.secret

Попробуй для начала прибить этому бундлу отдельный IP...
если что стучи 241093614

Oleg_Sch 26-01-2008 10:35 725895

Aksel, спасибо за содействие. Наэкспериментировался, ничего не помогло :(
Пытался вставлять "set bundle authname Oleg_Sch" до "load vpn_standart", пытался в разных вариантах добавить "set ipcp ranges" - бесполезно.

Делаю вывод, что MPD при подключении пользователя находит первый свободные bundle и использует его.
IP у меня на каждого пользователя статические, прописаны в mpd.secret
Вот начало лога одного подключения (vpn00 был занят другим пользователем):
Код:

mpd: PPTP connection from xx.yy.zz.60:1282
pptp1: attached to connection with xx.yy.zz.60:1282
[vpn01] IFACE: Open event
[vpn01] IPCP: Open event
[vpn01] IPCP: state change Initial --> Starting
[vpn01] IPCP: LayerStart
[vpn01] IPCP: Open event
[vpn01] bundle: OPEN event in state CLOSED
[vpn01] opening link "vpn01"...
[vpn01] link: OPEN event
[vpn01] LCP: Open event
[vpn01] LCP: state change Initial --> Starting
[vpn01] LCP: LayerStart
[vpn01] device: OPEN event in state DOWN
[vpn01] attaching to peer's outgoing call
[vpn01] device is now in state OPENING
[vpn01] device: UP event in state OPENING
[vpn01] device is now in state UP
[vpn01] link: UP event
[vpn01] link: origination is remote
[vpn01] LCP: Up event
[vpn01] LCP: state change Starting --> Req-Sent
[vpn01] LCP: phase shift DEAD --> ESTABLISH
[vpn01] LCP: SendConfigReq #5
 ACFCOMP
 PROTOCOMP
 MRU 1500
 MAGICNUM ada52b61
 AUTHPROTO CHAP MSOFTv2
 MP MRRU 1600
 MP SHORTSEQ
 ENDPOINTDISC [802.1] 00 10 7a 10 18 24
pptp1-0: ignoring SetLinkInfo
[vpn01] LCP: rec'd Configure Request #0 link 0 (Req-Sent)
 MRU 1400
 MAGICNUM 7cf0032b
 PROTOCOMP
 ACFCOMP
 CALLBACK
  Not supported
[vpn01] LCP: SendConfigRej #0
 CALLBACK
[vpn01] LCP: rec'd Configure Reject #5 link 0 (Req-Sent)
 MP MRRU 1600
 MP SHORTSEQ
 ENDPOINTDISC [802.1] 00 10 7a 10 18 24
[vpn01] LCP: SendConfigReq #6
 ACFCOMP
 PROTOCOMP
 MRU 1500
 MAGICNUM ada52b61
 AUTHPROTO CHAP MSOFTv2
[vpn01] LCP: rec'd Configure Request #1 link 0 (Req-Sent)
 MRU 1400
 MAGICNUM 7cf0032b
 PROTOCOMP
 ACFCOMP
[vpn01] LCP: SendConfigAck #1
 MRU 1400
 MAGICNUM 7cf0032b
 PROTOCOMP
 ACFCOMP
[vpn01] LCP: state change Req-Sent --> Ack-Sent
[vpn01] LCP: rec'd Configure Ack #6 link 0 (Ack-Sent)
 ACFCOMP
 PROTOCOMP
 MRU 1500
 MAGICNUM ada52b61
 AUTHPROTO CHAP MSOFTv2
[vpn01] LCP: state change Ack-Sent --> Opened
[vpn01] LCP: phase shift ESTABLISH --> AUTHENTICATE
[vpn01] LCP: auth: peer wants nothing, I want CHAP
[vpn01] CHAP: sending CHALLENGE
[vpn01] LCP: LayerUp
[vpn01] LCP: rec'd Ident #2 link 0 (Opened)
 MESG: MSRASV5.10
[vpn01] LCP: rec'd Ident #3 link 0 (Opened)
 MESG: MSRAS-0-MYHOMECOMPUTERNAME
[vpn01] CHAP: rec'd RESPONSE #1
 Name: "Oleg_Sch"
 Peer name: "Oleg_Sch"
 Response is valid
[vpn01] CHAP: sending SUCCESS
[vpn01] LCP: authorization successful
[vpn01] LCP: phase shift AUTHENTICATE --> NETWORK
[vpn01] setting interface ng6 MTU to 1400 bytes
[vpn01] up: 1 link, total bandwidth 64000 bps
[vpn01] IPCP: Up event
[vpn01] IPCP: state change Starting --> Req-Sent
[vpn01] IPCP: SendConfigReq #3

Видно, что ЕЩЕ ДО АВТОРИЗАЦИИ MPD присвоил определенный bundle.
Если сделать так:
Код:

        new -i ng6 vpn01 vpn01
        set bundle authname Oleg_Sch
        load vpn_standart
        set ipcp dns 192.168.0.2 192.168.0.1

и подключиться к этому bundle (на vpn00 уже сидит другой пользователь, я автоматом попадаю на следующий, на данный момент это vpn01) - DNSы ставятся те, что указаны после load vpn_standart, т.е. переопределение происходит. Только вот как это переопределение (новые ДНС вместо тех, которые в vpn_standart) привязать к имени пользователя... У меня складывается ощущение, что никак :(

Oleg_Sch 27-01-2008 15:31 726706

Два дня не прошли даром. Победил.
Если кому интересно - решение.
Необходим свежий MPD5, т.к. в нем появилась нужная мне команда "set link action"
Вот рабочий конфиг:
Код:

startup:
        # configure mpd users
        set user Oleg_Sch mypassword admin
        # configure the console
        set console self 127.0.0.1 5007
        set console open
        # configure the web server
        set web self 0.0.0.0 5008
        set web open

default:
        load pptp_server_profile_1
        load pptp_server_profile_2

pptp_server_bundles_common:
        set iface idle 1800
        set iface enable tcpmssfix
        set ipcp yes vjcomp
        set bundle enable compression
        set ccp yes mppc
        set mppc yes e40
        set mppc yes e128
        set mppc yes stateless
        set mppc no compress

pptp_server_links_common:
# Multilink adds some overhead, but gives full 1500 MTU.
        set link enable multilink
        set link yes acfcomp protocomp
        set link no pap chap
        set link enable chap
        set link keep-alive 10 60
# We reducing link mtu to avoid GRE packet fragmentation.
        set link mtu 1460
        set link enable incoming

pptp_server_profile_1:
        create bundle template P1B
        load pptp_server_bundles_common
        set ipcp dns DNSы_моего_провайдера

        create link template P1L pptp
# Set bundle template to use
       set link action bundle P2B "Oleg_Sch"
        set link action bundle P1B

        load pptp_server_links_common

pptp_server_profile_2:
        create bundle template P2B
        load pptp_server_bundles_common
        set iface enable proxy-arp
        set ipcp dns 192.168.0.2 192.168.0.1
        set ipcp nbns 192.168.0.2 192.168.0.1
        set mppc yes compress


        create link template P2L pptp
# Set bundle template to use
        set link action bundle P2B
        load pptp_server_links_common

Что мы имеем в итоге.
Есть пользователи, которым нужен только инет и есть 2-3 человека, которым нужна и офисная локалка из дома.
Все по умолчанию попадают в profile_1 и используют только инет, а пользователи перечисленные в командах "set link action bundle P2B "username"" - доступ к локалке (внутрение ДНСы, proxy ARP, сжатие данных).
Получилось даже гибче, чем первоначально задумывал.


Время: 03:28.

Время: 03:28.
© OSzone.net 2001-