|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Alex Morozov 2:5003/34.1 28 Apr 2005 12:50:03 To : Alexey Belyaev Subject : Hастройка PPTP Linux->Win2k3 -------------------------------------------------------------------------------- 28 Apr 05 12:48, Alexey Belyaev ===> All: AB> Итaк :) Имeю Win2k3 AS c пoднятым нa нём VPN cepвepoм. AB> А тaк жe имeю Linux и жeлaниe пoдключить этoт Linux к VPN. From: Sergey Sikorsky <fagot#kalinovka.net> Date: Mon, 20 Dec 2004 18:21:07 +0000 (UTC) Subject: PPTP туннель с MS-CHAPv2 (аутентификация), MPPE (шифрование) и MPPC (сжатие) Оригинал: http://fine.kalinovka.net/modules.php?op=modload&name=News&file=article&sid=3 Шифрованный VPN туннель к провайдеру: MS-CHAPv2, MPPE, MPPC и все, все , все... Мне кажется, этот вопрос сегодня стоит перед многими пользователями сети Интернет и ОС Linux в частности... в отличии от ответа на него :) А настройка такого подключения у новичков вызывает некоторые проблемы. Да, из Microsoft Windows несколько проще подключится к VPN серверу по протоколу PPTP от Microsoft, используя протокол аутентификации Microsoft MS-CHAPv2, с использованием метода шифрования Microsoft Point-to-Point Encryption и сжатия Microsoft Point-to-Point Compression... Hо к счастью, из под ОС Linux это тоже вполне реализуемо, а на сегодняшний день - еще и довольно просто, что и будет продемонстрировано ниже. MS-CHAPv2 - Это протокол аутентификации, широко используемый в продуктах от Microsoft, в связи с чем стал, по-сути, стандартом. Он более защищен по сравнению с PAP/CHAP и является усовершенствованной версией MS-CHAP, использовавшегося ранее и славящегося своими дырами в плане безопасности сейчас :) Его поддержка есть в pppd последних версий, для более ранних существуют патчи. К ядру MS-CHAP не имеет никакого отношения. MPPE и MPPC MPPE - это Microsoft Point-to-Point Encryption, метод шифрования данных при передаче по VPN-каналу. Тоже довольно популярен, даже используется в некоторых аппаратных шлюзах, роутерах и т.д. Разумеется очень рекомендуется к применению, особенно при построении туннеля через "дикий" Интернет. Хотя можно и не использовать, тогда никаких патчей искать не нужно. Для использования MPPE нужна поддержка в самом ядре Linux и в pppd. В pppd поддержка появилась относительно недавно, в ядре... ну, пока что ждем, надеемся и верим :) А патчи уже есть. Раньше я использовал патчи ppp-2.4.0-openssl-0.9.6-mppe.patch и linux-2.4.16-openssl-0.9.6b-mppe.patch (http://www.advancevpn.com/cgi-bin/content?lang=1&cid=LIBRARY&hid=15 ), но сейчас это кажется уже не модно :) С включением в pppd поддержки MPPE, в исходниках была директория include/linux/mppe, в которой тоже лежал патч к ядру, но почему-то в pppd-2.4.2 ее нет. Также имеется kernelmod с уже готовым модулем, но он тоже считается уже устаревшим и к тому же заточен только под ядра RedHat (поправьте меня, если я ошибаюсь). Самый распространенный набор патчей на сегодня "живет" на http://public.planetmirror.com/pub/mppe (ранее - http://mirror.binarix.com/ppp-mppe ) Впрочем, я буду использовать немножко другие, авторства Jan Dubiec - http://www.polbox.com/h/hs001 Автор добавил немножко "отсебятины", поэтому для работы требуется пропатчить не только ядро, но и pppd (да, да и новый тоже). Достоинством этих патчей является поддержка MPPC - Microsoft Point-to-Point Compression, если кому надо... Система: Slackware 9.1, linux-2.4.22 Патчи ложатся на исходный код нормально, без напильника, и кажется работают :) После применения патча к ядру, в `make menuconfig` появляется новая опция - "Microsoft PPP compression/encryption (MPPC/MPPE) (NEW)": Linux Kernel v2.4.22 Configuration [*] Network device support ARCnet devices ---> < > Dummy net driver support <M>Bonding driver support <M>EQL (serial line load balancing) support <M>Universal TUN/TAP device driver support < > Ethertap network tap (OBSOLETE) Ethernet (10 or 100Mbit) ---> Ethernet (1000 Mbit) ---> [ ] FDDI driver support [ ] HIPPI driver support (EXPERIMENTAL) <M>PPP (point-to-point protocol) support [ ] PPP multilink support (EXPERIMENTAL) [ ] 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>Microsoft PPP compression/encryption (MPPC/MPPE) (NEW) <M>PPP over Ethernet (EXPERIMENTAL) < > SLIP (serial line) support Wireless LAN (non-hamradio) ---> Token Ring devices ---> [ ] Fibre Channel driver support <M>Red Creek Hardware VPN (EXPERIMENTAL) <M>Traffic Shaper (EXPERIMENTAL) Wan interfaces ---> PCMCIA network device support ---> Ее следует включить (CONFIG_PPP_MPPE=y, можно модулем ) и пересобрать ядро. Это уж как кому хочется :) Установка PPPD http://samba.org/ppp Берем последний pppd, собираем, ставим. Тут и далее вместо `make install` будет применятся checkinstall ( http://asic-linux.com.mx/~izto/checkinstall ), кто не знает что это, могут делать по старинке. Качаем: user@linux:~$ cd user@linux:~$ wget ftp://ftp.samba.org/pub/ppp/ppp-2.4.2.tar.gz user@linux:~$ md5sum ./ppp-2.4.2.tar.gz 362bcf218fba8afbb9afbee7471e5dac ./ppp-2.4.2.tar.gz Патч к pppd для поддержки MPPE и MPPC: user@linux:~$ wget http://www.polbox.com/h/hs001/ppp-2.4.2-mppe-mppc-1.0.patch.gz user@linux:~$ md5sum ./ppp-2.4.2-mppe-mppc-1.0.patch.gz 844c9d343d7511902b5380b27eca417e ./ppp-2.4.2-mppe-mppc-1.0.patch.gz Собираем и ставим: user@linux:~$ cd /usr/src/ user@linux:/usr/src$ tar -zxvf ~/ppp-2.4.2.tar.gz user@linux:/usr/src$ cd ./ppp-2.4.2/ user@linux:/usr/src/ppp-2.4.2$ ./configure user@linux:/usr/src$ zcat ~/ppp-2.4.2-mppe-mppc-1.0.patch.gz |patch -p1 user@linux:/usr/src/ppp-2.4.2$ make user@linux:/usr/src/ppp-2.4.2$ sudo checkinstall Если вы (почему-то) хотите использовать бета-версии pppd. У меня бета (ppp_2.4.2b1) никогда нормально не собиралась: user@linux:~$ cd /usr/src user@linux:/usr/src$ tar -zxvf ~/ppp_2.4.2b1.tgz user@linux:/usr/src$ cd ppp user@linux:/usr/src/ppp$ ./configure user@linux:/usr/src/ppp$ make ... creating config.h make -C radiusclient make[3]: Вход в каталог `/usr/src/ppp/pppd/plugins/radius/radiusclient' cd . && autoheader ./aclocal.m4:49: error: m4_defn: undefined macro: _m4_divert_diversion acoldnames.m4:86: AM_PROG_INSTALL is expanded from... ./aclocal.m4:49: the top level autoconf: tracing failed make[3]: *** [stamp-h.in] Ошибка 1 make[3]: Выход из каталог `/usr/src/ppp/pppd/plugins/radius/radiusclient' make[2]: *** [radiusclient/lib/.libs/libradiusclient.a] Ошибка 2 make[2]: Выход из каталог `/usr/src/ppp/pppd/plugins/radius' make[1]: *** [all] Ошибка 2 make[1]: Выход из каталог `/usr/src/ppp/pppd/plugins' make: *** [all] Ошибка 2 Лечится даунгрейдом m4 на время установки, или так: user@linux:/usr/src/ppp$ cd ./pppd/plugins/radius/radiusclient user@linux:/usr/src/ppp/pppd/plugins/radius/radiusclient$ rm aclocal.m4 user@linux:/usr/src/ppp/pppd/plugins/radius/radiusclient$ update user@linux:/usr/src/ppp/pppd/plugins/radius/radiusclient$ aclocal user@linux:/usr/src/ppp/pppd/plugins/radius/radiusclient$ cd ../../../.. user@linux:/usr/src/ppp$ make user@linux:/usr/src/ppp$ sudo checkinstall Ядро http://kernel.org/ Качаем и устанавливаем патч к ядру для поддержки MPPE и MPPC. Hа сайте разработчика (патча, не ядра :) есть куча патчей под разные версии ядра, поищите, что вам больше подходит. user@linux:~$ cd user@linux:~$ wget http://www.polbox.com/h/hs001/linux-2.4.22-mppe-mppc-0.98.patch.gz user@linux:~$ md5sum ~/linux-2.4.22-mppe-mppc-0.98.patch.gz 90d3dffa4bada645ce2fa9605684565e /home/fagot/linux-2.4.22-mppe-mppc-0.98.patch.gz user@linux:~$ su - root@linux:~# cd /usr/src/linux root@linux:/usr/src/linux# zcat /home/fagot/linux-2.4.22-mppe-mppc-0.98.patch.gz |patch -p1 root@linux:/usr/src/linux# make menuconfig Собираем то, что вышло: root@linux:/usr/src/linux# make dep root@linux:/usr/src/linux# make bzlilo root@linux:/usr/src/linux# mv /vmlinuz /System.map /boot root@linux:/usr/src/linux# lilo root@linux:/usr/src/linux# make modules root@linux:/usr/src/linux# make modules_install Если все прошло нормально, можно попробовать загрузить модуль. Если поддержка MPPE была включена как модуль, систему можно не перегружать. root@linux:/usr/src/linux# modprobe ppp_mppe_mppc root@linux:/usr/src/linux# lsmod|grep ppp_mppe_mppc ppp_mppe_mppc 20568 0 (unused) ppp_generic 16444 0 [ppp_mppe_mppc] Все получилось. Закрепим результат: # echo "alias ppp-compress-18 ppp_mppe_mppc" >>/etc/modules.conf Установка PPTP-клиента http://pptpclient.sourceforge.net/ Если в системе уже есть (или планируется pptpd), pptp-клиент (linux-pptp) не нужен. Иначе -- в путь-дорожку: Качаем linux-pptp с http://pptpclient.sourceforge.net/#download user@linux:~$ cd user@linux:~$ md5sum ./pptp-linux-1.4.0.tar.gz 9e5c07de3e347c7125ed94824cebeaee ./pptp-linux-1.4.0.tar.gz user@linux:~$ cd /usr/src/ user@linux:/usr/src$ tar -zxvf ~/pptp-linux-1.4.0.tar.gz user@linux:/usr/src$ cd ./pptp-linux-1.4.0/ user@linux:/usr/src/poptop-1.1.4$ make user@linux:/usr/src/pptp-linux-1.4.0$ sudo checkinstall Hастройка сводится к минимуму: user@linux:/usr/src/pptp-linux-1.4.0$ sudo mkdir /etc/ppp/peers Файл /etc/ppp/peers/ISP-NAME: name LOGIN remotename ISP-NAME debug lock deflate 0 defaultroute file /etc/ppp/options.pptp pty "/usr/sbin/pptp SERVER --nolaunchpppd" Файл /etc/ppp/options.pptp: lock noauth nobsdcomp nodeflate Файл /etc/ppp/pap-secrets ИЛИ /etc/ppp/chap-secrets: # client server secret IP addresses LOGIN ISP-NAME PASSWORD * Тут LOGIN - логин на сервере, PASSWORD - соответствующий пароль, ISP-NAME - что угодно, чтоб было понятно, куда звоним, SERVER - IP-адрес или имя сервера провайдера. Запуск: user@linux:~$ sudo /usr/sbin/pppd call ISP-NAME Если `ifconfig` покажет интерфейс ppp0, значит все гут, можно пингануть Яндекс для уверенности. Если нет - смотреть /var/log/messages (внимательно) Бонус: для того, чтоб с клиента сделать сервер делаем следующее: Установка PPTPD http://www.poptop.org/ Качаем pptpd-1.1.4-b4.tar.gz с понравившегося зеркала - http://sourceforge.net/project/showfiles.php?group_id=44827 user@linux:~$ cd user@linux:~$ md5sum ./pptpd-1.1.4-b4.tar.gz 58603224998f22542e8d7ecb357bc006 ./pptpd-1.1.4-b4.tar.gz user@linux:~$ cd /usr/src/ user@linux:/usr/src$ tar -zxvf ~/pptpd-1.1.4-b4.tar.gz user@linux:/usr/src$ cd ./poptop-1.1.4/ user@linux:/usr/src/poptop-1.1.4$ ./configure --prefix=/usr/local --sysconfdir=/etc --localstatedir=/var user@linux:/usr/src/poptop-1.1.4$ make user@linux:/usr/src/ppp-2.4.2$ sudo checkinstall Файл /etc/pptpd.conf: debug Файл /etc/ppp/options: require-mschap-v2 mppe required Остальные опции додумаете сами - man pppd (параметр mppe там тоже есть) Файл /etc/ppp/chap-secrets: # client server secret IP addresses test * test 10.0.0.1 test1 * test1 10.0.0.2 test2 * test2 10.0.0.3 Запуск: user@linux:/$ sudo /usr/local/sbin/pptpd Проверяем запустился, или нет. Если что-то ему не понравится, pptpd об этом прямо на консоль и скажет, кстати. user@linux:/$ ps -A|grep pptpd 20425 ? 00:00:00 pptpd Вот и все, приехали. Тут и сказочке конец, а кто слушал... тот быстренько пошел на машину с Windows XP, создал новое VPN-соединение, проверил в параметрах, стоит ли галка использовать шифрование, используется ли MS-CHAPv2 и соединился с свеже-запущенным сервером. Если все прошло хорошо - откройте окно состояния соединения, на вкладке "Сведения" должно быть: Проверка подлинности: MS CHAP V2 Шифрование: MPPE 128 Сжатие: MPPC IP-адрес клиента: тот, что вы указали в chap-secrets Если же ничего не вышло - смотрим /var/log/messages, /var/log/debug, запоминаем с какой ошибкой вылетает клиент - и вперед на Google.com... (c) Sergey Sikorsky AKA fagot 24.06.2004, час ночи mail-to:fagot#kalinovka.net PS. Сразу предупреждаю, на письма вида "А вот я все сделал как написано, но ничего не работает..." отвечать HЕ БУДУ. Есть поисковики, есть форум - http://www.linux.org.ru/profile/fagot/view-group.jsp?group=1340, там и ищите и обрящите До встречи ! Alex Registered Linux user #344184 --- --- * Origin: Sweet Home (2:5003/34.1) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/27144270a3d6.html, оценка из 5, голосов 10
|