[stary wpis!] CentOS 6 – OpenVPN 2 + klient Windows 7/Linux

UWAGA!! Ten artykuł ma więcej niż 2 lata. W związku z rozwojem oprogramowania instalacja i konfiguracja może się różnić w aktualnych wersjach!

Poszukaj nowszych poradników w spisie treści.
Print Friendly

VPN – Wirtualna Sieć Prywatna tworzy tunel pomiędzy naszym serwerem, a komputerem klienta, wykorzystując do tego sieć internetową. Całe połączenie ma właściwości normalnej sieci lokalnej, komputery dostają w naszym przypadku adresy z puli 10.8.0.0/24. Po ustanowieniu połączenia nasz VPN będzie kierował cały ruch z naszego klienta z systemem Windows 7 przez serwer. Mówiąc najprościej, wchodząc na strony czy korzystając z ftp, torrenta czy nawet gg, będziemy widoczni pod adresem IP serwera.

 

Instalacja

Musimy posiadać aktywne repozytorium EPEL, instrukcja instalacji tutaj.

yum install openvpn openssl openssl-devel

 

Aktualizacja

UWAGA! Od wersji 2.3 zestaw skryptów easy-rsa jest oddzielnym pakietem i nie wchodzi w „skład” pakietu podstawowego. Easy-rsa znajduje się tutaj: https://github.com/OpenVPN/easy-rsa

Również katalog z plikami konfiguracyjnymi zmienił położenie na: /usr/share/doc/openvpn-2.3.*/sample/sample-config-files.

Przygotowanie plików konfiguracyjnych i skryptów do generowania kluczy:

cp -r /usr/share/openvpn/easy-rsa/2.0/ /etc/openvpn/easy-rsa
cp /usr/share/doc/openvpn-2.*/sample-config-files/server.conf /etc/openvpn
mkdir /etc/openvpn/keys

Struktura katalogów w /etc/openvpn powinna wyglądać mniej więcej tak:

/etc/openvpn
├── easy-rsa
│   ├── build-ca
│   ├── build-dh
│   ├── build-inter
│   ├── build-key
│   ├── build-key-pass
│   ├── build-key-pkcs12
│   ├── build-key-server
│   ├── build-req
│   ├── build-req-pass
│   ├── clean-all
│   ├── inherit-inter
│   ├── list-crl
│   ├── Makefile
│   ├── openssl-0.9.6.cnf
│   ├── openssl-0.9.8.cnf
│   ├── openssl-1.0.0.cnf
│   ├── pkitool
│   ├── README
│   ├── revoke-full
│   ├── sign-req
│   ├── vars
│   └── whichopensslcnf
├── keys
└── server.conf

 

Generowanie kluczy

Przy pomocy naszego ulubionego edytora tekstowego (mcedit – yum install mc) edytujemy plik /etc/openvpn/easy-rsa/vars:

mcedit /etc/openvpn/easy-rsa/vars

zmieniamy wartość dla zmiennej KEY_DIR:

export KEY_DIR="/etc/openvpn/keys"

Generujemy klucze wykonując każde poniższe polecenie osobno:

cd /etc/openvpn/easy-rsa/
mv openssl-1.0.0.cnf openssl.cnf
. ./vars
./clean-all
./build-ca
./build-dh
./build-key-server klucz_serwer
./build-key klucz_klient1

Odpowiadamy na pytania o kraj, adres email i inne. Jeśli mamy problem ze zrozumieniem to w większości przypadków wystarczy wciskać ENTER i odpowiadać „y” :)

Po wszystkim struktura naszego katalogu powinna wyglądać tak:

/etc/openvpn/keys/
├── 01.pem
├── 02.pem
├── ca.crt
├── ca.key
├── dh1024.pem
├── index.txt
├── index.txt.attr
├── index.txt.attr.old
├── index.txt.old
├── klucz_klient1.crt
├── klucz_klient1.csr
├── klucz_klient1.key
├── klucz_serwer.crt
├── klucz_serwer.csr
├── klucz_serwer.key
├── serial
└── serial.old

 

Konfiguracja

Plik /etc/openvpn/server.conf:

port 1194
proto udp
dev tun
ca keys/ca.crt
cert keys/klucz_serwer.crt
key keys/klucz_serwer.key  # This file should be kept secret
dh keys/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3

 

PORADA!
Aby wyświetlić plik konfiguracyjny, pomijając komentarze zaczynające się od „#” i „;” wydajemy polecenie:

grep  -v ^# server.conf |grep -v ^\; |sed '/^$/d'

 

Uruchomienie usługi

service openvpn start

Sprawdzamy czy interfejs tun0 wstał:

# ifconfig
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00
          inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Jeśli wszystko jest OK, dodajemy openvpn do skryptów startowych:

chkconfig openvpn on

 

Udostępnianie Internetu

Jeśli posiadamy stały adres IP robimy SNAT:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -d 0.0.0.0/0 -j SNAT --to-source adres_ip_serwera

Jeśli posiadamy adres zmienny np. w ADSL:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE

Uruchamiamy przekazywanie pakietów:

echo "1" > /proc/sys/net/ipv4/ip_forward

Jeśli posiadasz własny firewall musisz go dostosować w swoim zakresie.

KONIEC konfiguracji serwera!

 

Konfiguracja klienta w systemie Windows 7

Program klienta sciągamy ze strony producenta: openvpn-2.2.2-install.exe

Klucze i certyfikaty ca.crt, klucz_klient1.crt, klucz_klient1.key umieszczamy w katalogu:
C:\Program Files\OpenVPN\config\, również w tym samym katalogu tworzymy plik client.ovpn:

client
dev tun
proto udp
remote ADRES_IP_SERWERA 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert klucz_klient1.crt
key klucz_klient1.key
ns-cert-type server
comp-lzo
verb 3

Uruchamiamy klienta OpenVPN GUI klikamy connect i cieszymy się własną siecią prywatną z szyfrowaniem i kompresją w locie :)

UWAGA!!
Klienta OpenVPN GUI w systemie Windows uruchamiamy zawsze „jako administrator„.

 

Klient w systemie LINUX

Konfiguracja przebiega prawie tak samo jak w przypadku systemu Windows.

Tworzymy plik client.conf w /etc/openvpn/:

client
dev tun
proto udp
remote ADRES_IP_SERWERA 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert klucz_klient1.crt
key klucz_klient1.key
ns-cert-type server
comp-lzo
verb 3

Klucze i certyfikaty ca.crt, klucz_klient1.crt, klucz_klient1.key umieszczamy w katalogu /etc/openvpn/.

service openvpn start

To wszystko, możemy wejść na strony typu myip.dk i sprawdzić czy w przeglądarce pojawia się adres IP serwera :)

 


<< Kliknij jeśli poradnik był przydatny!