I kdyz je mnohem castejsi pouziti X.509 SSL certifikatu a take vetsinou vyhodnejsi, ma i sdileny klic sve duvody. Pokud potrebujeme propojit pouze dve zarizeni, je zbytecne generovat a podepisovat cetrifikaty. Ja pouzivam OpenVPN se sdilenym klicem na propojeni dvou routeru pres Internet.
Podle oficialniho navodu teoreticky staci 3 radkovy konfiguracni soubor. Je vsak lepsi ho trochu rozsirit a upravit.
Vetsina distribuci ma OpenVPN v balickach. Pro Ubuntu staci nainstalovat jeden balicek:
sudo apt-get install openvpn
Po instalaci prejdeme do adresare /etc/openvpn ve kterem budeme nasledne vytvaret veskere nastaveni.
Jako prvni musime vygenerovat sdileny klic:
openvpn --genkey --secret static.key
Na manipulaci s klicem musime davat velky pozor. Kdokoliv ma klic, muze se pripojit!
Jak uz zaznelo v minulem dile, OpenVPN muze soucasne mit spusteno vice serveru. OpenVPN demon pri svem spusteni hleda vsechny konfiguracni soubory s priponou conf v adresari /etc/openvpn a spusti je. Vytvorime si tedy soubor nazaveny treba /etc/openvpn/server_ptp_static.conf s nasledujicim obsahem:
port 7777 proto udp dev tap77 ifconfig 192.168.77.1 255.255.255.252 secret static.key log-append /var/log/openvpn_ptp_static status /var/run/vpn_ptp_static.status 10 user nobody group nogroup keepalive 10 120 comp-lzo verb 3 persist-key persist-tun # VOLITELNA CAST: #script-security 2 #up /etc/openvpn/ptp_static.sh #down /etc/openvpn/ptp_static_DOWN.sh
Konfiguracni volby jsou castecne samovysvetlujici, takze jen jednoduchy popis. VPN tunel bude nad UDP protokolem na portu 7777, pujde o smerovany Etherentovy tunel TAP. Po vytvoreni tunelu se vytovri virtualni sitova karta tap77. Pokud uvedeme pouze „dev tap“, OpenVPN automaticky zacne cislovat od nuly (tap0), pripadne pokud uz tap0 existuje, pouzije cislo o jedno vyssi atd.
Parametr ifconfig nastavuje IP adresu a masku lokalni casti tunelu. Na druhe strane musi byt jina IP! Maska jde pouzit klidne /24 (255.255.255.0), ale je to zbytecne plytvani neverejenymi adresami 😉 – proste je to nelogicke, takze je vhodne pouzit odpovidajici masku a to /30 (255.255.255.252).
Logovat se bude na konec uvedeneho souboru a stavovy soubor bude v uvedene ceste. VPN demon bude spusteny pod uzivatelem a skupinou nobody nogroup.
Keepalive zajisti „pingani“ vpn tunelem pro udrzeni spojeni. Ping se posle kazdych 10 sekund. Timeout je nastaveny na 120 sekund, po teto dobe se OpenVPN pokusi tunel restartovat.
Comp-lzo zapne LZO kompresi, sice vic zatizi cpu (nic propastneho, ale snizi objem prenasenych dat). Verb je ukacenost logu. Pro bezne pouziti doporuciji verb nastavit na 3, pro ladeni na hodnotu 5 – nejvetsi a nejukecanejsi logy.
Protoze OpenVPN nechame bezet pod uzivatelem nobody, nebude mit po pripadnem restartu (napriklad kvuli keepalive) uz prava ke klici a k vytvoreni sitove karty. Proto persist-key a persist-tun.
Posledni cast script-security a up je nepovinna a nemusi tu vubec byt. Slouzi ke spusteni programu po navazeni (pripadne ukonceni) VPN spojeni. Up skript muze napriklad pridat staticka routovaci pravidla. Pomoci script-security nastavime uroven zabezpeceni. 0 zakaze spusteni vsech externich programu, 1 je default a povoli vestavene prikazy jako ifconfig, route atd. 2 navic povoli spustit uzivatelem definovane skripty a 3 povoli predavat hesla pomoci promenych prostredi – nejmene bezpecne a nedoporucovane. Vse je popsano v manualu.
Druha strana tunelu bude mit podobne nastaveni:
#remote server.example.net remote 10.0.0.1 port 7777 proto udp dev tap0 mute 10 keepalive 10 120 ifconfig 192.168.77.2 255.255.255.252 secret static.key comp-lzo verb 3
Klient na rozdil od serveru musi uvest volbu remote. Jedna se o adresu serveru. Muze byt uvedena domena, nebo IP adresa. Dulezite je upravit volbu ifconfig, na obou stranach nesmi byt stejne IP (ale samozrejme musi patrit do stejne site)! Volba mute neni dulezita, stara se pouze o logovani a klidne ji muzeme vypustit. Do logu zapisuje maximalne 10 opakujicich se udalosti.
Mame nastaveno a muzeme se pustit do testovani a spusteni. Poprve doporucuji spustit OpenVPN na popredi, veskery vypis se sype na standardni vystup, takze nemusime procitat log. Nejdriv prejdeme do adresare /etc/openvpn. Sice to neni nezbytne, ale je to lepsi. Uz jen kvuli moznym relativnim cestam k certifikatum. A pote spustime OpenVPN demona s parametrem –config.
$ cd /etc/openvpn # openvpn --config server_ptp_static.conf
A ihned vidime vystup. Po otestovani staci spustit pomoci init skriptu. To se muze v ruznych distribusich lisit:
# service openvn restart # funguje na ubuntu # /etc/init.d/openvpn restart # univarzalni pro vetsinu distribuci vcetne OpenWrt
Pokud vse probehelo spravne, uvidime novou sitovou kartu s nastavenymi adresami a pingneme se na druhou stranu tunelu (ifconfig adresa z configu protilehle strany):
$ ifconfig ... tap77 Link encap:Ethernet HWadr 2e:dc:5f:04:fd:87 inet adr:192.168.77.1 Všesměr:192.168.77.3 Maska:255.255.255.252 AKTIVOVÁNO VŠESMĚROVÉ_VYSÍLÁNÍ BĚŽÍ MULTICAST MTU:1500 Metrika:1 RX packets:27230 errors:0 dropped:0 overruns:0 frame:0 TX packets:29843 errors:0 dropped:0 overruns:0 carrier:0 kolizí:0 délka odchozí fronty:100 Přijato bajtů: 10944738 (10.9 MB) Odesláno bajtů: 2652670 (2.6 MB) $ ip addr show ... 48: tap77: <broadcast,multicast,up,lower_up> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100 link/ether 2e:dc:5f:04:fd:87 brd ff:ff:ff:ff:ff:ff inet 192.168.77.1/30 brd 192.168.77.3 scope global tap77</broadcast,multicast,up,lower_up>
Kompletni manual je na webu OpenVPN. Urcite je dobre se do nej podivat. Minimalne kvuli lepsimu pochopeni uvedenych konfiguracnich voleb
A to je vse. Priste si ukazeme vydavani certifikatu a predavani nastaveni ze serveru klientum.
Dalsi clanky o VPN.