Är WireGuard framtidens stora VPN?

Är WireGuard framtidens stora VPN?

Tiden har kommit när VPN inte längre är något exotiskt verktyg för skäggiga systemadministratörer. Användare har olika uppgifter, men faktum är att alla behöver en VPN.

Problemet med nuvarande VPN-lösningar är att de är svåra att konfigurera korrekt, dyra att underhålla och är fulla av äldre kod av tveksam kvalitet.

För flera år sedan beslutade den kanadensiske informationssäkerhetsspecialisten Jason A. Donenfeld att han hade fått nog av det och började arbeta på WireGuard. WireGuard förbereds nu för inkludering i Linux-kärnan och har till och med fått beröm från Linus Torvalds och amerikanska senaten.

Påstådda fördelar med WireGuard jämfört med andra VPN-lösningar:

  • Lätt att använda.
  • Använder modern kryptografi: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, etc.
  • Kompakt, läsbar kod, lättare att undersöka för sårbarheter.
  • Hög prestanda.
  • Tydligt och genomarbetat Specifikation.

Har en silverkula hittats? Är det dags att begrava OpenVPN och IPSec? Jag bestämde mig för att ta itu med det här, och samtidigt gjorde jag det skript för att automatiskt installera en personlig VPN-server.

Principer för arbete

Funktionsprinciperna kan beskrivas ungefär så här:

  • Ett WireGuard-gränssnitt skapas och en privat nyckel och IP-adress tilldelas det. Inställningarna för andra peers laddas: deras publika nycklar, IP-adresser, etc.
  • Alla IP-paket som kommer till WireGuard-gränssnittet är inkapslade i UDP och levereras säkert andra kamrater.
  • Klienter anger serverns offentliga IP-adress i inställningarna. Servern känner automatiskt igen klienternas externa adresser när korrekt autentiserad data tas emot från dem.
  • Servern kan ändra den offentliga IP-adressen utan att avbryta dess arbete. Samtidigt kommer det att skicka en varning till anslutna klienter och de kommer att uppdatera sin konfiguration i farten.
  • Begreppet routing används Cryptokey Routing. WireGuard accepterar och skickar paket baserat på peers publika nyckel. När servern dekrypterar ett korrekt autentiserat paket, kontrolleras dess src-fält. Om det matchar konfigurationen allowed-ips autentiserad peer, tas paketet emot av WireGuard-gränssnittet. När ett utgående paket skickas sker motsvarande procedur: paketets dst-fält tas och, baserat på det, väljs motsvarande peer, paketet signeras med sin nyckel, krypteras med peers nyckel och skickas till fjärrändpunkten .

All WireGuards kärnlogik tar upp mindre än 4 tusen rader kod, medan OpenVPN och IPSec har hundratusentals rader. För att stödja moderna kryptografiska algoritmer föreslås det att inkludera ett nytt kryptografiskt API i Linux-kärnan zink. Just nu pågår en diskussion om huruvida detta är en bra idé.

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

Den maximala prestandafördelen (jämfört med OpenVPN och IPSec) kommer att märkas på Linux-system, eftersom WireGuard är implementerad som en kärnmodul där. Dessutom stöds macOS, Android, iOS, FreeBSD och OpenBSD, men i dem körs WireGuard i användarutrymmet med alla efterföljande prestandakonsekvenser. Windows-stöd förväntas läggas till inom en snar framtid.

Benchmark resultat med officiell plats:

Är WireGuard framtidens stora VPN?

Min användarupplevelse

Jag är ingen VPN-expert. Jag ställde en gång in OpenVPN manuellt och det var väldigt tråkigt, och jag provade inte ens IPSec. Det är för många beslut att fatta, det är väldigt lätt att skjuta sig själv i foten. Därför använde jag alltid färdiga skript för att konfigurera servern.

Så, WireGuard, ur min synvinkel, är generellt sett idealiskt för användaren. Alla beslut på låg nivå tas i specifikationen, så processen att förbereda en typisk VPN-infrastruktur tar bara några minuter. Det är nästan omöjligt att fuska i konfigurationen.

Installationsprocess beskrivs i detalj på den officiella webbplatsen skulle jag vilja notera det utmärkta separat Stöd för OpenWRT.

Krypteringsnycklar genereras av 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 en serverkonfiguration /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 höj tunneln med ett manus wg-quick:

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

På system med systemd kan du använda detta istället sudo systemctl start [email protected].

Skapa en konfiguration på klientdatorn /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 

Och höj tunneln på samma sätt:

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

Allt som återstår är att konfigurera NAT på servern så att klienter kan komma åt Internet, och du är klar!

Denna användarvänlighet och kompakthet hos kodbasen uppnåddes genom att eliminera nyckeldistributionsfunktionaliteten. Det finns inget komplicerat certifikatsystem och all denna företagsskräck, korta krypteringsnycklar distribueras ungefär som SSH-nycklar. Men detta utgör ett problem: WireGuard kommer inte att vara så lätt att implementera på vissa befintliga nätverk.

Bland nackdelarna är det värt att notera att WireGuard inte fungerar via en HTTP-proxy, eftersom endast UDP-protokollet är tillgängligt som transport. Frågan uppstår: kommer det att vara möjligt att fördunkla protokollet? Naturligtvis är detta inte den direkta uppgiften för ett VPN, men för OpenVPN, till exempel, finns det sätt att maskera sig som HTTPS, vilket hjälper invånare i totalitära länder att fullt ut använda Internet.

Resultat

För att sammanfatta, detta är ett mycket intressant och lovande projekt, du kan redan använda det på personliga servrar. Vad är vinsten? Hög prestanda på Linux-system, enkel installation och support, kompakt och läsbar kodbas. Det är dock för tidigt att skynda sig att överföra en komplex infrastruktur till WireGuard; det är värt att vänta på att det inkluderas i Linux-kärnan.

För att spara min (och din) tid utvecklade jag WireGuard automatisk installationsprogram. Med dess hjälp kan du skapa ett personligt VPN för dig själv och dina vänner utan att ens förstå något om det.

Källa: will.com

Lägg en kommentar