Er WireGuard fremtidens store VPN?

Er WireGuard fremtidens store VPN?

Tiden har kommet da VPN ikke lenger er et eksotisk verktøy for skjeggete systemadministratorer. Brukere har forskjellige oppgaver, men faktum er at alle trenger en VPN.

Problemet med nåværende VPN-løsninger er at de er vanskelige å konfigurere riktig, dyre å vedlikeholde og er fulle av eldre kode av tvilsom kvalitet.

For flere år siden bestemte den kanadiske informasjonssikkerhetsspesialisten Jason A. Donenfeld at han hadde fått nok av det og begynte å jobbe med WireGuard. WireGuard forberedes nå for inkludering i Linux-kjernen og har til og med fått ros fra Linus Torvalds og USAs senat.

Påståtte fordeler med WireGuard fremfor andre VPN-løsninger:

  • Lett å bruke.
  • Bruker moderne kryptografi: Støyprotokollrammeverk, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, etc.
  • Kompakt, lesbar kode, lettere å undersøke for sårbarheter.
  • Høy ytelse.
  • Tydelig og forseggjort spesifikasjon.

Er det funnet en sølvkule? Er det på tide å begrave OpenVPN og IPSec? Jeg bestemte meg for å ta tak i dette, og samtidig gjorde jeg det skript for automatisk installasjon av en personlig VPN-server.

Prinsipper for arbeid

Driftsprinsippene kan beskrives omtrent slik:

  • Et WireGuard-grensesnitt opprettes og en privat nøkkel og IP-adresse tildeles det. Innstillingene til andre jevnaldrende lastes inn: deres offentlige nøkler, IP-adresser osv.
  • Alle IP-pakker som kommer til WireGuard-grensesnittet er innkapslet i UDP og levert trygt andre jevnaldrende.
  • Klienter spesifiserer den offentlige IP-adressen til serveren i innstillingene. Serveren gjenkjenner automatisk de eksterne adressene til klientene når korrekt autentiserte data mottas fra dem.
  • Serveren kan endre den offentlige IP-adressen uten å avbryte arbeidet. Samtidig vil den sende et varsel til tilkoblede klienter, og de vil oppdatere konfigurasjonen sin med en gang.
  • Konseptet med ruting brukes Kryptonøkkelruting. WireGuard aksepterer og sender pakker basert på jevnaldrendes offentlige nøkkel. Når serveren dekrypterer en korrekt autentisert pakke, sjekkes src-feltet. Hvis det samsvarer med konfigurasjonen allowed-ips autentisert peer, mottas pakken av WireGuard-grensesnittet. Når du sender en utgående pakke, skjer den tilsvarende prosedyren: dst-feltet til pakken tas og, basert på det, velges tilsvarende peer, pakken signeres med sin nøkkel, krypteres med peer-nøkkelen og sendes til det eksterne endepunktet .

All WireGuards kjernelogikk tar opp mindre enn 4 tusen linjer med kode, mens OpenVPN og IPSec har hundretusenvis av linjer. For å støtte moderne kryptografiske algoritmer, foreslås det å inkludere et nytt kryptografisk API i Linux-kjernen sink. Det pågår for tiden en diskusjon om dette er en god idé.

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

Den maksimale ytelsesfordelen (sammenlignet med OpenVPN og IPSec) vil være merkbar på Linux-systemer, siden WireGuard er implementert som en kjernemodul der. I tillegg støttes macOS, Android, iOS, FreeBSD og OpenBSD, men i dem kjører WireGuard i brukerområdet med alle påfølgende ytelseskonsekvenser. Windows-støtte forventes å bli lagt til i nær fremtid.

Benchmark resultater med offisielle nettsted:

Er WireGuard fremtidens store VPN?

Min brukserfaring

Jeg er ingen VPN-ekspert. Jeg satte en gang opp OpenVPN manuelt, og det var veldig kjedelig, og jeg prøvde ikke engang IPSec. Det er for mange avgjørelser å ta, det er veldig lett å skyte seg selv i foten. Derfor brukte jeg alltid ferdige skript for å konfigurere serveren.

Så fra mitt synspunkt er WireGuard generelt ideell for brukeren. Alle beslutninger på lavt nivå tas i spesifikasjonen, så prosessen med å forberede en typisk VPN-infrastruktur tar bare noen få minutter. Det er nesten umulig å jukse i konfigurasjonen.

Installasjonsprosess beskrevet i detalj på den offisielle nettsiden vil jeg merke det utmerkede separat OpenWRT-støtte.

Krypteringsnøkler genereres av verktøyet wg:

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

Deretter må du opprette en serverkonfigurasjon /etc/wireguard/wg0.conf med følgende innhold:

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

og heve tunnelen med et manus wg-quick:

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

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

På klientmaskinen oppretter du en konfigurasjon /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 heve tunnelen på samme måte:

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

Alt som gjenstår er å konfigurere NAT på serveren slik at klienter kan få tilgang til Internett, og du er ferdig!

Denne brukervennligheten og kompaktheten til kodebasen ble oppnådd ved å eliminere nøkkeldistribusjonsfunksjonaliteten. Det er ikke noe komplekst sertifikatsystem og all denne bedriftsgruen; korte krypteringsnøkler distribueres omtrent som SSH-nøkler. Men dette utgjør et problem: WireGuard vil ikke være så lett å implementere på enkelte eksisterende nettverk.

Blant ulempene er det verdt å merke seg at WireGuard ikke vil fungere via en HTTP-proxy, siden kun UDP-protokollen er tilgjengelig som transport. Spørsmålet oppstår: vil det være mulig å tilsløre protokollen? Dette er selvfølgelig ikke den direkte oppgaven til en VPN, men for OpenVPN, for eksempel, er det måter å forkle seg som HTTPS, som hjelper innbyggere i totalitære land til å fullt ut bruke Internett.

Funn

For å oppsummere er dette et veldig interessant og lovende prosjekt, du kan allerede bruke det på personlige servere. Hva er fortjenesten? Høy ytelse på Linux-systemer, enkel oppsett og støtte, kompakt og lesbar kodebase. Det er imidlertid for tidlig å skynde seg å overføre en kompleks infrastruktur til WireGuard; det er verdt å vente på at det blir inkludert i Linux-kjernen.

For å spare min (og din) tid, utviklet jeg WireGuard automatisk installasjonsprogram. Med dens hjelp kan du sette opp en personlig VPN for deg selv og vennene dine uten engang å forstå noe om det.

Kilde: www.habr.com

Legg til en kommentar