Hlavní navigace

OpenVPN - VPN jednoduše

V tomto článku si popíšeme projekt OpenVPN, pomocí kterého lze velice snadno vytvářet všelijaké VPN (Virtual Private Network).

Tweetni to Odměnte autora  Jak to funguje?

Při tvorbě VPN máme v současné době několik možností. Můžeme použít nějakou proprietární VPN (například od firmy Cisco), můžeme použít IPSec (ať už přímo z kernelu 2.6, nebo třeba FreeS/WAN), nebo některou otevřenou VPN, kteránepoužívá IP­Sec.

Proprietární řešení jsou většinou poměrně nákladná a hodí se spíše pro větší nasazení. IPSec je naproti tomu výrazně levnější, ale jeho konfigurace není jednoduchá a má problémy při použití NATu. Zájemce lze odkázat na nepřeberné množství článků.

Projekt OpenVPN patří do skupiny opensource VPN, které nepoužívají IPSec. Místo toho je použito SSL/TLS. Mezi jeho hlavní přednosti patří:

  • Podpora mnoha platforem – Linux, Solaris, OpenBSD, FreeBSD, NetBSD, Mac OS X a Windows 2000/XP.
  • Celý program běží v user mode, a není tedy potřeba patchovat kernel (za předpokladu, že máte zapnutou podporu pro TUN/TAP zařízení)
  • Podpora režimů 1:1 (tunel) nebo N:1 (režim client/server)
  • Možnost použití sdíleného klíče a/nebo SSL certifikátů
  • Jednoduchá konfigurace a perfektní logy
  • Bezpečnost
  • Vysoká odolnost při použití na nekvalitních linkách
  • Volitelná komprese
  • Podpora HTTP a SOCKS proxy. To je výhodné především pro RoadWarrior režim, klient se tak může připojit téměř odkudkoliv
  • a mnoho dalšího…

Co se bezpečnosti týče, umí toho OpenVPN opravdu hodně. Podporovány jsou režimy se sdíleným klíčem nebo použití SSL/TLS s X.509 certi­fikáty. Pro každý směr komunikace je možno použít jiný klíč. Je také možno nastavit velikost replay-okna, které snižuje možnost prolomení pomocí opětovného přehrání posílaných dat. Samozřejmostí je použití libovolných šifrovacích algoritmů, které podporuje použitá SSL knihovna.

OpenVPN standardně používá protokol UDP, ale lze použít i TCP (včetně zmiňovaného použití HTTP a SOCKS proxy). Veškerá komunikace probíhá na jediném portu, a lze tedy snadno nakonfigurovat firewall, aby propouštěl pouze pakety na tomto portu. Stejně tak je možné, aby pakety procházely různými NATy a maškarádami.

Celý OpenVPN démon běží v uživatelském režimu a komunikuje prostřednictvím TAP nebo TUN rozhraní. Takto vytvořená rozhraní všechna přijatá data předávají přímo uživatelskému procesu, který tak může vystupovat v roli síťové karty. Tím odpadá nutnost znovu překládat kernel (podpora TUN a TAP zařízení je ve většině distribucí), a zároveň se tak snižuje závislost na některé platformě.

Instalace OpenVPN je velice jednoduchá. Ze stránek projektu si stáhneme tgz balíček, rozbalíme a použijeme trojici ./configure, make a make install. Pokud chceme používat kompresi, musíme mít nainstalovanou knihovnu LZO. Součástí balíčku je také spouštěcí script sample-scripts/openvpn­.init, který můžeme nahrát do /etc/init.d a pomocí chkconfig –add openvpnpřidat. Tento skript potom při startu projde adresář /etc/openvpn a pro všechny nalezené soubory s příponou conf spustí OpenVPN démona. Pro provoz OpenVPN je vhodné založit vlastního uživatele. OpenVPN je možné i chrootovat.

Stručně zmíním i instalaci na Windows. Ta je také velice přímočará, stačí stáhnout správný balíček (u verze 2.0beta doporučuji beta7, novější mi občas zlobily) a spustit. Instalace přidá Virtual TAP síťové zařízení (doporučuji vhodně přejmenovat) a přidá službu OpenVPN. Tím je instalace skončena a po vytvoření konfiguračního souboru můžete vesele OpenVPNkovat :) Volitelně lze místo Windows služby také nainstalovat GUI prográmek OpenVPN GUI, který se zabydlí v trayi, a uživatel má tak lepší přehled nad všemi bežícími i neběžícími VPN.

Nejprve si ukážeme vytvoření jednoduchého tunelu mezi dvěma linuxovými stroji s použitím sdíleného klíče. Jedná se o podobný scénář jako v tomto článku. Máme dva linuxové stroje (s obligátními IP 1.2.3.4 a 5.6.7.8), mezi kterými normálně funguje IP komunikace. Mezi těmito stroji chceme vytvořit šifrovaný a komprimovaný tunel se sdíleným klíčem. Tunel by dokonce nemusel být ani šifrovaný.

Nejprve si pomocí openvpn –genkey –secret /etc/openvpn/se­cret.key vygenerujeme sdílený klíč. Ten potom nějakou bezpečnou cestou dopravíme i na druhý počítač. Na počítači 5.6.7.8 potom vytvoříme následující konfigurační soubor /etc/openvpn/vpn­.conf:

remote 1.2.3.4
ifconfig 10.0.0.2 255.255.255.0
port 5001
proto udp
dev tap0
secret /etc/openvpn/secret.key
ping 10
comp-lzo
verb 5
mute 10
user openvpn
group openvpn

Tento konfigurační soubor pošleme (nejlépe opět bezpečnou cestou) na počítač 1.2.3.4, změníme v něm řádky remote aifconfig

remote 5.6.7.8
ifconfig 10.0.0.1 255.255.255.0

a na obou počítačích spustíme /etc/rc.d/init­.d/openvpn start. V systémech se nám objeví další zařízení tap0 se zvolenými IP adresami. Veškerá komunikace mezi nimi je potom transparentně šifrována a/nebo komprimována. Ano, opravdu je to takhle jednoduché :)

Přestože je nastavení zřejmé a každý si za domácí úlohu jistě vše rád odvodí, stručně popíšu jednotlivé parametry. Parametr remote určuje druhou stranu VPN, ifconfig adresu a netmasku virtuálního síťového rozhraní. Port a proto snad opravdu nepotřebují komentář. Parametr dev určuje typ a číslo virtuálního rozhraní,

secret jméno souboru se sdíleným klíčem. Tento soubor by měl mít práva nastavená tak, aby k němu mohl pouze uživatel, pod kterým OpenVPN běží. Volba ping určuje intervaly keep-alive pingů, comp-lzo povoluje kompresi a parametry verb a mute upřesňují logování. A konečně user a group

určují, pod jakými efektivními právy má démon běžet. Bližší popis parametrů najdete v dokumentaci.

Do takto vytvořeného tunelu můžeme pomocí routování přesměrovat libovolný síťový provoz. OpenVPN automaticky obnovuje spadlé spojení, takže není potřeba po výpadku linky vše znova restartovat. Při zkoušení OpenVPN vykazovala velice slušné výsledky. Při vytvoření VPN mezi dvěma počítači na 100MBit LAN přenosová rychlost dosahovala téměř stejných hodnot jako bez použítí VPN. Také všechny služby fungovaly naprosto bez problémů (včetně MS sdílení souborů, které je na podobné síťové čarování poměrně háklivé).

Podobný tunel používám na spojení s počítačem v hostingovém centru a i zde OpenVPN dosahuje skvělých výsledků. Díky zapnuté kompresi lze při přenosu textových souborů (HTML, PHP…) dosáhnout i rychlostí rovnajících se trojnásobku kapacity linky. Naopak při interaktivním přístupu (SSH, VoIP) jsem nepozoroval žádné prodlevy.

V příštím dílu si popíšeme konfiguraci v režimu client/server s připojováním RoadWarrior klientů.

Ohodnoťte jako ve škole:
Průměrná známka 2,66
Tweetni to Odměnte autora  Jak to funguje?

Školení: Mobile - web, aplikace nebo responsivní design?

DW - Školení použitelnosti
  • Proč vůbec řešit uživatele mobilních zařízení.
  • Jak přistupovat k návrhu a správě obsahu pro mobilní digitální produkty.
  • Pochopíte, že mobile je příležitost a ne omezení.

Chcete pro svůj byznys využit mobilní web, responsivní web nebo mobilní aplikaci? Pomůžeme vám se správně rozhodnout!

Další informace o školení Mobile - web, aplikace nebo responsivní design?

       

Přehled názorů

doporucuji
hrochoun 11. 10. 2004 02:20
Nový
jednoduche, genialni
Jiri Dobry 11. 10. 2004 02:29
Nový
skvely soft
lubos 11. 10. 2004 06:12
Nový
Proprietarne VPN(???)
Peter Bodnar 11. 10. 2004 08:42
Nový
No, nevim
Tomáš Šimek 11. 10. 2004 08:43
Nový
└ 
Re: No, nevim
Nudzo 11. 10. 2004 09:59
Nový
 
└ 
Re: No, nevim
pha 11. 10. 2004 10:38
Nový
Open VPN a FreeSwan zároveň ?
Hoppik 11. 10. 2004 09:22
Nový
└ 
Re: Open VPN a FreeSwan zároveň ?
Zdenek Kaminski 11. 10. 2004 10:04
Nový
taky chvala..
Zdeněk Štěpánek 11. 10. 2004 09:37
Nový
bez titulku
Zdenek Kaminski 11. 10. 2004 10:09
Nový
└ 
Re:
Zdeněk Štěpánek 12. 10. 2004 08:40
Nový
OpenVPN intro v Gentoo Weekly Newsletter
iki 11. 10. 2004 10:34
Nový
NAT a maškaráda ???
Franta 11. 10. 2004 15:06
Nový
├ 
Re: NAT a maškaráda ???
JirkaS 11. 10. 2004 15:36
Nový
└ 
Re: NAT a maškaráda ???
Radek Hladik 11. 10. 2004 17:31
Nový
 
└ 
maskarada je o dost jina nez snat
anonymní uživatel 18. 10. 2004 14:58
Nový
Jedna IP pro tunel i ethernet?
Jiri Svoboda 11. 10. 2004 15:56
Nový
└ 
Re: Jedna IP pro tunel i ethernet?
Radek Hladik 11. 10. 2004 17:33
Nový
 
├ 
Re: Jedna IP pro tunel i ethernet?
Frodo 11. 10. 2004 22:48
Nový
 
│
└ 
Re: Jedna IP pro tunel i ethernet?
anonymní uživatel 18. 10. 2004 15:04
Nový
 
└ 
Re: Jedna IP pro tunel i ethernet?
Jiri Svoboda 12. 10. 2004 09:23
Nový
 
 
└ 
Re: Jedna IP pro tunel i ethernet?
Radek Hladik 12. 10. 2004 10:44
Nový
 
 
 
└ 
Re: Jedna IP pro tunel i ethernet?
Jiri Svoboda 12. 10. 2004 15:14
Nový
PPTP + OpenVPN ?
Modrak 11. 10. 2004 22:49
Nový
├ 
Re: PPTP + OpenVPN ?
rsaf 12. 10. 2004 07:59
Nový
└ 
Re: PPTP + OpenVPN ?
Zvědavý Bill 12. 10. 2004 09:12
Nový
 
├ 
Re: PPTP + OpenVPN ?
Radek Hladik 12. 10. 2004 10:36
Nový
 
│
└ 
Re: PPTP + OpenVPN ?
Zvědavý Bill 12. 10. 2004 16:13
Nový
 
│
 
└ 
Re: PPTP + OpenVPN ?
Avatar Chajboudi 12. 10. 2004 16:52
Nový
 
└ 
Re: PPTP + OpenVPN ?
Jiri Dobry 12. 10. 2004 10:46
Nový
 
 
└ 
Re: PPTP + OpenVPN ?
BK 12. 10. 2004 18:36
Nový
 
 
 
└ 
Re: PPTP + OpenVPN ?
Radek Hladik 12. 10. 2004 22:09
Nový
 
 
 
 
└ 
Re: PPTP + OpenVPN ?
BK 13. 10. 2004 15:32
Nový
VPN z Linuxu na Win
peter 12. 10. 2004 10:08
Nový
└ 
Re: VPN z Linuxu na Win
Jiri N. 13. 10. 2004 17:02
Nový
 
└ 
Re: VPN z Linuxu na Win
peter 18. 10. 2004 15:08
Nový
Verze klienta
Denta 12. 10. 2004 10:49
Nový
RoadWarrior
junix 12. 10. 2004 13:33
Nový
└ 
Re: RoadWarrior
anonymní uživatel 22. 5. 2005 06:47
Nový
SSL certifikaty
Milos 13. 10. 2004 06:45
Nový
├ 
Re: SSL certifikaty
Radek Hladik 13. 10. 2004 13:34
Nový
└ 
Re: SSL certifikaty
zelial 13. 10. 2004 16:55
Nový
Co spravit, ak je stroj za viacerymi FW?
miro 13. 10. 2004 10:49
Nový
├ 
Re: Co spravit, ak je stroj za viacerymi FW?
Radek Hladik 13. 10. 2004 13:41
Nový
│
├ 
Re: Co spravit, ak je stroj za viacerymi FW?
Radek 13. 10. 2004 16:23
Nový
│
│
└ 
Re: Co spravit, ak je stroj za viacerymi FW?
Učitel, co rád čte roota 13. 10. 2004 16:29
Nový
│
├ 
Re: Co spravit, ak je stroj za viacerymi FW?
zelial 13. 10. 2004 17:02
Nový
│
└ 
Re: Co spravit, ak je stroj za viacerymi FW?
Pihhan 13. 10. 2004 23:08
Nový
└ 
Re: Co spravit, ak je stroj za viacerymi FW?
tar 15. 10. 2004 20:48
Nový
Nenajde cestu k DHparm souboru i když je správná
Mira 15. 11. 2004 13:32
Nový
Zkuste Hamachi...
jirka007CZ 4. 5. 2006 21:44
Nový
├ 
Re: Zkuste Hamachi...
p.poku 15. 1. 2007 20:41
Nový
├ 
Re: Zkuste Hamachi...
Xjmeno363 25. 8. 2010 09:59
Nový
└ 
Re: Zkuste Hamachi...
Amavis 18. 7. 2012 13:36
Nový
Automatické spuštění
Vertigo 8. 1. 2007 01:15
Nový
jak přesměrovat provoz?
martin 22. 2. 2010 21:08
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