Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

OpenVPN - VPN jednoduše (2)

V minulém článku jsme si OpenVPN nainstalovali a vytvořili jsme "obyčejný a nudný" tunel. V dnešním dílu se vrhneme na konfiguraci opravdové VPN.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

Od verze 2.0 (v současné době je k dispozici teprve beta, ale již velice stabilní) OpenVPN umí tzv. client/server mód. V tomto režimu se k jednomu serveru může připojit více klientů, a vytvořit tak opravdovou virtuální privátní síť.

Použijeme scénář z „klasické úlohy obchodních cestujících vybavených notebooky“™. V tomto případě máme domovskou síť, která nabízí určité služby. Potom máme obchodní cestující, kteří jsou vybaveni notebooky a jsou schopni se připojovat k Internetu. Pro tyto obchodníky potřebujeme zajistit plnohodnotný a bezpečný přístup do domovské sítě a možnost využívat její služby. A celé to musí být pokud možno co nejjednodušší a nejtransparen­tnější. V anglické terminologii se těmto obchodníkům říká „roadwarriors“ a tomuto scénaři „roadwarriors scenario“.

Budeme předpokládat, že domovská síť (v sídle firmy) je vybavena linuxovým serverem, který je z Internetu dostupný alespoň na jednom UDP portu. Tomuto počítači „přidělíme“ adresu vpnserver.exam­ple.com. Dále budeme předpokládat, že mobilní stanice jsou vybaveny MS Windows. Vše by samozřejmě fungovalo i s jakýmkoliv jiným OpenVPN podporovaným operačním systémem, ale současné statistiky použitých operačních systémů na noteboocích obchodních cestujících jsou přeci jenom nakloněny právě MS Windows…

V režimu klient/server je potřeba použít SSL a X.509 autorizaci, sdílený klíč je možno použít pouze jako doplněk (viz dále). Proto je potřeba mít k dispozici nějakou certifikační autoritu nebo alespoň nějaké platné certifikáty. Použití cizí certifikační autority má tu nevýhodu, že OpenVPN standardně přijme kohokoliv, kdo se prokáže platným certifikátem. Je tedy nutné nakonfigurovat filtr, který podle jména certifikátu rozhodne, zda daného uživatele povolí, či nikoliv. Problematiku certifikátů zde nebudu podrobně rozebírat, zájemce odkážu na článek Jak na OpenSSL. Budu předpokládat, že máte k dispozici certifkát certifikační autority i certifikáty a klíče jednotlivých uživatelů.

Nejprve trocha teorie. OpenVPN server poslouchá na daném UDP (případně i TCP) portu. Ve chvíli, kdy OpenVPN obdrží nějaký paket, pokusí se pomocí UDP spojení navázat SSL/TLS komunikaci a ověřit certifikát druhé strany oproti certifikátu zvolené certifikační autority. Zde je možno ověřit pomocí externího skriptu, zda jméno z certifikátu druhé strany povolit. Pomocí takto vybudovaného řídícího SSL/TLS spojení se obě strany dohodnou na klíčích a šifrách, které budou používat k zabezpečení přenášených dat. Na závěr OpenVPN server pošle klientovi konfigurační volby obsahující např. jeho IP adresu, nastavení směrování atp. Chování většiny těchto kroků je navíc možno ovlivnit pomocí externích skriptů.

Do jednoho UDP (resp. TCP) spojení potom OpenVPN „skládá“ vlastní přenášená data a vlastní řídící spojení. Pomocí tohoto řídícího spojení OpenVPN například v periodických intervalech obměňuje šifrovací klíče. Zajímavé je použití sdíleného klíče jako doplňku k SSL/TLS. Pokud při SSL/TLS režimu použijeme sdílený klíč, budou všechna data pro řídící spojení podepisována pomocí tohoto klíče. Díky tomu je možné nepodepsané nebo špatně podepsané pakety rovnou zahazovat. Tím se sníží účinnost DoS útoku, protože všechny výpočetně náročné operace při navazování spojení se provádějí pouze tehdy, pokud je paket správně podepsán. Stejně tak v případě útoku na knihovnu OpenSSL musí útočník nejprve získat tento tajný klíč, jinak se jeho zákeřná data k OpenSSL knihovně vůbec nedostanou.

Klient má tedy k dispozici virtuální síťové zařízení s přidělenou interní IP adresou z rozsahu VPN. Veškerá komunikace mezi klientem a serverem je šifrována a případně komprimována. Pomocí směrování je možné přes VPN směrovat jakýkoliv provoz včetně broadcastových packetů, které jsou nutné pro správné fungování některých služeb (Okolní počítače v MS Windows, CUPS, síťové hry a další).

Dost bylo teorie, začněmež s konfigurací. Na linuxový server nainstalujeme OpenVPN (viz minulý díl) a vytvoříme následující konfigurační soubor /etc/openvpn/vpn_ser­ver.conf:

mode server
tls-server
dev tap0
ifconfig 10.0.1.100 255.255.255.0
ifconfig-pool 10.0.1.1 10.0.1.90 255.255.255.0
duplicate-cn

ca /etc/openvpn/cacert.pem
cert /etc/openvpn/vpn.crt
key /etc/openvpn/vpn.key
dh /etc/openvpn/dh1024.pem

log-append /var/log/openvpn
status /var/run/openvpn/vpn.status 10

user openvpn
group openvpn
comp-lzo
verb 3

Postupně si popíšeme jednotlivé volby. Na prvním řádku je stěžejní volba mode server, která způsobí, že OpenVPN bude fungovat v režimu client/server. Na dalším řádku pomocí volby tls-server nastavujeme, že tento počítač bude vystupovat v rámci TLS spojení jako server. Pomocí volby dev tap0 upřesňujeme, jaké zařízení se má vytvořit. To je vhodné zejména pokud máme na jednom počítači více VPN.

Další dva řádky určují, jakou IP adresu a netmasku bude mít vlastní server a jaké IP adresy a netmasky má přidělovat klientům. Server bude mít tedy adresu 10.0.1.100 a klienti budou dostávat adresy v rozsahu 10.0.1.1 až 10.0.1.90. Volba duplicate-cn povoluje současné přihlášení více klientů se stejným certifikátem.

V dalším bloku jsou uvedeny konfigurační direktivy pro SSL/TLS. Jedná se postupně o tyto soubory: certifikát certifikační autority, certifikát serveru, klíč serveru a parametry pro Diffie-Hellman protokol. Soubor s parametry pro Diffie-Hellman je možno vytvořit pomocí příkazu:
openssl dhparam -out dh1024.pem 1024.

Potom jsou uvedeny parametry logování (log-append) a nastavení jména souboru, kam OpenVPN pravidelně ukládá svůj stav (status).

Na závěr jsou uvedeny volby pro změnu efektivních práv, povolení komprese a stupeň ukecanosti démona. Nyní můžeme VPN spustit buď pomocí spouštěcího skriptu, nebo příkazem openvpn –config /etc/openvpn/vpn­.conf. Pokud nyní zadáme příkaz ifconfig, uvidíme výstup podobný tomuto:

tap0  Link encap:Ethernet  HWaddr 00:FF:C5:65:F0:76
      inet addr:10.0.1.100  Bcast:10.0.1.255  Mask:255.255.255.0
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:105554 errors:0 dropped:0 overruns:0 frame:0
      TX packets:174987 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:100
      RX bytes:10300276 (9.8 Mb)  TX bytes:180523332 (172.1 Mb) 

Tím je počáteční konfigurace serveru dokončena. Doporučuji si pročíst manuálovou stránku openvpn a rozšířit konfiguraci podle potřeby. Stručně zmíním některé zajímavé volby:

  • push – pošle klientovi konfigurační parametry, například směrovací záznam, nějaký DHCP parametr atd.
  • client-config-dir – Cesta k adresáři, kam je možné ukládat konfigurace pro každého klienta zvlášť. Pokud se v tomto adresáři najde soubor se jménem stejným, jako je Common Name certifikátu uživatele, pošle se pomocí push klientovi jeho obsah.
  • client-to-client – Pokud chtějí dva klienti komunikovat mezi sebou, prochází jejich pakety směrovacím mechanismem kernelu. Tato volba způsobí, že se pakety „otočí“ ihned v OpenVPN démonovi (klienti nikdy nekomunikují přímo, vždy přes server).
  • max-clients – Maximální počet současně připojených klientů

Především posílání směrovacích záznamů je praktická věc. Tyto záznamy se při ukončení spojení automaticky zruší (v případě změny default route se vrátí původní hodnota) a navíc se nemusíme starat o „drobné“ rozdíly v syntaxi příkazů pro nastavování směrování na jednotlivých klientských systémech.

Konfigurace klienta je obdobně jednoduchá. Nainstalujeme OpenVPN (viz minulý díl) a použijeme následující konfigurační soubor (na Windows například C:\Program Files\OpenVPN\con­fig\vpn_klien­t.ovpn):

remote vpnserver.example.com
tls-client
dev tap
pull

mute 10
ca cacert.pem
cert klient.cert
key klient.key

comp-lzo
verb 3

Na prvním řádku je uvedena adresa serveru, na druhém SSL/TLS režim. Dále je uveden typ zařízení, které se má použít. Pokud chcete na Windows používat více VPN najednou, je potřeba vytvořit více virtuálních zařízení a pomocí volby dev-node určit, které se má použít. Všechny dostupné adaptéry vypíše příkaz openvpn –show-adapters.

Důležitý je parametr pull, který povoluje stažení konfigurace ze serveru (pomocí volby push). Tím umožníme centrální správu nastavení jednotlivých klientů. Dále jsou ještě uvedeny názvy souborů s klíčem a certifikáty, komprese a ukecanost. Další možné volby si jistě laskavý čtenář nastuduje sám z doporučené literatury (man openvpn).

Pokud se soubor nachází v adresáři config a má příponu ovpn, spustí se automaticky při startu služby OpenVPN. Za lepší variantu považuji použít GUI klienta, který se usadí v systémové trayi a umožňuje pohodlné ovládání nalezených konfiguračních souborů. OpenVPN lze samozřejmě spouštět i „klasicky“, například z různých skriptů apod.

Libovolným způsobem spustíme OpenVPN, a pokud všechno proběhlo správně, dostane náš virtuální síťový adaptér IP adresu z rozsahu VPN:

Adaptér sítě Ethernet OpenVPN virtual tap interface:

      Přípona DNS podle připojení . . . :
      Adresa IP . . . . . . . . . . . . : 10.0.1.1
      Maska podsítě . . . . . . . . . . : 255.255.255.0
      Výchozí brána . . . . . . . . . . :

Nyní můžeme zkusit ping:

davame_internetu_obsah
       
C:\>ping 10.0.1.100

Příkaz PING na 10.0.1.100 s délkou 32 bajtů:

Odpověď od 10.0.1.100: bajty=32 čas=6ms TTL=64
.....

I traceroute:

C:\>tracert 10.0.1.100

Výpis trasy k 10.0.1.100 [10.0.1.100]
s nejvýše 30 směrováními:
    1    5 ms    2 ms    2 ms  10.0.1.100 [10.0.1.100]
Trasování bylo dokončeno.

Tímto optimistickým výstupem bych článek ukončil a popřál vám mnoho zdaru. Happy VPNing!

Školení: Linux – Firemní server

Na třídenním školení se naučíte nainstalovat a spravovat kompletní linuxový server do Vaší firmy se všemi základními službami, které potřebujete pro provoz Vaší sítě, firemních emailů a webových stránek.

Podrobnější informace a přihláška

Ohodnoťte jako ve škole:
Průměrná známka 3,10

Přehled názorů

Statistika notebooku...
Navi 18. 10. 2004 02:29
Nový
├ 
Re: Statistika notebooku...
P 18. 10. 2004 07:31
Nový
│
└ 
Re: Statistika notebooku...
Mirek 18. 10. 2004 08:16
Nový
│
 
└ 
Re: Statistika notebooku...
P 18. 10. 2004 08:26
Nový
│
 
 
├ 
Re: Statistika notebooku...
Petr 18. 10. 2004 08:39
Nový
│
 
 
├ 
Re: Statistika notebooku...
Jakub Moc 18. 10. 2004 08:49
Nový
│
 
 
│
└ 
Re: Statistika notebooku...
P 18. 10. 2004 09:28
Nový
│
 
 
│
 
├ 
Re: Statistika notebooku...
Tygr 18. 10. 2004 10:10
Nový
│
 
 
│
 
│
└ 
Re: Statistika notebooku...
P 18. 10. 2004 10:44
Nový
│
 
 
│
 
│
 
└ 
OT
Jakub Moc 18. 10. 2004 11:00
Nový
│
 
 
│
 
├ 
Re: Statistika notebooku...
Jakub Moc 18. 10. 2004 10:26
Nový
│
 
 
│
 
└ 
Re: Statistika notebooku...
zz 19. 10. 2004 12:52
Nový
│
 
 
│
 
 
└ 
Re: Statistika notebooku...
Zcela nenormalni user 19. 10. 2004 14:56
Nový
│
 
 
│
 
 
 
└ 
Re: Statistika notebooku...
Bubak 19. 10. 2004 18:31
Nový
│
 
 
│
 
 
 
 
└ 
Re: Statistika notebooku...
m23cz 21. 4. 2005 08:27
Nový
│
 
 
└ 
Re: Statistika notebooku...
zz 19. 10. 2004 12:30
Nový
│
 
 
 
└ 
Re: Statistika notebooku...
Bubak 19. 10. 2004 18:34
Nový
└ 
Re: Statistika notebooku...
Cohen 19. 10. 2004 21:01
Nový
statistiky
P 18. 10. 2004 07:21
Nový
bez titulku
x 18. 10. 2004 08:02
Nový
├ 
Re:
kmarty 18. 10. 2004 08:24
Nový
│
├ 
Re:
P 18. 10. 2004 09:05
Nový
│
├ 
Re:
Daniel 18. 10. 2004 13:45
Nový
│
└ 
Re: Re:
zelvick 29. 10. 2006 13:24
Nový
└ 
Re:
P 18. 10. 2004 08:53
Nový
OT: volant
Zdeněk Štěpánek 18. 10. 2004 08:22
Nový
└ 
Re: OT: volant
P 18. 10. 2004 10:28
Nový
 
└ 
Re: OT: volant
Cohen 19. 10. 2004 21:14
Nový
Abychom to nezamluvili
Tomáš Šimek 18. 10. 2004 09:28
Nový
└ 
Re: Abychom to nezamluvili
P 18. 10. 2004 09:41
Nový
 
└ 
Re: Abychom to nezamluvili
zLOST 18. 10. 2004 09:54
Nový
 
 
└ 
Re: Abychom to nezamluvili
P 18. 10. 2004 10:17
Nový
 
 
 
└ 
Re: Abychom to nezamluvili
RedRicK 18. 10. 2004 11:31
Nový
failed to obtain options consistency info from pee
P 18. 10. 2004 09:30
Nový
├ 
Re: failed to obtain options consistency info from
Jerry 18. 10. 2004 10:11
Nový
│
└ 
Re: failed to obtain options consistency info from
P 18. 10. 2004 10:31
Nový
└ 
Re: failed to obtain options consistency info from
Tygr 18. 10. 2004 10:14
Nový
linux server vs cisco vpn koncentrator
goose 18. 10. 2004 10:10
Nový
├ 
Re: linux server vs cisco vpn koncentrator
P 18. 10. 2004 10:31
Nový
│
├ 
Re: linux server vs cisco vpn koncentrator
Jerry 18. 10. 2004 10:44
Nový
│
│
└ 
Re: linux server vs cisco vpn koncentrator
Jerry 18. 10. 2004 10:54
Nový
│
│
 
└ 
Re: linux server vs cisco vpn koncentrator
goose 18. 10. 2004 11:00
Nový
│
│
 
 
└ 
Re: linux server vs cisco vpn koncentrator
Jerry 18. 10. 2004 11:14
Nový
│
│
 
 
 
└ 
Re: linux server vs cisco vpn koncentrator
goose 18. 10. 2004 11:47
Nový
│
├ 
Re: linux server vs cisco vpn koncentrator
Radek Hladik 18. 10. 2004 12:43
Nový
│
└ 
Re: linux server vs cisco vpn koncentrator
fanyy-b 28. 2. 2007 07:23
Nový
├ 
Re: linux server vs cisco vpn koncentrator
Radek Hladik 18. 10. 2004 12:38
Nový
│
└ 
Re: linux server vs cisco vpn koncentrator
vanto 18. 10. 2004 15:28
Nový
└ 
Re: linux server vs cisco vpn koncentrator
Radek Hladik 18. 10. 2004 12:48
Nový
UDP a TCP
MaKr 18. 10. 2004 12:00
Nový
└ 
Re: UDP a TCP
Radek Hladik 18. 10. 2004 12:50
Nový
CISCO VPN Klient
Dusan 18. 10. 2004 13:22
Nový
├ 
Re: CISCO VPN Klient
Radek Hladik 18. 10. 2004 13:24
Nový
└ 
Re: CISCO VPN Klient
zz 19. 10. 2004 12:51
Nový
bez titulku
Kocour_easy 18. 10. 2004 21:56
Nový
└ 
Re:
Radek Hladik 18. 10. 2004 22:47
Nový
HMAC authentication failed
Tomáš Lavický 19. 10. 2004 11:01
Nový
└ 
Re: HMAC authentication failed
anonymní uživatel 5. 1. 2006 14:19
Nový
client-to-client help!
GunXter 19. 10. 2004 13:21
Nový
10 Mbit klient
Tomáš Otrusiník 19. 10. 2004 16:01
Nový
└ 
Re: 10 Mbit klient
Radek Hladik 19. 10. 2004 23:06
Nový
 
└ 
Re: 10 Mbit klient
Ice 25. 10. 2004 10:51
Nový
Nechápu ten gonfig
Marek 19. 10. 2004 16:27
Nový
└ 
Re: Nechápu ten gonfig
Jerry (bez trojky) 19. 10. 2004 16:45
Nový
MTU
Cohen 19. 10. 2004 21:26
Nový
└ 
Re: MTU
cELo 20. 10. 2004 16:13
Nový
bez titulku
anonymní uživatel 20. 10. 2004 21:22
Nový
certifikaty
Martin 22. 10. 2004 10:28
Nový
└ 
Re: certifikaty
Jerry 25. 10. 2004 16:55
Nový
Problem s vytvorenim tunelu
Jan Pekar 23. 10. 2004 11:13
Nový
routing
cELo 27. 10. 2004 14:07
Nový
Problem s routovanim - nefunguje PING apod.
Radek Holecek 30. 10. 2004 20:09
Nový
└ 
Re: Problem s routovanim - nefunguje PING apod.
Brnak 31. 10. 2004 01:15
Nový
instalace a LZO komprese
ondra 16. 11. 2004 21:55
Nový
└ 
Re: instalace a LZO komprese
posejdon 18. 11. 2004 19:50
Nový
firewall
lachtan 25. 11. 2004 20:49
Nový
└ 
Re: firewall
Kadlecek 12. 12. 2004 22:31
Nový
problem s routovanim(?)
aTan 16. 2. 2005 20:45
Nový
└ 
Re: problem s routovanim(?)
JiMo 23. 3. 2005 16:03
Nový
 
└ 
Re: problem s routovanim(?)
anonymní uživatel 17. 5. 2005 14:17
Nový
 
 
└ 
Re: problem s routovanim(?)
Paulie 19. 5. 2005 10:44
Nový
 
 
 
└ 
Re: problem s routovanim(?)
perry 10. 1. 2006 00:54
Nový
Prosim aspon odkaz na konfiguraci klienta pod linux
Krysa 28. 5. 2005 16:40
Nový
└ 
Re: Prosim aspon odkaz na konfiguraci klienta pod linux
vd 4. 10. 2006 14:39
Nový
tls-error
fan 9. 8. 2005 02:22
Nový
└ 
Re: tls-error
Petr Baláš 8. 10. 2005 14:10
Nový
pevna ip pro klienty
kosmi 23. 11. 2005 12:27
Nový
problem s gateway na strane klienta
regisss 8. 11. 2006 15:07
Nový
└ 
Re: problem s gateway na strane klienta
Fanda 9. 12. 2006 17:08
Nový
 
└ 
Re: problem s gateway na strane klienta
JardaP 9. 12. 2006 18:08
Nový
Applet
Fanda 9. 12. 2006 22:39
Nový
└ 
Re: Applet
pavel 31. 1. 2007 23:15
Nový
Prosím poraďte s těmi ssl nastaveními
Jakub 20. 12. 2006 11:33
Nový
└ 
Re: Prosím poraďte s těmi ssl nastaveními
Jakub 20. 12. 2006 14:11
Nový
 
└ 
Re: Prosím poraďte s těmi ssl nastaveními
anonymní uživatel 1. 1. 2007 20:17
Nový
 
 
└ 
Re: Prosím poraďte s těmi ssl nastaveními
matess 22. 3. 2007 13:44
Nový
OpenVPN+VISTA
Hippo 28. 3. 2007 10:34
Nový
├ 
Re: OpenVPN+VISTA
anonymní uživatel 10. 4. 2007 20:14
Nový
│
└ 
Re: OpenVPN+VISTA
FearFac 9. 7. 2007 01:42
Nový
└ 
Re: OpenVPN+VISTA
torfin 30. 11. 2007 11:50
Nový
Open VPN na dvou paralelních strojích
making 26. 7. 2007 10:07
Nový
└ 
Re: Open VPN na dvou paralelních strojích
Tomáš Lavický 6. 8. 2007 15:25
Nový
 
└ 
Re: Open VPN na dvou paralelních strojích
making 6. 8. 2007 21:08
Nový
Chyba ve vytváření tunelu
xakru 9. 11. 2007 08:22
Nový
└ 
Re: Chyba ve vytváření tunelu
321Peto 17. 2. 2008 17:00
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem