от spider(12-07-2004)
рейтинг (22)
[ добре ]
[ зле ]
Вариант за отпечатване
Първо нека да уточним какво всъщност представлява понятието 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 с Линукс >>
|