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.
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.
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.
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.