Je WireGuard odličen VPN prihodnosti?

Je WireGuard odličen VPN prihodnosti?

Prišel je čas, ko VPN ni več eksotično orodje bradatih sistemskih administratorjev. Uporabniki imajo različne naloge, a dejstvo je, da vsi potrebujejo VPN.

Težava s trenutnimi rešitvami VPN je, da jih je težko pravilno konfigurirati, drago jih je vzdrževati in so polne podedovane kode vprašljive kakovosti.

Pred nekaj leti se je kanadski strokovnjak za informacijsko varnost Jason A. Donenfeld odločil, da ima tega dovolj, in začel delati na WireGuard. WireGuard se zdaj pripravlja za vključitev v jedro Linuxa in je prejel celo pohvale Linus Torvalds in ameriški senat.

Zatrjevane prednosti WireGuard pred drugimi rešitvami VPN:

  • Enostaven za uporabo.
  • Uporablja sodobno kriptografijo: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF itd.
  • Kompaktna, berljiva koda, lažja za raziskovanje ranljivosti.
  • Visoka zmogljivost.
  • Jasno in dodelano specifikacijo.

Je bila najdena srebrna krogla? Ali je čas za pokop OpenVPN in IPSec? Odločil sem se spopasti s tem, hkrati pa sem skript za samodejno namestitev osebnega strežnika VPN.

Načela dela

Načela delovanja lahko opišemo nekako takole:

  • Ustvari se vmesnik WireGuard, ki se mu dodeli zasebni ključ in naslov IP. Naložijo se nastavitve drugih vrstnikov: njihovi javni ključi, naslovi IP itd.
  • Vsi paketi IP, ki prispejo na vmesnik WireGuard, so enkapsulirani v UDP in varno dostavljeno drugi vrstniki.
  • Odjemalci v nastavitvah določijo javni naslov IP strežnika. Strežnik samodejno prepozna zunanje naslove odjemalcev, ko od njih prejme pravilno overjene podatke.
  • Strežnik lahko spremeni javni naslov IP, ne da bi prekinil svoje delo. Hkrati bo poslal opozorilo povezanim odjemalcem in ti bodo sproti posodabljali svojo konfiguracijo.
  • Uporablja se koncept usmerjanja Usmerjanje kripto ključev. WireGuard sprejema in pošilja pakete na podlagi javnega ključa vrstnika. Ko strežnik dešifrira pravilno overjen paket, se preveri njegovo polje src. Če ustreza konfiguraciji allowed-ips avtentificiranega vrstnika, paket prejme vmesnik WireGuard. Pri pošiljanju odhodnega paketa se izvede ustrezen postopek: vzame se dst polje paketa in na podlagi tega se izbere ustrezni peer, paket se podpiše z njegovim ključem, šifrira s ključem peerja in pošlje na oddaljeno končno točko. .

Vsa osnovna logika WireGuarda zavzame manj kot 4 tisoč vrstic kode, medtem ko imata OpenVPN in IPSec več sto tisoč vrstic. Za podporo sodobnim kriptografskim algoritmom se predlaga vključitev novega kriptografskega API-ja v jedro Linuxa cink. Trenutno poteka razprava o tem, ali je to dobra ideja.

Produktivnost

Največja prednost zmogljivosti (v primerjavi z OpenVPN in IPSec) bo opazna v sistemih Linux, saj je WireGuard tam implementiran kot modul jedra. Poleg tega so podprti macOS, Android, iOS, FreeBSD in OpenBSD, vendar v njih WireGuard deluje v uporabniškem prostoru z vsemi posledicami za delovanje. Podpora za Windows naj bi bila dodana v bližnji prihodnosti.

Primerjalni rezultati z uradna spletna stran:

Je WireGuard odličen VPN prihodnosti?

Moje izkušnje z uporabo

Nisem strokovnjak za VPN. Nekoč sem OpenVPN nastavil ročno in je bilo zelo dolgočasno, IPSec pa sploh nisem poskusil. Preveč odločitev je treba sprejeti, zelo enostavno se je ustreliti v nogo. Zato sem vedno uporabljal že pripravljene skripte za konfiguracijo strežnika.

Torej je WireGuard z mojega vidika na splošno idealen za uporabnika. Vse nizkonivojske odločitve so sprejete v specifikaciji, zato postopek priprave tipične VPN infrastrukture traja le nekaj minut. V konfiguraciji je skoraj nemogoče goljufati.

Postopek namestitve podrobno opisano na uradni spletni strani bi rad posebej opozoril na odlično Podpora za OpenWRT.

Šifrirne ključe generira pripomoček wg:

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

Nato morate ustvariti konfiguracijo strežnika /etc/wireguard/wg0.conf z naslednjo vsebino:

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

in dvignite tunel s scenarijem wg-quick:

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

V sistemih s systemd lahko namesto tega uporabite to sudo systemctl start [email protected].

Na odjemalskem računalniku ustvarite konfiguracijo /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 

In dvignite tunel na enak način:

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

Vse, kar ostane, je, da konfigurirate NAT na strežniku, tako da lahko odjemalci dostopajo do interneta, in končali ste!

Ta enostavnost uporabe in kompaktnost baze kode je bila dosežena z odpravo ključne funkcije distribucije. Ni zapletenega sistema potrdil in vse te korporativne groze, kratki šifrirni ključi se distribuirajo podobno kot ključi SSH. Toda to predstavlja težavo: WireGuard ne bo tako enostavno implementirati v nekatera obstoječa omrežja.

Med slabostmi velja omeniti, da WireGuard ne bo deloval prek proxyja HTTP, saj je kot transport na voljo le protokol UDP. Postavlja se vprašanje: ali bo protokol mogoče zamegliti? Seveda to ni neposredna naloga VPN, vendar za OpenVPN na primer obstajajo načini, da se prikrije kot HTTPS, ki prebivalcem totalitarnih držav pomaga v celoti uporabljati internet.

Ugotovitve

Če povzamem, je to zelo zanimiv in obetaven projekt, že lahko ga uporabljate na osebnih strežnikih. Kakšen je dobiček? Visoka zmogljivost v sistemih Linux, enostavna nastavitev in podpora, kompaktna in berljiva baza kode. Vendar je prezgodaj hiteti s prenosom kompleksne infrastrukture na WireGuard; vredno je počakati na njegovo vključitev v jedro Linuxa.

Da bi prihranil svoj (in vaš) čas, sem razvil Samodejni namestitveni program WireGuard. Z njegovo pomočjo lahko nastavite osebni VPN zase in za svoje prijatelje, ne da bi sploh kaj razumeli o tem.

Vir: www.habr.com

Dodaj komentar