Инсталация и настройка на 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
    
  • Share/Bookmark
  1. No comments yet.

  1. No trackbacks yet.

You must be logged in to post a comment.