Is WireGuard de geweldige VPN van de toekomst?

Is WireGuard de geweldige VPN van de toekomst?

De tijd is gekomen dat VPN niet langer een exotisch hulpmiddel is van bebaarde systeembeheerders. Gebruikers hebben verschillende taken, maar feit is dat iedereen een VPN nodig heeft.

Het probleem met de huidige VPN-oplossingen is dat ze moeilijk correct te configureren zijn, duur in onderhoud en vol zitten met verouderde code van twijfelachtige kwaliteit.

Enkele jaren geleden besloot de Canadese informatiebeveiligingsspecialist Jason A. Donenfeld dat hij er genoeg van had en ging aan de slag WireGuard. WireGuard wordt nu voorbereid voor opname in de Linux-kernel en krijgt er zelfs lovende kritieken van Linus Torvalds en Amerikaanse Senaat.

Beweerde voordelen van WireGuard ten opzichte van andere VPN-oplossingen:

  • Makkelijk te gebruiken.
  • Maakt gebruik van moderne cryptografie: Noise-protocolframework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, enz.
  • Compacte, leesbare code, gemakkelijker te onderzoeken op kwetsbaarheden.
  • Hoge prestaties.
  • Duidelijk en uitgebreid specificatie.

Is er een zilveren kogel gevonden? Is het tijd om OpenVPN en IPSec te begraven? Ik besloot hiermee om te gaan, en tegelijkertijd deed ik dat ook script voor het automatisch installeren van een persoonlijke VPN-server.

Werkprincipes

De werkingsprincipes kunnen ongeveer als volgt worden beschreven:

  • Er wordt een WireGuard-interface gemaakt en er wordt een privésleutel en een IP-adres aan toegewezen. De instellingen van andere peers worden geladen: hun publieke sleutels, IP-adressen, enz.
  • Alle IP-pakketten die bij de WireGuard-interface aankomen, zijn ingekapseld in UDP en veilig afgeleverd andere leeftijdsgenoten.
  • Clients specificeren het openbare IP-adres van de server in de instellingen. De server herkent automatisch de externe adressen van clients wanneer correct geauthenticeerde gegevens van hen worden ontvangen.
  • De server kan het openbare IP-adres wijzigen zonder zijn werk te onderbreken. Tegelijkertijd stuurt het een waarschuwing naar aangesloten clients en zij zullen hun configuratie direct bijwerken.
  • Er wordt gebruik gemaakt van het concept van routing Cryptokey-routering. WireGuard accepteert en verzendt pakketten op basis van de openbare sleutel van de peer. Wanneer de server een correct geauthenticeerd pakket decodeert, wordt het src-veld ervan gecontroleerd. Als het overeenkomt met de configuratie allowed-ips geauthenticeerde peer, het pakket wordt ontvangen door de WireGuard-interface. Bij het verzenden van een uitgaand pakket vindt de overeenkomstige procedure plaats: het dst-veld van het pakket wordt genomen en op basis daarvan wordt de corresponderende peer geselecteerd, het pakket wordt ondertekend met zijn sleutel, gecodeerd met de sleutel van de peer en verzonden naar het externe eindpunt .

Alle kernlogica van WireGuard neemt minder dan vierduizend regels code in beslag, terwijl OpenVPN en IPSec honderdduizenden regels bevatten. Om moderne cryptografische algoritmen te ondersteunen, wordt voorgesteld om een ​​nieuwe cryptografische API in de Linux-kernel op te nemen zink. Er is momenteel een discussie gaande of dit een goed idee is.

Производительность

Het maximale prestatievoordeel (vergeleken met OpenVPN en IPSec) zal merkbaar zijn op Linux-systemen, aangezien WireGuard daar als kernelmodule is geïmplementeerd. Daarnaast worden macOS, Android, iOS, FreeBSD en OpenBSD ondersteund, maar daarin draait WireGuard in de gebruikersruimte met alle gevolgen van dien voor de prestaties. Er wordt verwacht dat Windows-ondersteuning in de nabije toekomst zal worden toegevoegd.

Benchmarkresultaten met officiële website:

Is WireGuard de geweldige VPN van de toekomst?

Mijn ervaring met het gebruik van

Ik ben geen VPN-expert. Ik heb OpenVPN ooit handmatig ingesteld en het was erg vervelend, en ik heb IPSec niet eens geprobeerd. Er zijn te veel beslissingen om te nemen, het is heel gemakkelijk om jezelf in de voet te schieten. Daarom gebruikte ik altijd kant-en-klare scripts om de server te configureren.

WireGuard is dus vanuit mijn oogpunt over het algemeen ideaal voor de gebruiker. Alle beslissingen op laag niveau worden in de specificatie genomen, dus het proces van het voorbereiden van een typische VPN-infrastructuur duurt slechts een paar minuten. Het is bijna onmogelijk om vals te spelen in de configuratie.

Installatie proces gedetailleerd beschreven op de officiële website zou ik het uitstekende apart willen vermelden OpenWRT-ondersteuning.

Coderingssleutels worden gegenereerd door het hulpprogramma wg:

SERVER_PRIVKEY=$( wg genkey )
SERVER_PUBKEY=$( echo $SERVER_PRIVKEY | wg pubkey )
CLIENT_PRIVKEY=$( wg genkey )
CLIENT_PUBKEY=$( echo $CLIENT_PRIVKEY | wg pubkey )

Vervolgens moet u een serverconfiguratie maken /etc/wireguard/wg0.conf met de volgende inhoud:

[Interface]
Address = 10.9.0.1/24
PrivateKey = $SERVER_PRIVKEY
[Peer]
PublicKey = $CLIENT_PUBKEY
AllowedIPs = 10.9.0.2/32

en breng de tunnel omhoog met een script wg-quick:

sudo wg-quick up /etc/wireguard/wg0.conf

Op systemen met systemd kunt u dit in plaats daarvan gebruiken sudo systemctl start [email protected].

Maak op de clientcomputer een config /etc/wireguard/wg0.conf:

[Interface]
PrivateKey = $CLIENT_PRIVKEY
Address = 10.9.0.2/24
[Peer]
PublicKey = $SERVER_PUBKEY
AllowedIPs = 0.0.0.0/0
Endpoint = 1.2.3.4:51820 # Внешний IP сервера
PersistentKeepalive = 25 

En til de tunnel op dezelfde manier op:

sudo wg-quick up /etc/wireguard/wg0.conf

Het enige dat u nog hoeft te doen, is NAT op de server configureren, zodat clients toegang hebben tot internet, en u bent klaar!

Dit gebruiksgemak en de compactheid van de codebasis werden bereikt door de sleuteldistributiefunctionaliteit te elimineren. Er is geen complex certificaatsysteem en al deze bedrijfsgruwel; korte encryptiesleutels worden net als SSH-sleutels gedistribueerd. Maar dit vormt een probleem: WireGuard zal niet zo eenvoudig te implementeren zijn op sommige bestaande netwerken.

Een van de nadelen is dat WireGuard niet werkt via een HTTP-proxy, omdat alleen het UDP-protocol beschikbaar is als transportmiddel. De vraag rijst: zal het mogelijk zijn om het protocol te verdoezelen? Dit is uiteraard niet de directe taak van een VPN, maar voor OpenVPN zijn er bijvoorbeeld manieren om zich te vermommen als HTTPS, waardoor inwoners van totalitaire landen volledig gebruik kunnen maken van internet.

Bevindingen

Samenvattend is dit een zeer interessant en veelbelovend project, je kunt het al op persoonlijke servers gebruiken. Wat is de winst? Hoge prestaties op Linux-systemen, eenvoudige installatie en ondersteuning, compacte en leesbare codebasis. Het is echter nog te vroeg om een ​​complexe infrastructuur overhaast naar WireGuard over te dragen; het is de moeite waard om te wachten op de opname ervan in de Linux-kernel.

Om mijn (en jouw) tijd te besparen, heb ik ontwikkeld WireGuard automatisch installatieprogramma. Met zijn hulp kun je een persoonlijke VPN voor jezelf en je vrienden opzetten zonder er zelfs maar iets van te begrijpen.

Bron: www.habr.com

Voeg een reactie