Ключевые слова:ppp, vpn, linux, pptp, (найти похожие документы)
From: Dmitry A. Koptev <dimez@nm.ru>
Date: Mon, 23 Dec 2002 13:01:37 +0000 (UTC)
Subject: Настройка 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.gzhttp://www.shorewall.net/pub/shorewall/pptp/ppp-2.4.1-MSCHAPv2-fix.patch.gzftp://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
Настроить ядро:
------------
[*] Network device support
<M> PPP support
[*] PPP multilink support
[*] PPP filtering
<M> PPP support for async serial ports
<M> PPP support for sync tty ports
<M> PPP Deflate compression
<M> PPP BSD-Compress compression
<M> PPP over Ethernet
-------------
Скомпилировать ядро командами
# 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 ниже)
Dmitry A. Koptev <dimez@nm.ru>