Войти

Показать полную графическую версию : [решено] MPD и настройки bundle


Oleg_Sch
21-01-2008, 14:16
Доброе время суток!
Сразу скажу - ни гугль, ни 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
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
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
Два дня не прошли даром. Победил.
Если кому интересно - решение.
Необходим свежий 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, сжатие данных).
Получилось даже гибче, чем первоначально задумывал.




© OSzone.net 2001-2012