Er WireGuard fremtidens store VPN?

Er WireGuard fremtidens store VPN?

Tiden er kommet, hvor VPN ikke længere er et eksotisk værktøj for skæggede systemadministratorer. Brugere har forskellige opgaver, men faktum er, at alle har brug for en VPN.

Problemet med nuværende VPN-løsninger er, at de er svære at konfigurere korrekt, dyre at vedligeholde og er fulde af ældre kode af tvivlsom kvalitet.

For flere år siden besluttede den canadiske informationssikkerhedsspecialist Jason A. Donenfeld, at han havde fået nok af det og begyndte at arbejde på WireGuard. WireGuard er nu ved at blive klargjort til optagelse i Linux-kernen og har endda fået ros fra Linus Torvalds og US Senat.

Påståede fordele ved WireGuard i forhold til andre VPN-løsninger:

  • Let at bruge.
  • Bruger moderne kryptografi: Støjprotokolramme, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF osv.
  • Kompakt, læsbar kode, lettere at undersøge for sårbarheder.
  • Høj ydeevne.
  • Klar og udførlig specifikation.

Er der fundet en sølvkugle? Er det tid til at begrave OpenVPN og IPSec? Jeg besluttede at beskæftige mig med dette, og det gjorde jeg samtidig script til automatisk installation af en personlig VPN-server.

Principper for arbejde

Driftsprincipperne kan beskrives sådan her:

  • En WireGuard-grænseflade oprettes, og en privat nøgle og IP-adresse tildeles den. Indstillingerne for andre peers indlæses: deres offentlige nøgler, IP-adresser osv.
  • Alle IP-pakker, der ankommer til WireGuard-grænsefladen, er indkapslet i UDP og leveret sikkert andre jævnaldrende.
  • Klienter angiver serverens offentlige IP-adresse i indstillingerne. Serveren genkender automatisk klienternes eksterne adresser, når korrekt autentificerede data modtages fra dem.
  • Serveren kan ændre den offentlige IP-adresse uden at afbryde dens arbejde. Samtidig vil det sende en advarsel til tilsluttede klienter, og de vil opdatere deres konfiguration på farten.
  • Begrebet routing bruges Cryptokey routing. WireGuard accepterer og sender pakker baseret på peerens offentlige nøgle. Når serveren dekrypterer en korrekt autentificeret pakke, kontrolleres dens src-felt. Hvis det matcher konfigurationen allowed-ips autentificeret peer, modtages pakken af ​​WireGuard-grænsefladen. Når du sender en udgående pakke, sker den tilsvarende procedure: pakkens dst-felt tages, og baseret på det vælges den tilsvarende peer, pakken signeres med sin nøgle, krypteres med peerens nøgle og sendes til det eksterne slutpunkt. .

Hele WireGuards kernelogik fylder mindre end 4 tusind linjer kode, mens OpenVPN og IPSec har hundredtusindvis af linjer. For at understøtte moderne kryptografiske algoritmer foreslås det at inkludere en ny kryptografisk API i Linux-kernen Zink. Der er lige nu en diskussion i gang om, hvorvidt det er en god idé.

Ydelse

Den maksimale ydeevnefordel (sammenlignet med OpenVPN og IPSec) vil være mærkbar på Linux-systemer, da WireGuard er implementeret som et kernemodul der. Derudover understøttes macOS, Android, iOS, FreeBSD og OpenBSD, men i dem kører WireGuard i brugerområdet med alle de deraf følgende præstationskonsekvenser. Windows-understøttelse forventes at blive tilføjet i den nærmeste fremtid.

Benchmark resultater med officielle site:

Er WireGuard fremtidens store VPN?

Min brugsoplevelse

Jeg er ikke VPN-ekspert. Jeg har engang oprettet OpenVPN manuelt, og det var meget kedeligt, og jeg prøvede ikke engang IPSec. Der er for mange beslutninger at tage, det er meget nemt at skyde sig selv i foden. Derfor brugte jeg altid færdige scripts til at konfigurere serveren.

Så fra mit synspunkt er WireGuard generelt ideel til brugeren. Alle beslutninger på lavt niveau træffes i specifikationen, så processen med at forberede en typisk VPN-infrastruktur tager kun et par minutter. Det er næsten umuligt at snyde i konfigurationen.

Installationsproces beskrevet i detaljer på den officielle hjemmeside, vil jeg gerne særskilt bemærke den fremragende OpenWRT understøttelse.

Krypteringsnøgler genereres af hjælpeprogrammet wg:

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

Dernæst skal du oprette en serverkonfiguration /etc/wireguard/wg0.conf med følgende indhold:

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

og hæve tunnelen med et manuskript wg-quick:

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

På systemer med systemd kan du bruge dette i stedet sudo systemctl start [email protected].

På klientmaskinen skal du oprette en konfiguration /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 

Og hæv tunnelen på samme måde:

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

Tilbage er kun at konfigurere NAT på serveren, så klienter kan få adgang til internettet, og du er færdig!

Denne brugervenlighed og kompakthed af kodebasen blev opnået ved at eliminere nøgledistributionsfunktionaliteten. Der er ikke noget komplekst certifikatsystem og al denne rædsel i virksomheden; korte krypteringsnøgler distribueres meget ligesom SSH-nøgler. Men dette udgør et problem: WireGuard vil ikke være så let at implementere på nogle eksisterende netværk.

Blandt ulemperne er det værd at bemærke, at WireGuard ikke fungerer via en HTTP-proxy, da kun UDP-protokollen er tilgængelig som transport. Spørgsmålet opstår: vil det være muligt at tilsløre protokollen? Det er selvfølgelig ikke en VPNs direkte opgave, men for OpenVPN er der for eksempel måder at forklæde sig selv som HTTPS, hvilket hjælper indbyggere i totalitære lande til fuldt ud at bruge internettet.

Fund

For at opsummere er dette et meget interessant og lovende projekt, du kan allerede bruge det på personlige servere. Hvad er fortjenesten? Høj ydeevne på Linux-systemer, nem opsætning og support, kompakt og læsbar kodebase. Det er dog for tidligt at skynde sig at overføre en kompleks infrastruktur til WireGuard; det er værd at vente på, at det bliver inkluderet i Linux-kernen.

For at spare min (og din) tid udviklede jeg WireGuard automatisk installationsprogram. Med dens hjælp kan du oprette en personlig VPN for dig selv og dine venner uden overhovedet at forstå noget om det.

Kilde: www.habr.com

Tilføj en kommentar