Професионален Блог

Поредният WordPress блог – що пък не? :P

Инсталация и настройка на OpenVPN стъпка по стъпка.

Здравейте,

в тази статия ще опиша стъпките по които настроих OpenVPN сървър за лични потребности.

Примера е за настройване на OpenVPN под Debian 5 и клиент под Fedora 12.

Да започнем с инсталирането на необходимите пакети:

server1:~# apt-get install openvpn

Със следващите команди ще създам директория за ключовете и ще копирам в нея скриптовете за генериране на ключове:

mkdir /etc/openvpn/easy-rsa
cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsа

Необходимо е да бъде редактиран /etc/openvpn/easy-rsa/vars с твоите данни.
След което за да бъдат генерирани ключовете трябва да бъдат изпълнени следните команди:

cd /etc/openvpn/easy-rsa
. ./vars
./clean-all
./build-ca
./build-key-server servername
./build-dh

Следва да бъде създаден конфигурационния файл за openvpn сървъра.
Файла трябва да бъде създаден в следната директория /etc/openvpn/server.conf
За шаблон можете да използвате следния адрес: http://openvpn.net/index.php/open-source/documentation/howto.html#server
Ето как изглежда моя конфигурационен файл:

#server1:~# cat /etc/openvpn/server.conf
local xx.xx.xx.xx  #адрес, който openvpn да "слуша" за връзки
port 1724
proto tcp
dev tap
ca      /etc/openvpn/easy-rsa/keys/ca.crt
cert    /etc/openvpn/easy-rsa/keys/server.crt
key     /etc/openvpn/easy-rsa/keys/server.key
dh      /etc/openvpn/easy-rsa/keys/dh1024.pem
server 192.168.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway"
push "dhcp-option DNS 208.67.220.220"
client-to-client
keepalive 10 120
comp-lzo
max-clients 10
persist-key
persist-tun
status openvpn-status.log
verb 4

Следват инструкции за настройка на OpenVPN клиент върху Fedora ОС.
Инсталиране на OpenVPN:

yum install openvpn

Генериране на ключ за клеинт:

cd /etc/openvpn/easy-rsa
./build-key client1

След генерирането на ключовете трябва да копирате ca.crt , client1.crt и client1.key в директория /etc/openvpn/ .
Създаване на конфигурационен файл /etc/openvpn/client.conf .
За шаблон можете да използвате следния адрес: http://openvpn.net/index.php/open-source/documentation/howto.html#client
Ето как изглежда моя конфигурационен файл:

client
dev tap
;dev tun
proto tcp
;proto udp
remote servername 1724
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert  client1.crt
key client1.key
cipher BF-CBC
comp-lzo
verb 4
;mute 20

Следва стартиране на сървъра и клиента.
Сървъра се стартира по следния начин:

/etc/init.d/openvpn start

Клиента се стартира с:

cd /etc/openvpn
openvpn client.conf

Най-вероятно след като тествате свързаността си ще видите, че имате пинг до гейта ( сървъра ) и съответната мрежа, но не и на вън.
За да рутирате целия трафик през vpn-a и да имате достъп до „външни“ адреси трябва да направите следното с iptables:

iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface tap0 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward

Тъй като ОС е Debian за да се запомнят правилата трябва да се направи следното:

iptables-save > firewall.conf

След което в файл /etc/network/if-up.d/iptables трябва да добавите следния код:

#!/bin/sh
iptables-restore < /etc/firewall.conf
echo 1 > /proc/sys/net/ipv4/ip_forward

Рестартирайте сървъра и проверете дали всичко ще работи коректно.


За да изключите даден сертификат трябва да направите следното:

  1. Отидете в easy-rsa директорията:
    cd /etc/openvpn/easy-rsa/
    
  2. Стартирайте следните команди:
    . ./vars
    ./revoke-full client2
    

    където „client2“ е името на клиента чиито достъп ще забраните.

  3. revoke-full генерира файл с име crl.pem . Необходимо е в конфогирационния файл на openvpn да посичите пътя до този файл като добавите следния ред в server.conf:
    crl-verify /etc/openvpn/easy-rsa/keys/crl.pem
    
  4. Рестартирайте OpenVPN сървъра за да се приеме промяната.
     /etc/inid.d/openvpn restart 

    Ето какво се случва вече при опит да бъде достъпен сървъра със сертификат, който е бил спрян:

    server1 ovpn-server[7252]: XXX.XXX.XXX.XXX:34036 CRL CHECK FAILED: /C=BG/ST=CA/L=Sofia/O=Fort-Funston/CN=server1/emailAddress=me@myhost.mydomain is REVOKED
    

, , , ,

11 thoughts on “Инсталация и настройка на OpenVPN стъпка по стъпка.

  • krustanovs каза:

    Имам проблем с настройката на убунту 10.10 като дам команда „cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsа“ и ми дава „cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsа
    cp: целта „/etc/openvpn/easy-rsа“ не е каталог“ някой ако може да помогне

  • Walker каза:

    А създал ли си самата директория?


    sudo mkdir /etc/openvpn/easy-rsa/
    sudo cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/

  • krustanovs каза:

    Създадена е

  • krustanovs каза:

    С -R стана. После във vars само тези файлове ли трябва да променя export KEY_COUNTRY=“US“
    export KEY_PROVINCE=“CA“
    export KEY_CITY=“SanFrancisco“
    export KEY_ORG=“Fort-Funston“
    export KEY_EMAIL=“me@myhost.mydomain“ или има и други

  • Walker каза:

    Дам, той ти трябва за да генерираш сертификатите.
    На следния адрес има гайд точно за убунту:

    https://help.ubuntu.com/10.04/serverguide/C/openvpn.html

  • keltis каза:

    Колега, като гледам това не е bridget конфигурация.Това знчи ли , че сървърът ти има два лан интерфейса(реални).Но може и да греша.

  • Walker каза:

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

  • keltis каза:

    Ей с това се мъча…..http://bailey.st/blog/2011/01/06/openvpn-road-warrior-howto/

    Вдигам VPN сървъра, правя връзка с него напълно успешно, но без да съм вдигнал бриджа .Вдигнали бриджа, а това става лсед ребутване на сървъра нито имам достъп по SSH до сървъра нито става VPN конекция.Дефакто по SSH сървърът остава достъпен само от LAN-а от VAN-a няма достъп.Използвам настройките от горната статия и Убунту сървър 10,04 и 11.10 .Ще съм ти благодарен ако ми дадеш някой съвет.
    Поздрави!!

  • Walker каза:

    До колкото помня, в средата в която правих тези настройки гейта можете да рутира и двете мрежи.
    Сигурно там е проблема…

  • stillfree каза:

    Братле, а случайно да можеш да помогнеш да създам VPN връзка между две виртуални машини Windows XP – Виртуалната среда е Oracle VirtualBox? Трябва ми за учебна цел. Реферата ми е за VPN и трябва да направя и лайв демо? Ако имаш време и ти се занимава помагай.. изтеглих си OpenVPN от офиц. сайт и го инсталирах, долу при часовника само ми стои сиво с катинарче и само с десен бутон като цъкна мога да избера Настройки и изход.

    Мерси предварително!

  • Walker каза:

    Здравей,

    кой ще играе ролята на сървър и кой на клиент?

Вашият коментар