от Ipolit(4-11-2005)

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

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

Този документ описва как да инсталираме PPTP VPN сървър и клиент, като използваме  Slackware Linux [www.slackware.com] и PoPToP
[www.poptop.org]. PPTP -  Microsoft протокол – може да не е най-добрия протокол за  VPN, но е относително лесен за инсталация. Друг плюс е, че е поддържан от почти всяка версия на  Windows по подразбиране, което е прави удобно свързването на вашите клиенти.

Съдържание:

1. Предварителни изисквания
2. Инсталиране и конфигуриране на сървърната част
2.1 Инсталиране на MPPC/MPPE поддръжка в ядрото
2.2 Инсталиране на  poptop
2.3 Конфигуриране на poptop
2.3.1 Настройване на IP-адресирането
2.3.2 Конфигуриране на демона pptp
2.3.3 Добавяне на потребители
3 Инсталиране и конфигуриране на клиентската част
3.1 Инсталиране на  Linux pptp клиента
3.2 Конфигуриране на  Linux pptp клиента

1 Изисквания

Инсталацията на  PPTP сървър и клиент изисква наличието на следните пакети на вашата система:

- Кода на ядрото
- ppp (от  "n" серията пакети)

Приемаме че кодът на ядрото е инсталиран в  /usr/src и инсталираният пакет  ppp е този който идва със Slackware и има  MPPE поддръжка.

Освен тези изисквания, също предполагаме че имате базови познания за TCP/IP и сте запознати с компилирането на  Linux ядро.

2 Инсталиране и конфигуриране на сървърната част

2.1 Инсталиране на MPPC/MPPE поддръжка в ядрото

Първата стъпка е да се уверим че в ядрото имаме осигурена поддръжка на  MPPC/MPPE.
Проектът PoPToP предлага няколко начина за инсталиране на  MPPC/MPPE поддръжка,
но те са за по-стари ядра. Затова ще направим нещата на ръка, като използваме MPPC/MPPE кръпката от http://www.polbox.com/h/hs001/

Изтеглете подходящата  MPPE/MPPC кръпка за версията на вашето ядро
http://www.polbox.com/h/hs001/#AEN56 и я копирайте в  /usr/src.

- Забележка 1 : Кръпката предполага, че пътят до кода на вашето ядро е
/usr/src/linux-$ВЕРСИЯ, но тъй като  /usr/src/linux обикновено е връзка към тази директория, това не би трябвало да представлява проблем.

- Забележка 2 : Ако няма кръпка за версията на вашето ядро, може да опитате да изтеглите кръпка с версията, най-близка до вашата и да направите връзка като тази:

ln -s /usr/src/linux-$MYVERSION /usr/src/linux-$MPPE-MPPC-PATCH-VERSION

Инсталирайте кръпката на вашето ядро:

cd /usr/src
zcat linux-$VERSION-mppe-mppc-1.3.patch.gz | patch -p0

конфигурирайте ядрото:

cd /usr/src/linux
make menuconfig
в конфигурационното меню на ядрото идете в  Device drivers --> networking support
уверете се, че опциите за  ppp изглеждат по този начин:

[...]
<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)
[...]

После идете в  Cryptographic options конфигурационното меню на ядрото и активирайте
SHA1 и RC4 алгоритмите. Излезте от конфигурационното меню и запазете вашата конфигурация.

Компилирайте новото ядро и модули. Рестартирайте системата и се уверете, че новото ядро  работи.

Добавете следните редове в  /etc/modules.conf:

alias char-major-108 ppp_generic
alias tty-ldisc-3 ppp_async
alias tty-ldics-14 ppp_synctty
alias ppp-compress-18 ppp_mppe_mppc
alias ppp-compress-21 bsd_comp
alias ppp-compress-24 ppp_deflate
alias ppp-compress-26 ppp_deflate
alias tty-ldisc-14 ppp_synctty

Това е, което включва частта с ядрото от инсталацията.

2.2 Инсталиране на  poptop

Изтеглете последната стабилна версия на  pptpd  от http://sourceforge.net/project/showfile...
компилирайте и инсталирайте pptpd:

tar zxvf pptpd-$VERSION.tar.gz
cd pptpd-$VERSION
./configure
make
su
make install (или използвайте checkinstall (от "extra" пакетите) за да генерирате пакет за Slackware)

2.3 Конфигуриране на poptop

2.3.1 Настройване на IP-адресирането

Сега, когато имаме всички необходими пакети инсталирани на коректните места, можем да започнем с конфигурирането на poptop.

Първо ще дефинираме  IP-адрес за  pptp сървъра и  IP-адреси за присвояване на нашите клиенти. Може да изберем да присвоим различен  IP-адрес на сървъра за всяка входяща връзка, или може да използваме един адрес за всички входящи връзки. В този пример ще използваме единичен адрес на сървъра.

В /etc/pptpd.conf добавяме следващите редове:

localip 10.0.0.1
remoteip 10.0.0.2-20

С това присвояваме на IP-адрес 10.0.0.1 на pptp сървъра, обърнете внимание, че този адрес  не се присвоява на никой от физическите мрежови интерфейси на сървъра, той се използва изцяло за виртуалните интерфейси. Трябва да използвате разбира се подходящ  IP-диапазон за вашата подмрежа.

Вторият ред дефинира диапазона от адреси, които ще бъдат присвоявани на клиентите.

2.3.2 Конфигуриране на демона pptp

Продължаваме с конфигурацията на сървъра. Ще настроим pptpd като редактираме файла
/etc/ppp/options.pptpd. Трябва да сме сигурни че  pptpd чете този файл, като добавим този ред в  /etc/pptpd.conf:

option /etc/ppp/options.pptpd

После добавяме тези редове в  /etc/ppp/options.pptpd:

name pptpd
ipparam PoPToP
lock
mtu 1490
mru 1490
ms-wins $IP АДРЕСА НА ВАШИЯТ WINS СЪРВЪР, ПРИСВОЯВА СЕ НА WINDOWS КЛИЕНТИТЕ
ms-dns $IP НА ВАШИЯ  ПЪРВИ DNS СЪРВЪР, ПРИСВОЯВА СЕ НА WINDOWS КЛИЕНТИТЕ
ms-dns $IP НА ВАШИЯ  ВТОРИ DNS СЪРВЪР, ПРИСВОЯВА СЕ НА WINDOWS       КЛИЕНТИТЕ
multilink
proxyarp
auth
require-mschap
require-mschap-v2
ipcp-accept-local
ipcp-accept-remote
lcp-echo-failure 30
lcp-echo-interval 5
deflate 0
require-mppe-128
nopcomp
noaccomp

Не забравяйте да проверите  ms-wins и ms-dns опциите и присвоявайте подходящи ip-адреси. ms-wins се изисква само ако  windows клиентите ще достъпват windows сървъри на другия край на тунела.

Обърнете внимание че тази конфигурация позволява само 128 битово криптиране, някои версии на  Windows се нуждаят от допълнителен пакет за 128-битово криптиране. Този пакет може да бъде изтеглен от Microsoft.com. Възможно е да ограничите криптирането до 40 бита:

require-mppe-40

Това ще позволи на всички Windows клиенти да се свържат, но разбира се е по-малко надеждно от гледна точка на сигурността.

2.3.3 Добавяне на потребители

Сега ще добавим потребителските акаунти. Има няколко начина клиентите да се идентифицират пред  pptp сървъра, които включват  radius и Samba. Тук обаче ще използваме файлът на  ppp  chap-secrets.

Потребителите се добавят във файла /etc/ppp/chap-secrets в следния вид:


username pptp-server-name password ip-address

Валиден запис за потребител би могъл да изглежда по сления начин:

joesixpack pptpd somepassword *

Това позволява на потребителя "joesixpack" да се идентифицира пред сървъра "pptpd" с паролата  "somepassword". След като  joesixpack се свърже със сървъра и се установи връзка, неговата машина ще получи първия наличен IP адрес, както дефинирахме в предишната стъпка. Възможно е също всеки потребител да получава свой собствен уникален ip-адрес.

Обърнете внимание, че пароли съдържащи специални символи трябва да бъдат оградени в кавички.

Вече можем да стартираме  pptp демона:

/usr/sbin/pptpd

Можем да тестваме връзката си като използваме  Windows машина. Ако нямате Windows машина за теста (това е разбираемо ;-)), вижте следващата секция, където е описано как да  инсталираме  pptp linux клиент.


3 Инсталиране и конфигуриране на клиентската част

За клиентската част имаме същите изисквания както и за сървърната. Нужна е  MPPE/MPPC кръпката да бъде инсталирана на ядрото, както и ppp пакета да бъде инсталиран. За инструкции по кръпката на ядрото погледнете секция 2.1.

3.1 Инсталация на  Linux pptp клиент

Ако всичко е минало добре трябва да имате  MPPE/MPPC поддръжка в ядрото. Можем да продължим с инсталацията на  pptp клиента. Първо, изтеглете кода от  [http://pptpclient.sourceforge.net/#down...


Разархивирайте кода

tar zxvf pptp-linux-$VERSION.tar.gz

компилирайте и инсталирайте:

cd pptp-linux-$VERSION
make
su
make install


3.2 Конфигуриране на Linux pptp клиент

Създаваме файл, наречен  /etc/ppp/options.pptp и поставяме следните редове  в него:

lock noauth nodeflate nobsdcomp

Добавяме следващия ред в  /etc/ppp/chap-secrets:

username pptpd password *

Поставяме вярно потребителско име и парола за  pptp сървъра към който ще се свързваме.

Сега създаваме файл, наречен  /etc/ppp/peers/YOURTUNNELNAME, като заменяме YOURTUNNELNAME с каквото и да е име, с което искаме да наречем тунела. Поставяме следните редове в този файл:

pty "pptp YOURPPTPSERVER --nolaunchpppd"
name YOURUSERNAME
mtu 1490
mru 1490
remotename pptpd
require-mschap
require-mschap-v2
require-mppe-128
file /etc/ppp/options.pptp
ipparam YOURTUNNELNAME
persist

където YOURPPTPSERVER е адресът на pptp сървъра, с който искаме да се свържем, YOURUSERNAME е вашето потребителско име YOURTUNNELNAME е същото като това което поставихме във файла /etc/ppp/peers.

Остава един последен детайл, за който трябва да се погрижим и това е рутирането.
За да сме сигурни че нашият трафик ще бъде рутиран към другия край на тунела, създаваме файл с име ip-up в  /etc/ppp и поставяме следните редове в него:

#!/bin/sh
/sbin/route add -net REMOTE-NET-IP netmask REMOTE-NET-MASK dev ppp

в който трябва да заменим  IP-адреса и мрежовата маска с тези на другия край на тунела. Ако няма мрежа от другата страна, а само  pptp сървър, може да използваме  -host вместо  -net. Като приключим с това, съхраняваме файла и го правим изпълним:

chmod +x /etc/ppp/ip-up

Сега вече всичко е готово и може да пуснем тунела:

pppd call YOURTUNNELNAME

Ако всичко е минало както трябва, би трябвало да се появи нещо такова във /var/log/messages:

Mar 16 19:25:53 feike pppd[7319]: local IP address 10.0.0.5
Mar 16 19:25:53 feike pppd[7319]: remote IP address 10.0.0.1

и също да можете да пращате  ping по тунела..


<< Инсталиране на драйвери за nVidia под SuSE | Антивирусна проверка и SPF поддръжка в Postfix >>