Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> Security —> mpd – легко и просто!

mpd – легко и просто!

Автор: m`ax.


Мне нужно было сделать так, чтобы пользователи подключались к серверу по VPN тем самым открывая себе доступ в интернет. Первым делом я попытался организовать VPN по протоколу PPTP на PoPToP. Но, почему-то, у меня не получилось присваивать DNS. Не долго думая я отказался от PoPToP и воспользовался mpd. Оказалось mpd – это легко и просто.

Для начала я очень кратко опишу процесс настройки, не вдаваясь в детали. Сделаю так сказать шпаргалку. Позже исправлю, опишу подробнее. Кроме того, планирую добавлять в статью те фичи, которые я буду использовать, но до которых пока не дошёл.

Итак, mpd (Multi-link PPP daemon) примечателен тем, что в нём реализован VPN-сервер совместимый с Microsoft. Т.е. в подключении win-пользователей к нашему, FreeBSD-серверу не будет никаких проблем. Что нам собственно и нужно. (:

0. Подготавливаем.
Для mpd рекомендуется включить в FreeBSD-ядро опции NETGRAPH. Хотя говорят можно обойтись и без этого.

У меня в ядре (FreeBSD  6.1-RELEASE) следующее:

options         NETGRAPH
options         NETGRAPH_ETHER                  
options         NETGRAPH_SOCKET               
options         NETGRAPH_TEE       

1. Компилируем и инсталлируем.
Про обновление дерева портов через cvsup напоминать не буду (;

# cd /usr/ports/net/mpd
# make && make install


2. Конфигурируем
# cd /usr/local/etc/mpd

2.1  Интерфейсы
# ee mpd.conf


default:
        load pptp0
        load pptp1
        load pptp2


pptp0:
        new -i ng0 pptp0 pptp0        # создаём новый интерфейс ngX - имя
        set ipcp ranges 10.53.1.1/32 10.53.1.100/32 #локальный и удалённый IP-адреса
                                      # не должны совпадать с уже имеющимися
        load pptp_standart            # остальные параметры соединения – стандартные

pptp1:
        new -i ng1 pptp1 pptp1
        set ipcp ranges 10.53.1.1/32 10.53.1.101/32
        load pptp_standart

pptp2:
        new -i ng2 pptp2 pptp2
        set ipcp ranges 10.53.1.1/32 10.53.1.102/32
        load pptp_standart

pptp_standart:		# описываем стандартные параметры
        set iface disable on-demand
        set bundle disable 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 XXX.XXX.XXX.XXX
        set ipcp nbns XXX.XXX.XXX.XXX

        # Включаем proxy-arp
        set iface enable proxy-arp

        # Включаем компрессию данных
        #set bundle enable compression

        # Включаем компрессию данных, совсестимую с Microsoft-клиентами
        #set ccp yes mppc

        # Включаем шифрование, совместимое с Microsoft-клиентами
        #set ccp yes mpp-e40
        #set ccp yes mpp-e128
        #set ccp yes mpp-stateless
        #set bundle yes crypt-reqd

        # Задаем локальный адрес для входящих соединений
        set pptp self 10.0.10.53

        # Разрешаем входящие соединения
        set pptp enable incoming
        set pptp disable originate

Комменты:
- В приведённом примере – для экономии места, три интерфейса (у меня их 11). Это значит одновременно могут быть три VPN-подключения. Сделать больше, думаю не составит труда (:
- Компрессию и шифрование отключил, потому что с ней как-то медленно всё работало.
В связи с этим, у win-клиентов пришлось отключать шифрование данных в параметрах безопасности VPN-соединения. Попробуйте с ней, может вам повезёт больше (:
- Если DNS надо дать не один а несколько они пишутся в ряд, через пробел.
set ipcp dns XXX.XXX.XXX.XXX XXX.XXX.XXX.XXX

- Интерфейс с адресом заданным в set pptp self будет слушать и обрабатывать VPN- подключения.

2.2 Соединения
# ee mpd.links


pptp0:
 set link type pptp
pptp1:
 set link type pptp
pptp2:
 set link type pptp

Здесь, по сути мы только указываем тип соединения для каждого интерфейса – pptp

2.3 Пользователи, пароли и их IP
# ee mpd.secret


### персонально ###
usr1	"usr1-passw"	10.53.1.25
usr2	"usr2-passw"	10.53.1.54

### как получится ###
usr3	"usr3-passw"	*
usr4	"usr4-passw"	*

usr1 и usr2 всегда будут получать одни и те же IP.
usr3 и usr4 будут получать IP из описанных в mpd.conf

PS.
(кому интересно, там же лежат mpd.conf.sample, mpd.links.sample, mpd.script.sample и  mpd.secret.sample можно полистать на досуге)

3. Последние штрихи

3.1 Для запуска:
# ee /etc/rc.conf

### VPN mpd
        mpd_enable="YES"

3.2 Для логов:
# /etc/syslog.conf
!mpd
*.* /var/log/mpd.log

# touch /var/log/mpd.log

3.3 ipfw:
# разрешаем коннект к серверу по VPN
${fwcmd} add allow tcp from any to me 1723
${fwcmd} add allow gre from any to any

   

4. Тестируем
Перед тестированием чего-то новонастроенного я люблю перезагружаться. Это даёт мне некую уверенность в том, что после включения сервера я могу быть спокоен на счёт его работоспособности. Так, по традиции я перезагрузил сервер.

Настройки VPN-соединения у win-клиентов описывать не буду. Там всё «по умолчанию», за исключением (в моём случае) отключения шифрования.

# ifconfig -a
ng0: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500
ng1: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500
ng2: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500

это добавились наши интерфейсы. Значит есть куда зацепиться.
Командуем:
# tail –f /var/log/mpd.log

Пробуем подключиться. …и наблюдаем:

Aug 25 01:29:25 mpd: [pptp0] device is now in state DOWN
Aug 25 01:34:22 mpd: mpd: PPTP connection from 10.0.10.25:1422
Aug 25 01:34:22 mpd: pptp0: attached to connection with 10.0.10.25:1422
Aug 25 01:34:22 mpd: [pptp0] IFACE: Open event
Aug 25 01:34:22 mpd: [pptp0] IPCP: Open event
Aug 25 01:34:22 mpd: [pptp0] IPCP: state change Initial --> Starting
Aug 25 01:34:22 mpd: [pptp0] IPCP: LayerStart
Aug 25 01:34:22 mpd: [pptp0] IPCP: Open event
Aug 25 01:34:22 mpd: [pptp0] bundle: OPEN event in state CLOSED
Aug 25 01:34:22 mpd: [pptp0] opening link "pptp0"...
Aug 25 01:34:22 mpd: [pptp0] link: OPEN event
Aug 25 01:34:22 mpd: [pptp0] LCP: Open event
Aug 25 01:34:22 mpd: [pptp0] LCP: state change Initial --> Starting
Aug 25 01:34:22 mpd: [pptp0] LCP: LayerStart
Aug 25 01:34:22 mpd: [pptp0] device: OPEN event in state DOWN
Aug 25 01:34:22 mpd: [pptp0] attaching to peer's outgoing call
Aug 25 01:34:22 mpd: [pptp0] device is now in state OPENING
Aug 25 01:34:22 mpd: [pptp0] device: UP event in state OPENING
Aug 25 01:34:22 mpd: [pptp0] device is now in state UP
Aug 25 01:34:22 mpd: [pptp0] link: UP event
Aug 25 01:34:22 mpd: [pptp0] link: origination is remote
Aug 25 01:34:22 mpd: [pptp0] LCP: Up event
Aug 25 01:34:22 mpd: [pptp0] LCP: state change Starting --> Req-Sent
Aug 25 01:34:22 mpd: [pptp0] LCP: phase shift DEAD --> ESTABLISH
Aug 25 01:34:22 mpd: [pptp0] LCP: SendConfigReq #8
Aug 25 01:34:22 mpd: ACFCOMP
Aug 25 01:34:22 mpd: PROTOCOMP
Aug 25 01:34:22 mpd: MRU 1500
Aug 25 01:34:22 mpd: MAGICNUM 6dda6be4
Aug 25 01:34:22 mpd: AUTHPROTO CHAP MSOFTv2
Aug 25 01:34:22 mpd: pptp0-0: ignoring SetLinkInfo
Aug 25 01:34:22 mpd: [pptp0] LCP: rec'd Configure Request #0 link 0 (Req-Sent)
Aug 25 01:34:22 mpd: MRU 1400
Aug 25 01:34:22 mpd: MAGICNUM 6a9c72fe
Aug 25 01:34:22 mpd: PROTOCOMP
Aug 25 01:34:22 mpd: ACFCOMP
Aug 25 01:34:22 mpd: CALLBACK
Aug 25 01:34:22 mpd: Not supported
Aug 25 01:34:22 mpd: [pptp0] LCP: SendConfigRej #0
Aug 25 01:34:22 mpd: CALLBACK
Aug 25 01:34:22 mpd: [pptp0] LCP: rec'd Configure Request #1 link 0 (Req-Sent)
Aug 25 01:34:22 mpd: MRU 1400
Aug 25 01:34:22 mpd: MAGICNUM 6a9c72fe
Aug 25 01:34:22 mpd: PROTOCOMP
Aug 25 01:34:22 mpd: ACFCOMP
Aug 25 01:34:22 mpd: [pptp0] LCP: SendConfigAck #1
Aug 25 01:34:22 mpd: MRU 1400
Aug 25 01:34:22 mpd: MAGICNUM 6a9c72fe
Aug 25 01:34:22 mpd: PROTOCOMP
Aug 25 01:34:22 mpd: ACFCOMP
Aug 25 01:34:22 mpd: [pptp0] LCP: state change Req-Sent --> Ack-Sent
Aug 25 01:34:24 mpd: [pptp0] LCP: SendConfigReq #9
Aug 25 01:34:24 mpd: ACFCOMP
Aug 25 01:34:24 mpd: PROTOCOMP
Aug 25 01:34:24 mpd: MRU 1500
Aug 25 01:34:24 mpd: MAGICNUM 6dda6be4
Aug 25 01:34:24 mpd: AUTHPROTO CHAP MSOFTv2
Aug 25 01:34:24 mpd: [pptp0] LCP: rec'd Configure Ack #9 link 0 (Ack-Sent)
Aug 25 01:34:24 mpd: ACFCOMP
Aug 25 01:34:24 mpd: PROTOCOMP
Aug 25 01:34:24 mpd: MRU 1500
Aug 25 01:34:24 mpd: MAGICNUM 6dda6be4
Aug 25 01:34:24 mpd: AUTHPROTO CHAP MSOFTv2
Aug 25 01:34:24 mpd: [pptp0] LCP: state change Ack-Sent --> Opened
Aug 25 01:34:24 mpd: [pptp0] LCP: phase shift ESTABLISH --> AUTHENTICATE
Aug 25 01:34:24 mpd: [pptp0] LCP: auth: peer wants nothing, I want CHAP
Aug 25 01:34:24 mpd: [pptp0] CHAP: sending CHALLENGE
Aug 25 01:34:24 mpd: [pptp0] LCP: LayerUp
Aug 25 01:34:24 mpd: pptp0-0: ignoring SetLinkInfo
Aug 25 01:34:24 mpd: [pptp0] LCP: rec'd Ident #2 link 0 (Opened)
Aug 25 01:34:24 mpd: MESG: MSRASV5.10
Aug 25 01:34:24 mpd: [pptp0] CHAP: rec'd RESPONSE #1
Aug 25 01:34:24 mpd: Name: "ax"
Aug 25 01:34:24 mpd: Peer name: "ax"
Aug 25 01:34:24 mpd: Response is valid
Aug 25 01:34:24 mpd: [pptp0] CHAP: sending SUCCESS
Aug 25 01:34:24 mpd: [pptp0] LCP: authorization successful
Aug 25 01:34:24 mpd: [pptp0] LCP: phase shift AUTHENTICATE --> NETWORK
Aug 25 01:34:24 mpd: [pptp0] setting interface ng0 MTU to 1400 bytes
Aug 25 01:34:24 mpd: [pptp0] up: 1 link, total bandwidth 64000 bps
Aug 25 01:34:24 mpd: [pptp0] IPCP: Up event
Aug 25 01:34:24 mpd: [pptp0] IPCP: state change Starting --> Req-Sent
Aug 25 01:34:24 mpd: [pptp0] IPCP: SendConfigReq #5
Aug 25 01:34:24 mpd: IPADDR 10.53.1.1
Aug 25 01:34:24 mpd: COMPPROTO VJCOMP, 16 comp. channels, no comp-cid
Aug 25 01:34:24 mpd: [pptp0] rec'd unexpected protocol CCP on link 0, rejecting
Aug 25 01:34:24 mpd: [pptp0] IPCP: rec'd Configure Request #4 link 0 (Req-Sent)
Aug 25 01:34:24 mpd: IPADDR 0.0.0.0
Aug 25 01:34:24 mpd: NAKing with 10.53.1.25
Aug 25 01:34:24 mpd: PRIDNS 0.0.0.0
Aug 25 01:34:24 mpd: NAKing with 87.250.192.5
Aug 25 01:34:24 mpd: PRINBNS 0.0.0.0
Aug 25 01:34:24 mpd: SECDNS 0.0.0.0
Aug 25 01:34:24 mpd: SECNBNS 0.0.0.0
Aug 25 01:34:24 mpd: [pptp0] IPCP: SendConfigRej #4
Aug 25 01:34:24 mpd: PRINBNS 0.0.0.0
Aug 25 01:34:24 mpd: SECDNS 0.0.0.0
Aug 25 01:34:24 mpd: SECNBNS 0.0.0.0
Aug 25 01:34:24 mpd: [pptp0] IPCP: rec'd Configure Reject #5 link 0 (Req-Sent)
Aug 25 01:34:24 mpd: COMPPROTO VJCOMP, 16 comp. channels, no comp-cid
Aug 25 01:34:24 mpd: [pptp0] IPCP: SendConfigReq #6
Aug 25 01:34:24 mpd: IPADDR 10.53.1.1
Aug 25 01:34:24 mpd: [pptp0] IPCP: rec'd Configure Request #5 link 0 (Req-Sent)
Aug 25 01:34:24 mpd: IPADDR 0.0.0.0
Aug 25 01:34:24 mpd: NAKing with 10.53.1.25
Aug 25 01:34:24 mpd: PRIDNS 0.0.0.0
Aug 25 01:34:24 mpd: NAKing with 87.250.192.5
Aug 25 01:34:24 mpd: [pptp0] IPCP: SendConfigNak #5
Aug 25 01:34:24 mpd: IPADDR 10.53.1.25
Aug 25 01:34:24 mpd: PRIDNS 87.250.192.5
Aug 25 01:34:24 mpd: [pptp0] IPCP: rec'd Configure Ack #6 link 0 (Req-Sent)
Aug 25 01:34:24 mpd: IPADDR 10.53.1.1
Aug 25 01:34:24 mpd: [pptp0] IPCP: state change Req-Sent --> Ack-Rcvd
Aug 25 01:34:24 mpd: [pptp0] IPCP: rec'd Configure Request #6 link 0 (Ack-Rcvd)
Aug 25 01:34:24 mpd: IPADDR 10.53.1.25
Aug 25 01:34:24 mpd: 10.53.1.25 is OK
Aug 25 01:34:24 mpd: PRIDNS 87.250.192.5
Aug 25 01:34:24 mpd: [pptp0] IPCP: SendConfigAck #6
Aug 25 01:34:24 mpd: IPADDR 10.53.1.25
Aug 25 01:34:24 mpd: PRIDNS 87.250.192.5
Aug 25 01:34:24 mpd: [pptp0] IPCP: state change Ack-Rcvd --> Opened
Aug 25 01:34:24 mpd: [pptp0] IPCP: LayerUp
Aug 25 01:34:24 mpd: 10.53.1.1 -> 10.53.1.25
Aug 25 01:34:24 mpd: [pptp0] IFACE: Up event
Aug 25 01:34:24 mpd: [pptp0] setting interface ng0 MTU to 1400 bytes
Aug 25 01:34:24 mpd: [pptp0] exec: /sbin/ifconfig ng0 10.53.1.1 10.53.1.25 netmask 0xffffffff -link0
Aug 25 01:34:24 mpd: [pptp0] no interface to proxy arp on for 10.53.1.25
Aug 25 01:34:24 mpd: [pptp0] exec: /sbin/route add 10.53.1.1 -iface lo0
Aug 25 01:34:24 mpd: [pptp0] IFACE: Up event

В моём случае видно: процесс соединения занимает около двух секунд. По-моему должно быть быстрее (:
Разберусь с этим позже.

# ifconfig -a
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1400
inet6 fe80::230:18ff:fe63:2c8b%ng0 prefixlen 64 scopeid 0x6
inet 10.53.1.1 --> 10.53.1.25 netmask 0xffffffffng1: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500
ng2: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500

Всё наглядно. Без комментариев.

5. Напоследок

Я получил удобный способ предоставлять пользователям доступ в интернет.
Назначая разные группы Ip-адресов разным группам можно давать разный доступ (:
Кому-то аськи хватит, а кому-то и «allow udp from any 27015-27025…» можно устроить (;

Проблемм:
Если два раза подключиться с одним логин\пасворд\IP – получаем глюки, что в общем-то, не удивительно.
В ближайшее время постараюсь найти способ как этого избегать.



размещено: 2006-08-25,
последнее обновление: 2006-08-25,
автор: m`ax


Рутьков, 2006-08-25 в 15:33:35

Классная статья, надо попробывать...

Abigor, 2006-08-26 в 6:25:34

Вопрос, а не проще в ядро засунуть это
options         NETGRAPH
options         NETGRAPH_BPF
options         NETGRAPH_IFACE
options         NETGRAPH_KSOCKET
options         NETGRAPH_MPPC_ENCRYPTION
options         NETGRAPH_PPP
options         NETGRAPH_PPTPGRE
options         NETGRAPH_SOCKET
options         NETGRAPH_TCPMSS
options         NETGRAPH_VJC
и тогда клеенту не надо будет убирать галки с шиврования? и в mpd можно будет включить вот это и радоваться
       # Включаем компрессию данных
       #set bundle enable compression

       # Включаем компрессию данных, совсестимую с Microsoft-клиентами
       #set ccp yes mppc

       # Включаем шифрование, совместимое с Microsoft-клиентами
       #set ccp yes mpp-e40
       #set ccp yes mpp-e128
       #set ccp yes mpp-stateless
       #set bundle yes crypt-reqd

Valentin, 2006-08-30 в 17:57:20

статья почти вовремя ! :)
сам настроил но вот Abigor
строчка options   NETGRAPH_MPPC_ENCRYPTION
при компиляци вылетает с ошибкой, что нет уже не помню чего!
в итоге шифрование 0!

Valentin, 2006-08-30 в 18:06:30

блин ошибся не ENCRYPTION а compression

добовлял!
Но всё равно тип шифрования не поддерживается :( при соединении

Abigor, 2006-09-01 в 10:24:54

если включить вот это
options         NETGRAPH_MPPC_COMPRESSION
то при компилировании ядра он вываливается с ожибкой что не может найти пару файлов, как я понял этих вайлов нет так как с MS какие-то проблемы.
>Но всё равно тип шифрования не поддерживается :( при
соединении
давай почту могу выслать тебе свой конфиг mpd у меня шифрование поддерживается.

black, 2006-09-02 в 13:06:15

Поделитесь конфигами. Заранее спасибо

Поделитесь конфигами. Заранее спасибо, 2006-09-02 в 13:06:59

Поделитесь конфигами. Заранее спасибо
black10@bigmir.net

i-zen, 2006-09-14 в 8:51:46

для организации доступа юзеров в нет луче использовать PPPoE
IMHO

Banec, 2006-09-14 в 16:46:01

i-zen,
eсли можно то на stopor()mail.by

around, 2006-10-22 в 13:10:09

Спасибо!!! Всё заработало!!!

ASP, 2006-10-31 в 22:14:21

можно и мне рабочие конфиги? :) asp ___@____ s96.ru (подчеркивание убрать)

Lestat, 2006-11-01 в 0:09:07

Пришлите и мне рабочий конфиг пожалуйста!

Sergey, 2006-11-10 в 11:38:46

а подскажите как соедениться с двух компов к mpd если они находяться за NАТом?!
и такой вопросик клиенты winxp win2000 соединяються нормально а win2003 жукто тормозит и теряет пакеты:(

Jeweller, 2006-12-08 в 0:35:25

Статья рабочая!

VAdim, 2006-12-14 в 17:56:32

Есть у меня 2 офиса, куда народ по PPTP с Виндов цепляется, цепляется на FreeBSD 5.5 + MPD 3.18...
Все поднял без пересборки ядра, работает нормально, есть шифрование, но нету компрессии - но это для меня не важно.
Нужны конфиги - стучаться 285982172

DS, 2007-03-24 в 10:57:25

        # Включаем proxy-arp
       set iface enable proxy-arp

Таки лучше пару раз подумать, а уж потом добавлять прокси-арп в конфиг. Иначе потом будет вот это:
Aug 25 01:34:24 mpd: [pptp0] no interface to proxy arp on for 10.53.1.25

Dead, 2007-03-29 в 13:31:25

долго и упорно мучался с конфигами пока не усек такую штуку:
все строки за исключением названий "разделов" в mpd.conf и mpd.links должны начинаться с таба. Иначе mpd не видит конфига и ничего не делает.
Будте внимательны.
Плюс если в set pptp self прописать 4 нуля, то будут слушаться все интерфейсы.
(думаю можно вставить памяткой в статью).

Gefest, 2007-04-10 в 23:48:41

Народ! Я в этом деле новечок! Но у меня масса вопросов по поводу настройки MPD  не получается мне его поднять! Дайте плиз конфги, я погляжу, может разберусь! reave@rambler.ru

dm, 2007-04-16 в 20:38:42

никто не держит PPPoE на mpd?
буду очень благодарен за конфиг на мыло.
спасибо.

Евгений, 2007-05-16 в 18:05:52

Киньте пожалуйста рабочий конфиг и набор опций ядра на xorelx(a)mail.ru ?!

Евгений, 2007-05-16 в 18:06:38

P.S. С РАБОЧИМ ШИФРОВАНИЕМ!

Dracula, 2007-06-01 в 1:08:19

Статья то что надо !
Если можно  рабочий конфиг на мыло с шифрованием и опциями ядра.
Спасибо.

Gentux, 2007-06-15 в 13:07:45

у меня интерфейс ng0 не подымается, ядро 5ый раз пересобираю - и никак... хелп

Vitaliy_y, 2007-07-10 в 13:01:57

Все чудно поднялось, но вот проблема, юзеры через ВПН подключаются к серверу терминалов и с периодичностью последний подвисает и вываливается, а вот инет раздается нормально, не знаю где копать. Когда-то на PopTop и Линухе все летало.

Kir, 2007-07-10 в 18:27:11

Шифрование у меня не вызвало проблем, если честно, скорее у автора статьи была Win32 недоделанная(-:, На счет глюков по поводу двойной авторизации (один логин входит 2 раза) я сделал просто: с mpd.secrets раздаю каждому свой ip жестко, диапазоны туннеля не выставляю. Соответственно юзер просто не сможет зарегистрироваться в сети. Статья очень понравилась. Спасибо.

HOSTER, 2007-07-14 в 9:23:23

А как сам нет розшарить ...???????

man, 2007-07-16 в 13:25:25

Будьте  так добры рабочий конфиг с шифрованием
manic@fromru.com

dredd, 2007-08-05 в 10:42:13

Александр Мотин реализовал нормально работающий модуль компрессии... Смотрим здесь http://lists.freebsd.org/pipermail/freebsd-net/2007-July/014946.html
Настраивал mpd подобным образом, долго не работало - требуется в ipfw разрешить протокол GRE....

dread, 2007-08-13 в 13:17:07

:)
в ядро
options         NETGRAPH
options         NETGRAPH_ETHER
options         NETGRAPH_SOCKET
options         NETGRAPH_TEE
options         NETGRAPH_MPPC_ENCRYPTION
options         NETGRAPH_MPPC_COMPRESSION
options         NETGRAPH_BPF
options         NETGRAPH_IFACE
options         NETGRAPH_KSOCKET
options         NETGRAPH_PPP
options         NETGRAPH_PPTPGRE
options         NETGRAPH_TCPMSS
options         NETGRAPH_VJC
options         NETGRAPH_ONE2MANY
options         NETGRAPH_RFC1490
options         NETGRAPH_TEE
options         NETGRAPH_TTY
options         NETGRAPH_UI

недостающее файло
http://mavhome.dp.ua/MPPC/

мой mpd.conf

startup:
default:
       load pptp0
       load pptp1
       load pptp2


pptp0:
       new pptp0 pptp0
       set ipcp ranges 192.168.0.100/32 192.168.0.150/32
       load pptp_standart
pptp1:
       new pptp1 pptp1
       set ipcp ranges 192.168.0.100/32 192.168.0.151/32
       load pptp_standart
pptp2:
       new pptp2 pptp2
       set ipcp ranges 192.168.0.100/32 192.168.0.152/32
       load pptp_standart


pptp_standart:
       set iface disable on-demand
       set bundle disable multilink
       set bundle enable compression
       set ccp yes mppc
       set ccp yes mpp-e40
       set ccp yes mpp-e56
       set ccp yes mpp-e128
       set ccp yes mpp-stateless
       set ccp yes mpp-compress
       set bundle yes crypt-reqd
       set link yes acfcomp protocomp
       set link no pap chap
       set link enable chap
       set link keep-alive 60 180
       set iface idle 0
       set iface session 0
       set ipcp yes vjcomp
       set ipcp dns 192.168.0.1
       set bundle enable compression
       set bundle yes crypt-reqd
       set pptp self 80.92.107.870
       set iface enable proxy-arp
       set iface enable tcpmssfix
       set iface mtu 1460
       set link mtu 1460

в pf

pass in quick on $eth0 proto tcp from any to <serv> port = 1723 flags S/SA synproxy state

pass out quick on $eth0 proto gre from <serv> to any synproxy state

где <serv> табличка с адресами сервера
$eth0 интерфейс который слушает mpd

и все :) компрессия работает.. вполне стабильно
p3 750 512 mb тянет 150 пользователей незадумываясь особо


kuzea, 2007-08-18 в 3:51:59

FrreBSD 6.2 polucilosi normalini s konfigom "dread, 2007-08-13 в 13:17:07"
toka prishlosi v Windows dobaviti poderjku MS-CHAP v2

PASIBA BOLISHOE

kuzea, 2007-08-18 в 12:05:16

polucilis na sisteme s obnovlenymi portami
a na systeme s neobnovlenymi portami prishlosi dobaviti [url=http://mavhome.dp.ua/MPPC/]

AL, 2007-10-03 в 18:01:18

Для компрессии:
Download archive and put it's content to the /usr/src/sys/net.
Change directory to the /usr/src/sys/modules/netgraph/mppc
In Makefile change line
NETGRAPH_MPPC_COMPRESSION?=     0
to
NETGRAPH_MPPC_COMPRESSION?=     1
Make
make && make install && make clean
Stop all ng_mppc consumers and unload previous module with
kldunload ng_mppc
command.
архив:
http://mavhome.dp.ua/MPPC/mppc-1.0.tgz

unknownDaemon, 2007-10-24 в 17:53:55

А если бы поднял IAS на win2k3 DC и в секции pptp_standart: описал способ аворизовываться по RADIUS - то рулил бы через AD и авторизацией и вообще возможностью юзера ходить в inet ;-)
Могу дать примеры конфигов...

dread, 2007-10-24 в 17:58:38

Буду признателен.

unknownDaemon, 2007-10-28 в 15:02:13

Не стоит благодарности ;-)
###### кусок mpd.conf важное выделено жирным ######
client_standard:
       set iface disable on-demand
       set iface enable proxy-arp
       set iface idle 1800
       set iface enable tcpmssfix
       set iface up-script /usr/local/etc/mpd4/vpn-up
       set iface down-script /usr/local/etc/mpd4/vpn-down
       set bundle enable multilink
       set link yes acfcomp protocomp
       set link no pap chap
       set link enable chap
       set link mtu 1460
       set link keep-alive 10 60
       set ipcp yes vjcomp
       set ipcp dns 192.168.1.11
       set ipcp nbns 192.168.1.11
       set bundle enable compression
       set ccp yes mppc
       set ccp yes mpp-e40
       set ccp yes mpp-e128
       set ccp yes mpp-stateless
       set radius server <ip serv-dc with IAS up> "secret for IAS"
       set radius timeout 10
       set radius retries 3
       set auth enable radius-auth radius-acct

       open
#-— EOF -----------
На контроллере домена поднимаете службу Internet Authidentification Service ()IAS, Настраиваете  , основными настройками будут: "общий секрет" для обращения к сервису, протокол (Radius Standart) и список IP -ов машинок коим разрешено обращаться к сервису. Затем меняете чать, выступающюю у вас "общей" для всех клиентов в mpd.conf как указано выше и все...
Клиенты будут авторизовываться IAS-ом. Далее все зависит от политик настроенных в AD. Если не указано иначе: по умолчанию юзерам низя делать Dial-In, соответсвенно кому хотите дать возможность авторизовываться - поставьте галочку ;-), тоже самое можно намутить на оушки политиками. Ровно как можно и использовать Inpact для учета трафика ПО ЮЗЕРУ а не по IP, но это уже совсем другая история ;-)

alter, 2007-11-13 в 11:44:36

Хотелось бы новую версию именно этой статьи, а также узнать как все таки решаeтся:

"Если два раза подключиться с одним логин\пасворд\IP – получаем глюки, что в общем-то, не удивительно.
В ближайшее время постараюсь найти способ как этого избегать."

MAPTbIH, 2008-02-01 в 14:10:32

Заметил такую хрень:
при таком конфиге:
# mpd.conf
default:
       load pptp0
       load pptp1
       load pptp2


pptp0:
       new -i ng0 pptp0 pptp0
       set ipcp ranges 10.53.1.1/32 10.53.1.100/32
       load pptp_standart

pptp1:
       new -i ng1 pptp1 pptp1
       set ipcp ranges 10.53.1.1/32 10.53.1.101/32
       load pptp_standart

pptp2:
       new -i ng2 pptp2 pptp2
       set ipcp ranges 10.53.1.1/32 10.53.1.102/32
       load pptp_standart

# mpd.secret
usr1    "usr1-passw"    10.53.1.100
usr2    "usr2-passw"    10.53.1.101
usr3    "usr3-passw"    10.53.1.102

если usr1 подключился первым он попадает не на ng0
а по разному то ng1 или если он занят, то на ng2.
еще заметил, что если nat висит на интерфейсе который слушает mpd то в настройках соединения в винле, приходится снимать галку использовать шлюз по умолчанию, иначе не попасть во внутреннюю сеть.

Kucher, 2008-03-05 в 0:30:08

Если при включённом шифровании  и сжатии возникнут проблемы со скоростью работы VPN, проверьте ping к виртуальнорму хосту (10.53.1.1) и одновременно - к реальному (10.0.10.53).
У меня терялись пакеты на виртуальном хосте. Проблема решилась добавлением маршрута, командой "route add".

Shurik, 2008-03-18 в 11:42:23

Подскажите в чём проблема .
Исходные данные vpn : тип сервера РРР . Проверка подлинности ms chapv2 : шифрование mppe-40 .
Бьюсь уже который день обрывается на одном и томже месте . Насколько я понял в ядре NETGRAPH_MPPC в ядре ненужен , делаеться на фрее 6.3 mpd 3.18 . Фаервол открыт. По логам на сколько я понимаю тунель поднимаеться ,проверка проходит а дальше ни чего не происходит ип не выдаёться и сразу рвёт соединение .Уже руки отпускаються , подскажите как побороть. Заранее  Спасибо.

mpd.log

Mar 18 11:21:36 dom mpd: mpd: pid 1100, version 3.18 (root@dom 15:54 17-Mar-2008)
Mar 18 11:21:36 dom mpd: [vpn] ppp node is "mpd1100-vpn"
Mar 18 11:21:36 dom mpd: mpd: local IP address for PPTP is 172.24.40.170
Mar 18 11:21:36 dom mpd: [vpn] using interface ng0
Mar 18 11:21:36 dom mpd: set enable: unknown command. Try "help".
Mar 18 11:21:36 dom mpd: [vpn] IPCP: peer address cannot be zero
Mar 18 11:21:36 dom mpd: [vpn] IFACE: Open event
Mar 18 11:21:36 dom mpd: [vpn] IPCP: Open event
Mar 18 11:21:36 dom mpd: [vpn] IPCP: state change Initial --> Starting
Mar 18 11:21:36 dom mpd: [vpn] IPCP: LayerStart
Mar 18 11:21:36 dom mpd: [vpn] bundle: OPEN event in state CLOSED
Mar 18 11:21:36 dom mpd: [vpn] opening link "vpn"...
Mar 18 11:21:36 dom mpd: [vpn] link: OPEN event
Mar 18 11:21:36 dom mpd: [vpn] LCP: Open event
Mar 18 11:21:36 dom mpd: [vpn] LCP: state change Initial --> Starting
Mar 18 11:21:36 dom mpd: [vpn] LCP: LayerStart
Mar 18 11:21:36 dom mpd: [vpn] device: OPEN event in state DOWN
Mar 18 11:21:36 dom mpd: pptp0: connecting to 172.24.8.2:1723
Mar 18 11:21:36 dom mpd: [vpn] device is now in state OPENING
Mar 18 11:21:36 dom mpd: pptp0: connected to 172.24.8.2:1723
Mar 18 11:21:36 dom mpd: pptp0: attached to connection with 172.24.8.2:1723
Mar 18 11:21:36 dom mpd: pptp0-0: outgoing call connected at 64000 bps
Mar 18 11:21:36 dom mpd: [vpn] PPTP call successful
Mar 18 11:21:36 dom mpd: [vpn] device: UP event in state OPENING
Mar 18 11:21:36 dom mpd: [vpn] device is now in state UP
Mar 18 11:21:36 dom mpd: [vpn] link: UP event
Mar 18 11:21:36 dom mpd: [vpn] link: origination is local
Mar 18 11:21:36 dom mpd: [vpn] LCP: Up event
Mar 18 11:21:36 dom mpd: [vpn] LCP: state change Starting --> Req-Sent
Mar 18 11:21:36 dom mpd: [vpn] LCP: phase shift DEAD --> ESTABLISH
Mar 18 11:21:36 dom mpd: [vpn] LCP: SendConfigReq #1
Mar 18 11:21:36 dom mpd:  ACFCOMP
Mar 18 11:21:36 dom mpd:  PROTOCOMP
Mar 18 11:21:36 dom mpd:  MRU 1500
Mar 18 11:21:36 dom mpd:  MAGICNUM 77a09794
Mar 18 11:21:36 dom mpd: [vpn] LCP: rec'd Configure Ack #1 link 0 (Req-Sent)
Mar 18 11:21:36 dom mpd:  ACFCOMP
Mar 18 11:21:36 dom mpd:  PROTOCOMP
Mar 18 11:21:36 dom mpd:  MRU 1500
Mar 18 11:21:36 dom mpd:  MAGICNUM 77a09794
Mar 18 11:21:36 dom mpd: [vpn] LCP: state change Req-Sent --> Ack-Rcvd
Mar 18 11:21:39 dom mpd: [vpn] LCP: rec'd Configure Request #1 link 0 (Ack-Rcvd)
Mar 18 11:21:39 dom mpd:  ACCMAP 0x00000000
Mar 18 11:21:39 dom mpd:  AUTHPROTO CHAP MSOFTv2
Mar 18 11:21:39 dom mpd:  MAGICNUM 2548cb68
Mar 18 11:21:39 dom mpd:  PROTOCOMP
Mar 18 11:21:39 dom mpd:  ACFCOMP
Mar 18 11:21:39 dom mpd: [vpn] LCP: SendConfigAck #1
Mar 18 11:21:39 dom mpd:  ACCMAP 0x00000000
Mar 18 11:21:39 dom mpd:  AUTHPROTO CHAP MSOFTv2
Mar 18 11:21:39 dom mpd:  MAGICNUM 2548cb68
Mar 18 11:21:39 dom mpd:  PROTOCOMP
Mar 18 11:21:39 dom mpd:  ACFCOMP
Mar 18 11:21:39 dom mpd: [vpn] LCP: state change Ack-Rcvd --> Opened
Mar 18 11:21:39 dom mpd: [vpn] LCP: phase shift ESTABLISH --> AUTHENTICATE
Mar 18 11:21:39 dom mpd: [vpn] LCP: auth: peer wants CHAP, I want nothing
Mar 18 11:21:39 dom mpd: [vpn] LCP: LayerUp
Mar 18 11:21:39 dom mpd: [vpn] CHAP: rec'd CHALLENGE #67
Mar 18 11:21:39 dom mpd:  Name: "vpn1"
Mar 18 11:21:39 dom mpd:  Using authname "de"
Mar 18 11:21:39 dom mpd: [vpn] CHAP: sending RESPONSE
Mar 18 11:21:39 dom mpd: [vpn] CHAP: rec'd SUCCESS #67
Mar 18 11:21:39 dom mpd:  MESG: S=891E8D8FF812EE286D
Mar 18 11:21:39 dom mpd: [vpn] LCP: authorization successful
Mar 18 11:21:39 dom mpd: [vpn] LCP: phase shift AUTHENTICATE --> NETWORK
Mar 18 11:21:39 dom mpd: [vpn] setting interface ng0 MTU to 1500 bytes
Mar 18 11:21:39 dom mpd: [vpn] up: 1 link, total bandwidth 64000 bps
Mar 18 11:21:39 dom mpd: [vpn] IPCP: Up event
Mar 18 11:21:39 dom mpd: [vpn] IPCP: state change Starting --> Req-Sent
Mar 18 11:21:39 dom mpd: [vpn] IPCP: SendConfigReq #1
Mar 18 11:21:39 dom mpd:  IPADDR 0.0.0.0
Mar 18 11:21:39 dom mpd:  COMPPROTO VJCOMP, 16 comp. channels, no comp-cid
Mar 18 11:21:39 dom mpd: [vpn] error writing len 20 frame to bypass: Network is down
Mar 18 11:21:39 dom mpd: [vpn] CCP: Open event
Mar 18 11:21:39 dom mpd: [vpn] CCP: state change Initial --> Starting
Mar 18 11:21:39 dom mpd: [vpn] CCP: LayerStart
Mar 18 11:21:39 dom mpd: [vpn] CCP: Up event
Mar 18 11:21:39 dom mpd: [vpn] CCP: state change Starting --> Req-Sent
Mar 18 11:21:39 dom mpd: [vpn] CCP: SendConfigReq #1
Mar 18 11:21:39 dom mpd: [vpn] error writing len 8 frame to bypass: Network is down
Mar 18 11:21:41 dom mpd: [vpn] IPCP: SendConfigReq #2
Mar 18 11:21:41 dom mpd:  IPADDR 0.0.0.0
Mar 18 11:21:41 dom mpd:  COMPPROTO VJCOMP, 16 comp. channels, no comp-cid
Mar 18 11:21:41 dom mpd: [vpn] CCP: SendConfigReq #2
Mar 18 11:21:41 dom mpd: [vpn] IPCP: rec'd Terminate Ack #2 link 0 (Req-Sent)
Mar 18 11:21:41 dom mpd: [vpn] CCP: rec'd Configure Ack #2 link 0 (Req-Sent)
Mar 18 11:21:41 dom mpd: [vpn] CCP: state change Req-Sent --> Ack-Rcvd
Mar 18 11:21:42 dom mpd: [vpn] CCP: rec'd Configure Request #1 link 0 (Ack-Rcvd)
Mar 18 11:21:42 dom mpd:  MPPC
Mar 18 11:21:42 dom mpd:    0x01000020: MPPE, 40 bit, stateless
Mar 18 11:21:42 dom mpd: [vpn] CCP: SendConfigRej #1
Mar 18 11:21:42 dom mpd:  MPPC
Mar 18 11:21:42 dom mpd:    0x01000020: MPPE, 40 bit, stateless
Mar 18 11:21:42 dom mpd: [vpn] LCP: rec'd Terminate Request #2 link 0 (Opened)
Mar 18 11:21:42 dom mpd: [vpn] LCP: state change Opened --> Stopping
Mar 18 11:21:42 dom mpd: [vpn] LCP: phase shift NETWORK --> TERMINATE
Mar 18 11:21:42 dom mpd: [vpn] setting interface ng0 MTU to 1500 bytes
Mar 18 11:21:42 dom mpd: [vpn] up: 0 links, total bandwidth 9600 bps
Mar 18 11:21:42 dom mpd: [vpn] IPCP: Down event
Mar 18 11:21:42 dom mpd: [vpn] IPCP: state change Req-Sent --> Starting
Mar 18 11:21:42 dom mpd: [vpn] CCP: Down event
Mar 18 11:21:42 dom mpd: [vpn] CCP: state change Ack-Rcvd --> Starting
Mar 18 11:21:42 dom mpd: [vpn] CCP: Close event
Mar 18 11:21:42 dom mpd: [vpn] CCP: state change Starting --> Initial
Mar 18 11:21:42 dom mpd: [vpn] CCP: LayerFinish
Mar 18 11:21:42 dom mpd: [vpn] LCP: SendTerminateAck #2
Mar 18 11:21:42 dom mpd: [vpn] LCP: LayerDown
Mar 18 11:21:44 dom mpd: [vpn] LCP: state change Stopping --> Stopped
Mar 18 11:21:44 dom mpd: [vpn] LCP: phase shift TERMINATE --> ESTABLISH
Mar 18 11:21:44 dom mpd: [vpn] LCP: LayerFinish
Mar 18 11:21:44 dom mpd: [vpn] device: CLOSE event in state UP
Mar 18 11:21:44 dom mpd: pptp0-0: clearing call
Mar 18 11:21:44 dom mpd: [vpn] device is now in state CLOSING
Mar 18 11:21:44 dom mpd: [vpn] device: DOWN event in state CLOSING
Mar 18 11:21:44 dom mpd: [vpn] device is now in state DOWN
Mar 18 11:21:44 dom mpd: [vpn] link: DOWN event
Mar 18 11:21:44 dom mpd: [vpn] LCP: Down event


mpd.conf
Взят с сайта провайдера

default:
   load vpn
vpn:
   new -i ng0 vpn vpn
   set iface disable on-demand
   set iface addrs 172.24.40.17 172.24.40.17
   set iface idle 0
   set iface route default
   set bundle disable multilink
   set bundle authname "de"
   set bundle password "XXXXXXXX"
   set iface up-script /usr/local/etc/mpd/io-up.sh
   set iface down-script /usr/local/etc/mpd/io-down.sh
   set link yes acfcomp protocomp
   set link disable chap pap
   set link accept chap pap
   set enable no-orig-auth
   set link keep-alive 10 75
   set bundle enable compression
   set ccp yes mpp-e40
   set ccp yes mpp-e128
   set bundle enable crypt-reqd
   set ccp yes mpp-stateless
   set ipcp yes vjcomp
   set ipcp ranges 0.0.0.0/0 0.0.0.0/0
   set link mtu 1500
   open

gerasim, 2008-03-19 в 18:39:33

попробуй без пароля с использованием файла mpd.secret
у тебя ошибка в конфиге по логам сам посмари. омпд сам тебе об этом пишет и плюс еще у тебя аайпиадрес не выдается

Shurik, 2008-03-19 в 22:55:26

Всё всем спасибо уже разобрался , дело было в корявости mpd 3.18 поставил 4 со скриптами на роутинг и всё заработало .

Renelin, 2008-05-30 в 10:30:49

в редкой статье указывают что MPD обладает обширным логированием и mpd.log очень быстро разрастается до невообразимых размеров. Поэтому не забываем добавлять в /etc/newsyslog.conf примерно такую строку
/var/log/mpd.log  644  7  100  *  JC

denis, 2008-08-07 в 1:45:17

Столкнулся с тем, что после установки соединения пинги с сервера до клиента проходят, а с клиента на сервер - проходят через раз. Добавил в конфиг mpd.conf
set pptp disable windowing

guest, 2008-09-14 в 23:57:41

Народ а как включить сжатие ?
чет не пахает

torki, 2008-09-15 в 1:24:32

сделай поиск на форуме там умные люди все подробно расписали, честь и хвала знающим! :))

Яков, 2008-10-03 в 0:12:47

new -i ng0 pptp0 pptp0 # создаём новый ...
pptp_standart:        # описываем стандартные...

Такие комменты не перевариваются!
Причем mpd, в логах явно не ругается, просто перестает парсить файл, и грузит в итоге не все параметры из конфига.
Может поправишь комменты в конфигурашке в своей статье?
Многие, имхо, как и я просто копируют данный конфиг себе, и их ждут те-же грабли...
Вообще - обидно было наступить на такие простые грабли.

BuZZ, 2008-10-22 в 21:43:49

Еще бы билинг простенький к этой статье =)

tyler, 2008-11-11 в 11:32:24

Хотелось бы новую версию именно этой статьи, а также узнать как все таки решаeтся:

"Если два раза подключиться с одним логин\пасворд\IP – получаем глюки, что в общем-то, не удивительно.
В ближайшее время постараюсь найти способ как этого избегать."

set auth max-logins 1

Константин, 2009-02-06 в 3:19:39

Как решить проблемы с резолвингом имен машин внутренней сети
nslookup работает
ping не работает

Sweeper_jr, 2010-01-27 в 14:57:33

Если убрать коменты и лишние пустые строки из mpd.conf, то все отлично работает! Спасибо автору и всем кто комментировал!

Пожарыч, 2011-01-28 в 15:38:13

# (MPPE) using the ng_mppc(8) netgraph node type.
set bundle enable compression
set bundle enable crypt-reqd
set ccp yes mppc
set mppc yes compress
set mppc yes e40
set mppc yes e56
set mppc yes e128
set mppc yes stateless

Это настройки для Freebsd 8.1 + mpd5 для работы с компрессией.



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0537 секунд
Из них PHP: 30%; SQL: 70%; Число SQL-запросов: 77 шт.
У Вас отключено GZIP-сжатие в браузере. Размер страницы 85022