WireGuard – den perfekta VPN-lösningen för framtiden?

WireGuard – den perfekta VPN-lösningen för framtiden?

Tiden har kommit dÄ VPN inte lÀngre Àr ett exotiskt verktyg för skÀggiga sysadmins. AnvÀndarnas behov varierar, men faktum Àr att VPN har blivit nödvÀndigt för alla.

Problemet med nuvarande VPN-lösningar Àr att de Àr svÄra att konfigurera korrekt, dyra att underhÄlla och fulla av legacykod av tveksamt kvalitet.

För nÄgra Är sedan bestÀmde den kanadensiska cybersÀkerhetsspecialisten Jason A. Donenfeld att det var dags att förÀndra detta och började arbeta med WireGuard. Just nu förbereds WireGuard för att inkluderas i Linux-kÀrnan, och den har till och med fÄtt beröm frÄn Linus Torvalds och i den amerikanska senaten.

De pÄstÄdda fördelarna med WireGuard över andra VPN-lösningar:

  • LĂ€tt att anvĂ€nda.
  • AnvĂ€nder modern kryptografi: Noise-protokollram, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF etc.
  • Kompakt och lĂ€sbar kod, enklare att granska för sĂ„rbarheter.
  • High performance.
  • Tydlig och genomarbetad specifikation.

Har silverkulor Ă€ntligen hittats? Är det dags att begrava OpenVPN och IPSec? Jag bestĂ€mde mig för att reda ut detta och samtidigt skapa ett skript för automatisk installation av en personlig VPN-server.

Arbetsprinciper

Principerna kan beskrivas sÄ hÀr:

  • En WireGuard-grĂ€nssnitt skapas, en privat nyckel och IP-adress tilldelas. InstĂ€llningarna för andra peers laddas: deras offentliga nycklar, IP-adresser osv.
  • Alla IP-paket som kommer till WireGuard-grĂ€nssnittet inkapslas i UDP och levereras sĂ€kert till andra peers.
  • Klienterna anger den offentliga IP-adressen för servern i sina instĂ€llningar. Servern fĂ„r automatiskt kĂ€nnedom om klienternas externa adresser nĂ€r autentiserade data kommer in.
  • Servern kan Ă€ndra sin offentliga IP-adress utan att avbryta driften. Den skickar en notifiering till anslutna klienter, som dĂ„ uppdaterar sin konfiguration i realtid.
  • Konceptet för routing anvĂ€nds Cryptokey Routing. WireGuard tar emot och skickar paket baserat pĂ„ en peers publika nyckel. NĂ€r servern dekrypterar ett korrekt autentiserat paket kontrolleras dess src-fĂ€lt. Om det matchar konfigurationen för allowed-ips för den autentiserade peeren, accepteras paketet av WireGuard-grĂ€nssnittet. Vid avsĂ€ndning av ett utgĂ„ende paket pĂ„börjas en motsvarande procedur: dst-fĂ€ltet i paketet tas och baserat pĂ„ detta vĂ€ljs lĂ€mplig peer, paketet signeras med sin egen nyckel, krypteras med peer-id nyckel och skickas till den fjĂ€rran enheten.

All grundlogik för WireGuard tar mindre Àn 4 000 kodrader, medan OpenVPN och IPSec har hundratusentals kodrader. För att stödja moderna kryptovalutor föreslÄs att en ny kryptografisk API inkluderas i Linux-kÀrnan. Zinc. För nÀrvarande pÄgÄr en diskussion om hur bra denna idé Àr.

Performance

Det maximala prestandafördelarna (jÀmfört med OpenVPN och IPSec) kommer att bli tydliga pÄ Linux-system, eftersom WireGuard dÀr implementeras som en kÀrnmodul. Dessutom stöds macOS, Android, iOS, FreeBSD och OpenBSD, men dÀr körs WireGuard i userspace med alla följder för prestanda. Stöd för Windows lovas att lÀggas till inom en snar framtid.

Resultaten av bÀnktester med den officiella sidan:

WireGuard – den perfekta VPN-lösningen för framtiden?

Min erfarenhet av anvÀndning

Jag Àr ingen expert pÄ VPN-konfiguration. Jag konfigurerade en gÄng OpenVPN manuellt och det var mycket krÄngligt, och jag har inte ens försökt med IPSec. Det finns alldeles för mÄnga beslut att fatta, och det Àr vÀldigt lÀtt att trampa snett. DÀrför har jag alltid anvÀnt fÀrdiga skript för att konfigurera servern.

SÄ, WireGuard Àr en utmÀrkt lösning för anvÀndaren, enligt min mening. Alla lÄgnivÄbeslut Àr fastlagda i specifikationen, sÄ processen att förbereda en typisk VPN-infrastruktur tar bara nÄgra minuter. Det Àr praktiskt taget omöjligt att göra misstag i konfigurationen.

Installationsprocess is described in detail. pÄ den officiella webbplatsen vill jag sÀrskilt framhÀva den utmÀrkta stödet för OpenWRT.

Krypteringsnycklar genereras med verktyget wg:

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

DÀrefter mÄste du skapa serverkonfigurationen /etc/wireguard/wg0.conf med följande innehÄll:

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

och starta tunneln med skriptet wg-quick:

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

I system med systemd kan du istÀllet anvÀnda sudo systemctl start wg-quick@wg0.service.

PĂ„ klientmaskinen, skapa konfigurationen /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 # Serverns externa IP
PersistentKeepalive = 25 

Och pÄ samma sÀtt starta tunneln:

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

Det ÄterstÄr bara att konfigurera NAT pÄ servern sÄ att klienterna kan fÄ tillgÄng till Internet, och dÄ Àr allt klart!

Denna enkelhet och kompakta kodbas har uppnÄtts genom att avstÄ frÄn funktioner för nyckeldistribution. HÀr finns inget komplicerat certifikatssystem och allt detta företagskaos, korta krypteringsnycklar sprids ungefÀr som SSH-nycklar. Men detta skapar ett problem: WireGuard kommer att vara nÄgot svÄrt att införa i vissa redan existerande nÀtverk.

Bland nackdelar kan nÀmnas att WireGuard inte fungerar genom HTTP-proxy, eftersom den endast har UDP-protokollet som transport. FrÄgan uppstÄr, Àr det möjligt att obfuska protokollet? SjÀlvklart Àr detta inte en direkt uppgift för en VPN, men för exempelvis OpenVPN finns det sÀtt att maskera under HTTPS, vilket hjÀlper invÄnare i totalitÀra lÀnder att fullt ut njuta av Internet.

Slutsatser

Sammanfattningsvis Àr detta ett mycket intressant och lovande projekt som redan nu kan anvÀndas pÄ personliga servrar. Vilken fördel? Hög prestanda pÄ Linux-system, enkel installation och underhÄll, samt en kompakt och lÀsbar kodbas. Men att kasta sig in i att översÀtta en komplex infrastruktur till WireGuard Àr Ànnu för tidigt, man bör vÀnta pÄ att det inkluderas i Linux-kÀrnan.

För att spara min (och din) tid har jag utvecklat en automatisk installationsprogram för WireGuard. Med dess hjÀlp kan man enkelt sÀtta upp en personlig VPN för sig sjÀlv och sina bekanta, Àven utan att förstÄ nÄgot av detta.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster