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

Настройка 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
Архив документации на OpenNet.ru