PDA

View Full Version : VPN/PPTP HowTo



WooDy
06-26-2009, 10:23
Тез дни ми се наложи и на мен да пусна VPN под Linux-а (нов ISP), та се оказа, че е доста работа и така както гледам по-начинаещите потребители мисля, че нЕма да се справят, та реших да напиша едно ръководство за пускане на PPTP... а не е лошо някой модератор да го лепне отгоре, че е полезно да се знаят тез работи...
1) трябва да се пачне кърнъла за да подържа MPPE/MPPC... такъв пач се сваля за 'секи отделен кърнъл от този сайт: MPPE/MPPC kernel module for Linux (http://mppe-mppc.alphacron.de/) (edit забепежка: последните кърнъли от 2.6.x линията вече си имат вградена подръжка на MPPE/MPPC и не е нужен пач и за това няма пачове след 2.6.13)
За да предвидя въпроса "как се пачва кърнъл", ше кажа, че става с командата:
patch -p0 < patch-file-name-here
В случая първо се разархивира някой от пачоевте по-горе (зависи кой кърнъл трябва да се пачне) и после се пачва... например имате кернел 2.6.9 разархивиран в директория /usr/src/linux-2.6.9/ ... слагате разархивирания пач в /usr/src/ и пишете: patch -p0 < linux-2.6.9-mppe-mppc-1.1.patch
С това сорса на кърнъла е пачнат и се пуска конфигурацията му (например make menuconfig) - отивате в "Device Drivers --->"... после "Networking support --->"... пуска се "PPP (point-to-point protocol) support" и в него "Microsoft PPP compression/encryption (MPPC/MPPE)"... добре е да се включат и останалите нещица от PPP-то, но нЕма да навлизам в подробности.
Следва компилацията на кърнъла (пак нЕма да навлизам в подробности как се компилира)
Ако MPPE-то е като модул трябва да се добави един ред в /etc/modules.conf със съдържанив:
alias ppp-compress-18 ppp_mppe_mppc
После може да се пробва дали кърнъла има подръжка на MPPE с командата:
# modprobe ppp-compress-18
Ако не издаде никакви съобщения за грешки – 'начи модула в кърнъла вече е работоспособен... иначе – т.1 отначало...
2) Следва инсталация на pppd (ако не е инсталирано вече) – има го тук като сорс (трябва ви версия 2.4.2 или по-нова): Welcome to the ppp web pages (http://www.samba.org/ppp/)... 'се пак в повечето по-нови дистрибуции си го има вече и не е нужно да се слага отново... като отново се внимава да се включи подръжката на MPPE... може да се провери дали ppp-то подържа MPPE със следната команда:
# strings `which pppd`|grep -i mppe|wc --lines
Ако pppd подържа MPPE, отговора ше е някъде около 38-42 или нещо подобно, а ако не подържа - ше е НУЛА.
3) инсталира се GTK+ (http://www.gtk.org/)... тук няма нищо особено...
4) Следва инсталация на php (версия 4.3.7 или по-нова): PHP (http://www.php.net/)...
Задължително при конфигурирането на сорса трябва да се зададе опцията “--enable-pcntl”:
./configure --enable-pcntl
(Едит1... аз ползвах: ./configure --with-mod_charset --with-openssl --with-zlib --enable-bcmath --with-bz2 --enable-calendar --with-curl --enable-ftp --with-java=/usr/lib/j2sdk1.4.2_01/ --enable-mbstring --with-mysql --enable-pcntl --with-readline)
Може и други опции да се зададат, но трябва да се внимава... някой са несъвместими една с друга, а за някой просто трябва да има инсталирани съответните приложения, които да ги ползват.
После се компилира PHP-то и се инсталира (аз 'сяко нещо инсталирам чрез checkinstall (http://asic-linux.com.mx/~izto/checkinstall/) - правя го първо на пакет и после го инсталирам, за да мога лесно да добавям, упгрейдвам и т.н.)
5) следва инсталацията на PHP-GTK (http://gtk.php.net/) версия 1.0.0. или по-нова... може би най-бъгавата част от цялата "далавера" (но си заслужава)... първо се доизгражда сорса със скрипта buildconf:
# ./buildconf
следва конфигурирането на инсталацията (аз добавям --enable-php-gtk):
# ./configure --enable-php-gtk
После трябва да се "пипнат" няколко неща по сорса иначе просто дава грешки и не минава компилацията (бъгове - к'во да пра'и човек)... за да не навлизам в подробности ше кажа как да се избегнат: отваряте файла Makefile:
# vi Makefile
Трябва да се едитнат няколко нещица: търсите 'СИЧКИ редове, които започват с: "$(PHP) -f $(top_srcdir)/generator/generator.php --":
/$(PHP) -f $(top_srcdir)/generator/generator.php --
Трябва да се заменят с: "$(PHP) -q $(top_srcdir)/generator/generator.php"
останалата част от реда си остава същата, т.е. опцията "-f" се заменя с "-q" и се махат двете "минусчета" (пак без да навлизам в подробности "защо")...
После се компилире (make)... и инсталира php-gtk...
6) изтегля се и се инсталира PPTP Client for Linux (http://pptpclient.sourceforge.net/) или PPTP Client for Linux (http://sourceforge.net/projects/pptpclient/) версия от 1.2.0. нагоре...
В тази "част" трябва да се инсталират например версиите: pptp-linux-1.5.0.tar.gz ; pptp-extras-1.5.0.tar.gz и pptpconfig-20040722.tar.gz.
5) чрез pptpconfig се конфигурират тунелите (VPN-връзките и се включват/изключват в графичен режим - X11... за туй трябваше подръжката на GTK+ от PHP-то и самото GTK+...)
Тук има една "уговорка"... обикновено самия PHP-скрипт е Уеко сгрешен... т.е. пътя до интерпретатора PHP в началото на скрипта е сгрешен и не съответства на мястото, където се е инсталирал и съответно не работи без да се едитне... трябва да се смени първия ред от "#!/usr/lib/php-pcntl/bin/php -q"... на "#!/usr/local/bin/php -q" или там където ви е самото PHP...
После си правите един линк някъде из менютата на KDE-то към този скрипт (pptpconfig) и го пускате... вече в екранчето к'во да се сетне е еУементарно... име на връзката, IP, лузър (юзер), парола, подържани енкапсулации и т.н. - както ви е казал доставчика.
(Едит2...Забравих да напиша - трябваха ми и следните библиотеки за да тръгне 'сичко туй - libglade-0.17, libglade-2.4.0 и libxml-1.8.17 ... при вас може и да трябват други)
(Едит3... забравих да кажа и че ви трябва пакета iproute2... ама то туй се подразбира)
Може и малко по'тънко да се мине без графичната част, като ето ТУК е описано (http://hardwarebg.com/forum/showthread.php?s=&threadid=29001#post301505):

P.S. Може и да съм пропуснал нещо, но наистина стана доста дълго... Успех и от мен...

ivanstef
06-26-2009, 19:06
Браво, браво!