от spider(12-07-2004)

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

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

Първо нека да уточним какво всъщност представлява понятието 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 с Линукс >>