OpenVPN #2: Vysvetleni konfigurace a PtP spojeni se sdilenym klicem

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.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *