Nastal čas, kdy VPN již není nějakým exotickým nástrojem vousatých systémových administrátorů. Uživatelé mají různé úkoly, ale faktem je, že každý potřebuje VPN.
Problém se současnými řešeními VPN je v tom, že je obtížné je správně nakonfigurovat, jsou drahé na údržbu a jsou plné starého kódu pochybné kvality.
Před několika lety se kanadský specialista na informační bezpečnost Jason A. Donenfeld rozhodl, že už toho má dost, a začal na tom pracovat WireGuard. WireGuard se nyní připravuje na začlenění do linuxového jádra a dokonce se mu dostalo pochvaly Linus Torvalds a americký senát.
Nárokované výhody WireGuard oproti jiným řešením VPN:
Snadné použití.
Používá moderní kryptografii: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF atd.
Vytvoří se rozhraní WireGuard a přiřadí se mu soukromý klíč a IP adresa. Načtou se nastavení ostatních peerů: jejich veřejné klíče, IP adresy atd.
Všechny IP pakety přicházející na rozhraní WireGuard jsou zapouzdřeny v UDP a bezpečně doručeno ostatní vrstevníci.
Klienti specifikují veřejnou IP adresu serveru v nastavení. Server automaticky rozpozná externí adresy klientů, když od nich obdrží správně ověřená data.
Server může změnit veřejnou IP adresu, aniž by přerušil svou práci. Zároveň pošle upozornění připojeným klientům a ti budou za běhu aktualizovat svou konfiguraci.
Používá se koncept směrování Směrování kryptoklíčů. WireGuard přijímá a odesílá pakety na základě veřejného klíče partnera. Když server dešifruje správně ověřený paket, zkontroluje se jeho pole src. Pokud odpovídá konfiguraci allowed-ips ověřený peer, paket je přijat rozhraním WireGuard. Při odesílání odchozího paketu dojde k odpovídajícímu postupu: vezme se pole dst paketu a na jeho základě se vybere odpovídající peer, paket se podepíše svým klíčem, zašifruje se klíčem peer a odešle se na vzdálený koncový bod. .
Veškerá základní logika WireGuardu zabírá méně než 4 tisíce řádků kódu, zatímco OpenVPN a IPSec mají stovky tisíc řádků. Pro podporu moderních kryptografických algoritmů se navrhuje zahrnout do linuxového jádra nové kryptografické API zinek. V současné době probíhá diskuse o tom, zda je to dobrý nápad.
Производительность
Maximální výkonová výhoda (ve srovnání s OpenVPN a IPSec) bude patrná na systémech Linux, protože tam je WireGuard implementován jako modul jádra. Kromě toho jsou podporovány macOS, Android, iOS, FreeBSD a OpenBSD, v nichž však WireGuard běží v uživatelském prostoru se všemi z toho vyplývajícími výkonnostními důsledky. Očekává se, že v blízké budoucnosti bude přidána podpora Windows.
Nejsem odborník na VPN. Jednou jsem OpenVPN nastavil ručně a bylo to velmi zdlouhavé a IPSec jsem ani nezkoušel. Je potřeba udělat příliš mnoho rozhodnutí, je velmi snadné se střelit do nohy. Proto jsem pro konfiguraci serveru vždy používal hotové skripty.
WireGuard je tedy z mého pohledu pro uživatele obecně ideální. Všechna rozhodnutí na nízké úrovni se provádějí ve specifikaci, takže proces přípravy typické infrastruktury VPN trvá jen několik minut. V konfiguraci je téměř nemožné podvádět.
Zbývá pouze nakonfigurovat NAT na serveru tak, aby klienti měli přístup k internetu, a je hotovo!
Tato snadnost použití a kompaktnost základny kódu byla dosažena odstraněním funkce distribuce klíčů. Neexistuje žádný složitý systém certifikátů a celá tato firemní hrůza; krátké šifrovací klíče jsou distribuovány podobně jako klíče SSH. To však představuje problém: WireGuard nebude tak snadné implementovat do některých stávajících sítí.
Mezi nevýhody stojí za zmínku, že WireGuard nebude fungovat přes HTTP proxy, protože jako přenos je k dispozici pouze protokol UDP. Nabízí se otázka: bude možné protokol zatemnit? To samozřejmě není přímý úkol VPN, ale například pro OpenVPN existují způsoby, jak se maskovat jako HTTPS, což obyvatelům totalitních zemí pomáhá naplno využívat internet.
Závěry
Abych to shrnul, jedná se o velmi zajímavý a slibný projekt, již jej můžete využít na osobních serverech. jaký je zisk? Vysoký výkon na systémech Linux, snadné nastavení a podpora, kompaktní a čitelná kódová základna. Je však příliš brzy uspěchat s převodem komplexní infrastruktury na WireGuard, vyplatí se počkat na její zařazení do linuxového jádra.
Abych ušetřil svůj (a váš) čas, vyvinul jsem se Automatická instalace WireGuard. S jeho pomocí můžete nastavit osobní VPN pro sebe a své přátele, aniž byste o tom něčemu rozuměli.