Версия для печати

Архив документации на OpenNet.ru / Раздел "Сети, протоколы, сервисы" (Многостраничная версия)

Автор:Dmitry A. Koptev
Оригинал: http://dimez.nm.ru/docs/pptp/

У меня сложилась такая ситуация -  настройка VPN сервер на Linux'е к которому подключаются удалённые
Windows-клиенты(9x/NT/2000/XP), предварительно дозванивающиеся к какому-либо провайдеру(не ко мне)
и с минимальным переконфигурированием клиентских машин(сиречь, Windows-машин)
Я (после долгого копания в инетке,переписки в форумах и чтения всяких документаций и FAQ) 
всё-таки нашёл решение

1) Скачать последний ppp(ftp://ftp.samba.org/pub/ppp) Обычно ftp.samba.org очень редко откликается
Я рекомендую скачать с http://www.slackware.at/data/slackware-current/source/n/ppp/ppp-2.4.1.tar.gz
(а ещё и тут)
Исправление.
Если брать ppp из cvs(cvs -d :pserver:cvs@pserver.samba.org:/cvsroot co ppp), эти патчи не требуются,
все указывается при сборке(файл ppp/pppd/Makefile.linux). также в состав ppp из cvs включены
патчи mppe для ядра(директория ppp/linux/mppe)
Маленький P.S. у меня cvs'ный ppp не собрался, и я ещё не разбирался что к чему, всё поэтому привожу для ppp-2.4.1
За исправление и дополнение спасибо Дмитрию Глушенку.

Исправление #2.

Только что собрал ppp из cvs - собрался нормально, пропатчил ядро из ppp/linux/mppe скриптом mppeinstall.sh При использовании нового ppp(2.4.2-b3) сам ppp патчить не надо В make menuconfig появился пункт PPP MPPE compression (encryption) Ещё одно дополнение - все файлы Вы можете скачать этого адреса (включая и последнюю версию ppp из cvs - файл ppp_cvs.tar.bz2) 2) Скачать три патча по адресам http://www.shorewall.net/pub/shorewall/pptp/ppp-2.4.1-openssl-0.9.6-mppe-patch.gz)тут) http://www.shorewall.net/pub/shorewall/pptp/ppp-2.4.1-MSCHAPv2-fix.patch.gzтут) ftp://ftp.shorewall.net/pub/shorewall/pptp/require-mppe.diff(тут) 3)Выполнить из командной строки следующие команды(из директории, куда скачаны файлы, например, /data/src) $ tar xzf ppp-2.4.1.tar.gz $ cd ppp-2.4.1 $ zcat../ppp-2.4.1-openssl-0.9.6-mppe-patch.gz | patch -p1 (для нового ppp это не надо) $ zcat ../ppp-2.4.1-MSCHAPv2-fix.patch.gz | patch -p1 (тоже самое) $ patch -p1 < ../require-mppe.diff $ ./configure $ make $ sudo make install(это если sudo настроено :-) Компиляция пакета ppp закончена, теперь принимаемся за ядро # cd /usr/src # tar xjf /data/src/kernel/linux-x.y.z.tar.bz2 #### Это можно пропустить, # ln -s linux-x.y.z linux ; cd linux #### если Вы не хотите обновлять ядро Скачать патч с адреса http://www.shorewall.net/pub/shorewall/pptp/linux-2.4.16-openssl-0.9.6b-mppe-patch.gz (У меня на момент написания этого документа стоит 2.4.21-pre2 - патч подошёл) # gunzip -c ../linux-2.4.16-openssl-0.9.6b-mppe-patch.gz | patch -p1 (для нового ppp патч надо брать из ppp/linux/mppe) # make mrproper # make menuconfig Настроить ядро как на картинке :-) Скомпилировать ядро командами # make dep clean bzImage modules modules_install # cp arch/i386/boot/bzImage /boot/vmlinuz (это если у Вас i386-архитектура :-) # cp System.map /boot/ # cp .config /boot/config Настроить загрузчик(это Вы, я думаю, сами справитесь :-) Если требуется, перегрузиться(это если ядро более новой версии, в противном случае - просто загрузите соответствующие модули) Ядро у нас готово к употреблению :-) Теперь принимаемся за VPN сервер(http://www.poptop.org/)(тут) Скачиваем, разворачиваем, устанавливаем $ tar xzf pptpd-1.1.4-b4.tar.gz(на данный момент) $ cd poptop-1.1.4 $ ./configure $ make $ sudo make install (это опять же, если настроено sudo) Редактируем /etc/pptpd.conf ---cat-/etc/pptpd.conf--- speed 115200 option /etc/ppp/options.pptpd debug localip 10.0.0.1 remoteip 10.0.0.2-10 ---end-of-cat--- Вроде всё понятно по названию Принимаемся за /etc/ppp/options ---cat-/etc/ppp/options--- lock ---end-of-cat--- Это потому что у меня ещё и dial-in сервер - я все остальные опции вынес в /etc/ppp/options.ttyS1 но это отступление :-) И теперь /etc/ppp/options.pptpd ---cat-/etc/ppp/options.pptpd--- ipparam PoPToP lock mtu 1490 mru 1490 ms-dns 10.0.0.1 proxyarp auth -pap (для нового ppp_cvs надо refuse-pap) -chap (выключил, из-за использования chapms-v2) (refuse-chap) -chapms (тоже самое, что и выше) (refuse-chapms) +chapms-v2 (в случае использования ppp_cvs изменить на require-mschap-v2) ipcp-accept-local ipcp-accept-remote lcp-echo-failure 30 lcp-echo-interval 5 deflate 0 mppe-stateless (на ppp-2.4.2-b3 не проходит, пришлось закомментировать) +mppe-128 ---end-of-cat-- Пишем небольшой скрипт запуска pptpd ---cat-/etc/rc.d/rc.pptpd #!/bin/sh # # /etc/rc.d/rc.pptpd # # description: control pptp server # case "$1" in start) echo 1 > /proc/sys/net/ipv4/ip_forward modprobe ppp_async modprobe ppp_generic modprobe ppp_mppe modprobe slhc if /usr/local/vpn/sbin/pptpd; then touch /var/lock/subsys/pptpd fi ;; stop) killall pptpd rm -f /var/lock/subsys/pptpd ;; restart) killall pptpd if /usr/local/vpn/sbin/pptpd; then touch /var/lock/subsys/pptpd fi ;; status) ifconfig ;; *) echo "Usage: $0 {start|stop|restart|status}" ;; esac ---end-of-cat--- Небольшое дополнение, если у Вас клиенты или сервера силят за файрволом, то надо разрешить на нём прохождение 47 протокола c VPN-сети(10.0.0.0/24) (... -p 47 -s 10.0.0.0/24 ...) и соединения по протоколу tcp порту 1723 (... -p tcp --dport 1723 ...) а так же опять же пропатчить ядро на эжтом самом файрволе, патчи брать с http://www.impsec.org/linux/masquerade/ip_masq_vpn.html Теперь можно настраивать VPN-клиентов(по какому угодно протоколу - pap, chap,mschap,mschap-v2, с шифрованием или без - всё должно работать) P.S. Заранее извините за ошибки(если заметите грубые - напишите на email ниже) P.P.S. Для счастливых обладателей Slackware-9.0 я выложил собранные пакеты по этому адресу
© 2002 Dmitry A. Koptev

Настройка VPN (PPTP) сервера под Linux

У меня сложилась такая ситуация -  настройка VPN сервер на Linux'е к которому подключаются удалённые
Windows-клиенты(9x/NT/2000/XP), предварительно дозванивающиеся к какому-либо провайдеру(не ко мне)
и с минимальным переконфигурированием клиентских машин(сиречь, Windows-машин)
Я (после долгого копания в инетке,переписки в форумах и чтения всяких документаций и FAQ) 
всё-таки нашёл решение

1) Скачать последний ppp(ftp://ftp.samba.org/pub/ppp) Обычно ftp.samba.org очень редко откликается
Я рекомендую скачать с http://www.slackware.at/data/slackware-current/source/n/ppp/ppp-2.4.1.tar.gz
(Если брать ppp из cvs, то патчи правильно не наложатся)

2) Скачать три патча по адресам
http://www.shorewall.net/pub/shorewall/pptp/ppp-2.4.1-openssl-0.9.6-mppe-patch.gz
http://www.shorewall.net/pub/shorewall/pptp/ppp-2.4.1-MSCHAPv2-fix.patch.gz
ftp://ftp.shorewall.net/pub/shorewall/pptp/require-mppe.diff

3)Выполнить из командной строки следующие команды(из директории, куда скачаны файлы, например, /data/src)
$ tar xzf ppp-2.4.1.tar.gz
$ cd ppp-2.4.1
$ gunzip -c ../ppp-2.4.1-openssl-0.9.6-mppe-patch.gz | patch -p1
$ gunzip -c ../ppp-2.4.1-MSCHAPv2-fix.patch.gz | patch -p1
$ patch -p1 < ../require-mppe.diff
$ ./configure
$ make
$ sudo make install(это если sudo настроено :-)

Компиляция пакета ppp закончена, теперь принимаемся за ядро

# cd /usr/src
# tar xjf /data/src/kernel/linux-x.y.z.tar.bz2	####  Это можно пропустить,
# ln -s linux-x.y.z linux ; cd linux		####  если Вы не хотите обновлять ядро
Скачать патч с адреса http://www.shorewall/net/pub/shorewall/pptp/linux-2.4.16-openssl-0.9.6b-mppe-patch.gz
(У меня на момент написания этого документа стоит 2.4.21-pre2 - патч подошёл)
# gunzip -c ../linux-2.4.16-openssl-0.9.6b-mppe-patch.gz | patch -p1
# make mrproper
# make menuconfig
Настроить ядро как на картинке :-)


Скомпилировать ядро командами
# make dep clean bzImage modules modules_install
# cp arch/i386/boot/bzImage /boot/vmlinuz (это если у Вас i386-архитектура :-)
# cp System.map /boot/
# cp .config /boot/config
Настроить загрузчик(это Вы, я думаю, сами справитесь :-)
Если требуется, перегрузиться(это если ядро более новой версии, в противном случае - просто загрузите 
соответствующие модули)

Ядро у нас готово к употреблению :-)

Теперь принимаемся за VPN сервер(http://www.poptop.org/)
Скачиваем, разворачиваем, устанавливаем
$ tar xzf pptpd-1.1.3.tar.gz(на данный момент)
$ cd pptpd-1.1.3
$ ./configure
$ make
$ sudo make install (это опять же, если настроено sudo)

Редактируем /etc/pptpd.conf
---cat-/etc/pptpd.conf---
speed 115200
option /etc/ppp/options.pptpd
debug
localip 10.0.0.1
remoteip 10.0.0.2-10
---end-of-cat---

Вроде всё понятно по названию

Принимаемся за /etc/ppp/options
---cat-/etc/ppp/options---
lock
---end-of-cat---

Это потому что у меня ещё и dial-in сервер - я все остальные опции вынес в /etc/ppp/options/ttyS1
но это отступление :-)

И теперь /etc/ppp/options.pptpd
---cat-/etc/ppp/options.pptpd---
ipparam PoPToP
lock
mtu 1490
mru 1490
ms-dns 10.0.0.1
proxyarp
auth
-pap
+chap
+chapms
+chapms-v2
ipcp-accept-local
ipcp-accept-remote
lcp-echo-failure 30
lcp-echo-interval 5
deflate 0
mppe-128
mppe-stateless
require-mppe
require-mppe-stateless
---end-of-cat--

Пишем небольшой скрипт запуска pptpd
---cat-/etc/rc.d/rc.pptpd
#!/bin/sh
#
# /etc/rc.d/rc.pptpd
#
# description: control pptp server
#

case "$1" in
start)
    echo 1 > /proc/sys/net/ipv4/ip_forward
    modprobe ppp_async
    modprobe ppp_generic
    modprobe ppp_mppe
    modprobe slhc
    if /usr/local/vpn/sbin/pptpd; then
        touch /var/lock/subsys/pptpd
    fi
    ;;
stop)
    killall pptpd
    rm -f /var/lock/subsys/pptpd
    ;;
restart)
    killall pptpd
    if /usr/local/vpn/sbin/pptpd; then
        touch /var/lock/subsys/pptpd
    fi
    ;;
status)
    ifconfig
    ;;
*)
    echo "Usage: $0 {start|stop|restart|status}"
    ;;
esac

---end-of-cat---

Небольшое дополнение, если у Вас клиенты или сервера силят за файрволом, то
надо разрешить на нём прохождение 47 протокола c VPN-сети(10.0.0.0/24)
(... -p 47 -s 10.0.0.0/24 ...)
и соединения по протоколу tcp порту 1723 (... -p tcp --dport 1723 ...)
а так же опять же пропатчить ядро на эжтом самом файрволе, патчи брать с
http://www.impsec.org/linux/masquerade/ip_masq_vpn.html
Теперь можно настраивать VPN-клиентов(по какому угодно протоколу - pap, chap,mschap,mschap-v2,
с шифрованием или без - всё должно работать)

P.S. Заранее извините за ошибки(если заметите грубые - напишите на email ниже)
© 2002 Dmitry A. Koptev