LINUX-BG   Адрес : http://www.linux-bg.org
Настройка на VPN чрез pptp
От: titovn
Публикувана на: 24-04-2006
Адрес на статията: http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=advices&key=381971142
Тез дни ми се наложи и на мен да пусна VPN под Linux-а (нов ISP), та се оказа, че е доста работа и така както гледам по-начинаещите потребители мисля, че нЕма да се справят, та реших да напиша едно ръководство за пускане на PPTP... а не е лошо някой модератор да го лепне отгоре, че е полезно да се знаят тез работи...
1) трябва да се пачне кърнъла за да подържа MPPE/MPPC... такъв пач се сваля за 'секи отделен кърнъл от този сайт: MPPE/MPPC kernel module for Linux
За да предвидя въпроса "как се пачва кърнъл", ше кажа, че става с командата:
patch -p0 "... после "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... 'се пак в повечето по-нови дистрибуции си го има вече и не е нужно да се слага отново... като отново се внимава да се включи подръжката на MPPE... може да се провери дали ppp-то подържа MPPE със следната команда:
# strings `which pppd`|grep -i mppe|wc --lines
Ако pppd подържа MPPE, отговора ше е някъде около 38-42 или нещо подобно, а ако не подържа - ше е НУЛА.
3) инсталира се GTK+... тук няма нищо особено...
4) Следва инсталация на php (версия 4.3.7 или по-нова): PHP...
Задължително при конфигурирането на сорса трябва да се зададе опцията “--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 - правя го първо на пакет и после го инсталирам, за да мога лесно да добавям, упгрейдвам и т.н.)
5) следва инсталацията на PHP-GTK версия 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 или PPTP Client for Linux версия от 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... ама то туй се подразбира)
Може и малко по'тънко да се мине без графичната част, като ето ТУК е описано:
Цитат:
Originally posted by prestige
От тук си теглиш:
1. pptp-linux-1.4.0.tar.gz и
2. pptp-extras-1.4.0.tar.gz
Първото си го компилираш, както си е описано.Трябва ти пакета PPP за съответната дистрибуция (можеш да го компилираш и от сорс) и PPP Support в ядрото!
С второто правиш следното:
tar zxvf pptp-extras-1.4.0.tar.gz
cp pptp-extras-1.4.0/options.pptp /etc/ppp/
cp pptp-extras-1.4.0/pptp-command /usr/sbin/
Предполагам знаеш, какво правят тези команди.
Скриптът pptp-command е perl скрипт, с който се конфигурират тунелите.Погледни дали има"х" в правата (за да е стартируем).
Следва да направиш едни директории, от които pptp-command се нуждае:
mkdir /etc/pptp.d
mkdir /etc/ppp/peers
Дойде време да стартираш pptp-command:
root@:~# pptp-command
1.) start
2.) stop
3.) setup
4.) quit
What task would you like to do?:
Избираш "3" за setup.

1.) Manage CHAP secrets
2.) Manage PAP secrets
3.) List PPTP Tunnels
4.) Add a NEW PPTP Tunnel
5.) Delete a PPTP Tunnel
6.) Configure resolv.conf
7.) Select a default tunnel
8.) Quit
?:
избираш 1

1.) List CHAP secrets
2.) Add a New CHAP secret
3.) Delete a CHAP secret
4.) Quit
?:
избираш 2

Local Name: тук пишеш username-то си на VPN connection-а
Remote Name [PPTP]: същото, като по-горното
Password: тук пишеш поролата си (когато си пишеш паролата ти не се извеждаш символи)

1.) List CHAP secrets
2.) Add a New CHAP secret
3.) Delete a CHAP secret
4.) Quit
?:
избираш 4

1.) Manage CHAP secrets
2.) Manage PAP secrets
3.) List PPTP Tunnels
4.) Add a NEW PPTP Tunnel
5.) Delete a PPTP Tunnel
6.) Configure resolv.conf
7.) Select a default tunnel
8.) Quit
?:
избираш 4

1.) Other
Which configuration would you like to use?:
избираш 1

Tunnel Name: тук няма особено значение, какво ще пишеш - името на ISP-то си, името на кучето си, името на приятелката си, ...
Server IP: тук пишеш IP-to на VPN сървъра, който ще те ауторизира.
route: хм, значи тук нещата са малко импровизирани.Не пиши нищо за сега.После ще се върнем на него пак с допълнително обяснение.(Удряш Enter само)
Local Name: username-то на VPN connection-а
Remote Name [PPTP]: пак username-то на VPN connection-а

1.) Manage CHAP secrets
2.) Manage PAP secrets
3.) List PPTP Tunnels
4.) Add a NEW PPTP Tunnel
5.) Delete a PPTP Tunnel
6.) Configure resolv.conf
7.) Select a default tunnel
8.) Quit
?:
избираш 7
и избираш номера на тунела, който ще използваш по default.Ако е само един това е 1, 2 е cancel.

1.) Manage CHAP secrets
2.) Manage PAP secrets
3.) List PPTP Tunnels
4.) Add a NEW PPTP Tunnel
5.) Delete a PPTP Tunnel
6.) Configure resolv.conf
7.) Select a default tunnel
8.) Quit
?:
избираш 8

стартиране:
pptp-command start
ще видиш нещо такова:
root@:~# pptp-command start
Using interface ppp0
Connect: ppp0  /dev/pts/9
Cannot determine ethernet address for proxy ARP
local IP address 192.200.59.194
remote IP address 192.168.34.8
pptp-command: added route add default gw 192.200.59.194 dev ppp0
Tunnel atlantis is active on ppp0. Local IP Address: 192.200.59.194
root@:~#


С това тунела е вдигнат и можеш да го видиш с:
ifconfig като ppp0.

Идва ред да оправим route-инга.Онова route: по-горе, което оставихме празно.
Правиш следното:
ifconfig ppp0
С това виждаш само ppp0 интерфейса.IP-то за route-инга, което ти трябва е на реда:
inet addr:192.200.59.194 P-t-P:192.168.34.8 Mask:255.255.255.255
IP-то което ти трябва е това: inet addr: x.x.x.x !!!

За да не правиш всеки път:
pptp-command start и после
route add default gw x.x.x.x dev ppp0
тази команда се слага в онова горното route: , което оставихме празно.
Връщаме се отново на pptp-command скрипта.
Стартираме го:
pptp-command setup
1.) Manage CHAP secrets
2.) Manage PAP secrets
3.) List PPTP Tunnels
4.) Add a NEW PPTP Tunnel
5.) Delete a PPTP Tunnel
6.) Configure resolv.conf
7.) Select a default tunnel
8.) Quit
?:
избираш 5

И после избираш номера на тунела, който искаш да изтриеш.Предполагам е само един при теб, за това избираш 1.

Removed tunnel
1.) Manage CHAP secrets
2.) Manage PAP secrets
3.) List PPTP Tunnels
4.) Add a NEW PPTP Tunnel
5.) Delete a PPTP Tunnel
6.) Configure resolv.conf
7.) Select a default tunnel
8.) Quit
?:

След това правиш абсолютно същото с добавянето на нов тунел, както ти го описах по-горе, единствено с тази разлика, че когато те попита за route: пишеш:
route: add default gw x.x.x.x dev ppp0
"route" НЕ се пише!Скрипта ти го изписва, а ти пишеш само add default gw x.x.x.x dev ppp0.
Това ip x.x.x.x ти обясних от къде да го вземеш.

П.С Тази статия е написана от mitku във форума на Hardwarebg.com. Аз само реших да я поставя тук, защото от всичко каквото съм изчел тя ми помогна да си пусна нет-а. И единственото което промених, защото съм с pptp-1.5.0 е че в options.pptp откоментирах mppe-128 и го промених на require-mppe-128.

Авторите на сайта, както и техните сътрудници запазват авторските права върху собствените си материали публикувани тук, но те са copyleft т.е. могат свободно да бъдат копирани и разпространявани с изискването изрично да се упоменава името на автора, както и да се публикува на видно място, че те са взети от оригиналния им URL-адрес на този сървър (http://www.linux-bg.org). Авторските права на преводните материали принадлежат на техните автори. Ако с публикуването тук на някакъв материал неволно са нарушени нечии права - след констатирането на този факт материалът ще бъде свален.

All trademarks, logos and copyrights mentioned on this site are the property of their respective owners.
Linux is copyright by Linus Torvalds.
© Линукс за българи ЕООД 2007
© Slavei Karadjov 1999 - 2006

All rights reserved.

Изпълнението отне: 0 wallclock secs ( 0.13 usr + 0.01 sys = 0.14 CPU)