У меня сложилась такая ситуация - настройка 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 я выложил собранные пакеты по
этому адресу