от titovn(24-04-2006)

рейтинг (12)   [ добре ]  [ зле ]

Printer Friendly Вариант за отпечатване

Тез дни ми се наложи и на мен да пусна 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.