LINUX-BG   Адрес : http://www.linux-bg.org
Инсталиране и конфигуриране на VPN на Fedora Core 2
От: spider
Публикувана на: 12-07-2004
Адрес на статията: http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=advices&key=363213740
Първо нека да уточним какво всъщност представлява понятието VPN ?
VPN е абревиатура на Virtual Private Network (виртуална частна мрежа).
Най-общо казано VPN е защитен тунел, използващ интернет за връзка между две мрежи и пренос на данни между тях.
Ако вземем например дадена фирма с офиси в София и Варна, чрез VPN може да се обединят мрежите на
двата офиса, така че да работят като една голяма мрежа и съответно служителите от офиса в София ще могат
да обменят данни със служителите от офиса във Варна и обратно.

Има много средства за конфигуриране на VPN :

PoPToP ( http://www.poptop.org/ ),
CIPE ( http://sites.inka.de/sites/bigred/devel/cipe.html )
IPSec - Openswan ( http://www.openswan.org/ ), Freeswan ( http://www.freeswan.org/ )
PPP over SSH
OpenVPN ( http://openvpn.sourceforge.net/ )
.......

В настоящата статия ще използваме Openswan ( http://www.openswan.org/ ) като средство за конфигуриране на VPN.
Ще попитате защо точно Openswan ?
Отговорът е в четирите му основни характеристики :

1.Сигурност - Openswan използва IPSec (Internet Protocol SECurity),
много мощен протокол,осигуряващ дълбоко криптиране на данните
2.Стабилност
3.Отворен код
4.Голяма платформена поддръжка - Openswan поддържа ядра 2.0.x, 2.2.x, 2.4.x и 2.6.x,
както и платформи x86, ia64, mips и arm.

Ще използваме по-горе посочения пример - фирма "X", която има офиси във София и Варна.
Нашата задача е да конфигурираме VPN между двата офиса.

В офиса в София имаме компютър с инсталиран Linux (Fedora Core 2 с ядро 2.6.6-1),
който служи като firewall и router и съответно разпределя интернета към другите компютри от вътрешната мрежа.
Външният IP адрес (адреса на мрежовата карта към интернет) е 1.1.1.2 със gateway 1.1.1.1 и hostname "x-sofia" .
Вътрешният IP адрес (адреса на мрежовата карта към вътрешната мрежа) е 192.168.1.1 .
Компютрите от вътрешната мрежа имат IP-та от 192.168.1.2 до 192.168.1.254,
мрежова маска 255.255.255.0 и gateway и DNS 192.168.1.1

В офиса във Варна имаме компютър с инсталиран Linux (Fedora Core 2 с ядро 2.6.5-1),
който служи като firewall и router и съответно разпределя интернета към другите компютри от вътрешната мрежа.
Външният IP адрес (адреса на мрежовата карта към интернет) е 2.2.2.2 със gateway 2.2.2.1 и hostname "x-varna" .
Вътрешният IP адрес (адреса на мрежовата карта към вътрешната мрежа) е 192.168.2.1 .
Компютрите от вътрешната мрежа имат IP-та от 192.168.2.2 до 192.168.2.254,
мрежова маска 255.255.255.0 и gateway и DNS 192.168.2.1

Приемаме, че работим в офиса в София и имаме директен достъп до linux машината,
а до linux-a във Варна имаме достъп по ssh.
Всички команди и настройки се изпълняват като потребител root.

И така както се казва "let's the party begin" :

1. Сваляме необходимите пакети :

wget http://www.openswan.org/code/openswan-2.1.4-1.fc2.i386.rpm
wget http://www.openswan.org/code/openswan.signingkey.asc

2. Импортираме сигнатурата на пакета :

rpm --import openswan.signingkey.asc

3. Проверяваме дигиталната сигнатура на пакета :

rpm --checksig openswan-2.1.4-1.fc2.i386.rpm

Ако всичко е наред трябва да получим :

openswan-2.1.4-1.fc2.i386.rpm: sha1 md5 OK

4.Инсталираме Openswan :

rpm -ivh openswan-2.1.4-1.fc2.i386.rpm

5.Създаваме RSA key, който ще бъде използван за идентификация :

5.1 За офиса в София изпълняваме :

ipsec newhostkey --output /etc/ipsec.secrets --hostname x-sofia
chmod 600 /etc/ipsec.secrets

5.2 За офиса във Варна изпълняваме :

ipsec newhostkey --output /etc/ipsec.secrets --hostname x-varna
chmod 600 /etc/ipsec.secrets

6.Стартираме ipsec :

service ipsec start

7. Проверяваме дали всичко е наред :

ipsec verify

Ако всичко е наред трябва да получим :

Checking your system to see if IPsec got installed and started correctly
Version check and ipsec on-path [OK]
Checking for KLIPS support in kernel [OK]
Checking for RSA private key (/etc/ipsec.secrets) [OK]
Checking that pluto is running [OK]

8.За да продължим по-нататък ще ни трябват ключовете създадени в стъпка 5 и на двете linux машини :

8.1 За офиса в София изпълняваме :

ipsec showhostkey --left

Ще получим нещо като :

# RSA 2192 bits x-sofia Fri Jul 9 11:11:44 2004
leftrsasigkey=0sAQOnwiBPt...

8.2 За офиса във Варна изпълняваме :

ipsec showhostkey --right

Ще получим нещо като :

# RSA 2192 bits x-varna Fri Jul 9 11:20:44 2004
leftrsasigkey=0sfhjvhhGFkj...

Самите ключове са записани във файла /etc/ipsec.secrets, така че могат да се вземат и от там.

9.Най-важната част - настройка на файла /etc/ipsec.conf :

Отваряме файла с накой текстов редактор и след реда
# Add connections here
добавяме :

conn sofia-to-varna # Това е името на връзката
left=1.1.1.2 # външният IP адрес на linux-a в София
leftsubnet=192.168.1.0/24 # вътрешната мрежа на linux-a в София
leftid=@x-sofia # hostname-a на linux-a в София
leftrsasigkey=0sAQOnwiBPt... # RSA ключа на linux-a в София (стъпка 8.1)
leftnexthop=1.1.1.1 # gateway-я на linux-a в София
right=2.2.2.2 # външният IP адрес на linux-a във Варна
rightsubnet=192.168.2.0/24 # вътрешната мрежа на linux-a във Варна
rightid=@x-varna # hostname-a на linux-a във Варна
rightrsasigkey=0sfhjvhhGFkj... # RSA ключа на linux-a във Варна (стъпка 8.2)
rightnexthop=2.2.2.1 # gateway-я на linux-a във Варна
auto=add # автоматично добавяне на връзката при стартиране на системата

Забележка: файла /etc/ipsec.conf трябва да бъде абсолютно еднакъв и за двата linux-a,
така че след като конфигурираме файлa на linux-а в София го копираме на linux-a във Варна,
това може да стане с командата :

scp /etc/ipsec.conf root@2.2.2.2:/etc/ipsec.conf

10.Рестартираме двата linux сървъра и тестваме връзката :

ipsec auto --up sofia-to-varna

Ако всичко е наред трябва да получим :

104 "sofia-to-varna" #10: STATE_MAIN_I1: initiate
106 "sofia-to-varna" #10: STATE_MAIN_I2: sent MI2, expecting MR2
108 "sofia-to-varna" #10: STATE_MAIN_I3: sent MI3, expecting MR3
004 "sofia-to-varna" #10: STATE_MAIN_I4: ISAKMP SA established
112 "sofia-to-varna" #11: STATE_QUICK_I1: initiate
004 "sofia-to-varna" #11: STATE_QUICK_I2: sent QI2, IPsec SA established

Забележка: ако използвате firewall трябва да отворите UDP порт 500 (IKE) и протокол 50 (ESP),
които се използват за осъществяване на IPSec връзка, за целта можете да добавите към вашия
firewall следните редове :

# IKE negotiations
iptables -I INPUT -p udp --sport 500 --dport 500 -j ACCEPT
iptables -I OUTPUT -p udp --sport 500 --dport 500 -j ACCEPT
# ESP encryption and authentication
iptables -I INPUT -p 50 -j ACCEPT
iptables -I OUTPUT -p 50 -j ACCEPT

11.Довършване на настройките :

Ако всичко е наред след стъпка 10, отново отваряме /etc/ipsec.conf и променяме :
auto=add
на
auto=start
Така VPN връзката ще се стартира автоматично при стартиране на linux сървърите.

Забележка: както вече казахме файлът /etc/ipsec.conf трябва да бъде абсолютно еднакъв и на двата
linux сървъра, така че посочените промени в тази стъпка трябва да бъдат направени и на двете места.

12.Допълнителни настройки :

Ако използвате IP masquerade или Network Address Translation (NAT)
при рутирането трябва да направите съответните промени.
Например ако използвате :

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE

трябва да го промените на:

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -d \! 192.168.2.0/24 -j MASQUERADE



Това е всичко, вече трябва да имате VPN между двата офиса.
Ако възникнат някакви проблеми ще се радвам да помогна с каквото мога.
Препоръчвам да прочетете документацията на адрес : http://www.openswan.org/docs/


Връзки :

http://fedora.redhat.com/ # официална страница на проекта Fedora
http://openswan.org/ # официална страница на проекта Openswan
http://www.netfilter.org/ # официална страница на проекта iptables
http://www.tldp.org/HOWTO/VPN-HOWTO/ # VPN Howto
http://www.vpnc.org/ # VPN Консорциум, полезна информация за VPN стандартите и IPSec протокола.


<< Инсталиране на SuSE Linux 9.1 | Пример за употреба на Access Control Lists с Линукс >>

Авторите на сайта, както и техните сътрудници запазват авторските права върху собствените си материали публикувани тук, но те са 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.

Изпълнението отне: 1 wallclock secs ( 0.16 usr + 0.03 sys = 0.19 CPU)