WireGuard — odličan VPN budućnosti?

WireGuard — odličan VPN budućnosti?

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

Težava aktualnih VPN rešitev je v tem, da jih je težko pravilno nastaviti, drago jih je vzdrževati, poleg tega pa vsebujejo veliko dediščine dvomljive kakovosti.

Pred nekaj leti je kanadski strokovnjak za informacijsko varnost Jason A. Donenfeld sklenil, da je dovolj in začel delati na WireGuard. Danes se WireGuard pripravlja na vključitev v jedro Linuxa in je celo prejel pohvale od Linusa Torvaldsa in v ameriškega senata.

Izpostavljene prednosti WireGuard pred drugimi VPN rešitvami:

  • Enostaven za uporabo.
  • Uporablja sodobno kriptografijo: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF itd.
  • Kompaktna in berljiva koda, lažje raziskovati na ranljivosti.
  • Visoke performanse.
  • Jasno in premišljeno спецификация.

Ali je res najdena srebrna krogla? Čas je, da pokopljemo OpenVPN in IPSec? Odločil sem se, da to razjasnim, ob tem pa sem naredil skripto za samodejno nastavitev osebnega VPN strežnika.

Načela delovanja

Načela delovanja lahko opišemo približno takole:

  • Ustvari se WireGuard vmesnik, dodeli mu se zasebni ključ in IP naslov. Naložijo se nastavitve drugih peers: njihovi javni ključi, IP naslovi itd.
  • Vsi IP paketi, ki prispejo na WireGuard vmesnik, se encapsulirajo v UDP in varno dostavljajo drugim peers.
  • Stranke v nastavitvah določijo javni IP naslov strežnika. Strežnik samodejno spozna zunanje naslove strank, ko od njih prejme pravilno overjene podatke.
  • Strežnik lahko spremeni javni IP naslov, ne da bi prekinil delovanje. Ob tem pošlje obvestilo povezanih strankam, ki nato posodobijo svojo konfiguracijo v realnem času.
  • Uporablja se koncept usmerjanja Cryptokey Routing. WireGuard sprejema in pošilja pakete na podlagi javnega ključa peers. Ko strežnik pravilno dešifrira overjen paket, preveri njegovo src polje. Če se ujema s konfiguracijo allowed-ips overjenega peers, se paket sprejme na WireGuard vmesniku. Pri pošiljanju izhodnega paketa se izvede ustrezen postopek: vzame se dst polje paketa in na njegovi podlagi se izbere ustrezni peer, paket se podpiše z lastnim ključem, šifriran s peerovim ključem in se pošlje na oddaljeno točko.

Vsa osnovna logika WireGuard zavzema manj kot 4.000 vrstic kode, medtem ko OpenVPN in IPSec imata na tisoče vrstic. Za podporo sodobnim kripto algoritmom se predlaga, da se vključi nov kriptografski API v jedro Linuxa. ZincTrenutno se raspravlja o tome koliko je to dobra ideja.

Performansa

Maksimalna prednost u performansama (u poređenju sa OpenVPN i IPSec) biće primetna na Linux sistemima, jer je WireGuard implementiran kao modul jezgra. Takođe podržani su macOS, Android, iOS, FreeBSD i OpenBSD, ali se na njima WireGuard izvršava u korisničkom prostoru sa svim posljedicama po performanse. Podrška za Windows najavljena je za skoro.

Rezultati benchmarka sa službene stranice:

WireGuard — odličan VPN budućnosti?

Moj iskustvo korišćenja

Nisam stručnjak za podešavanje VPN-a. Jednom sam podešavao OpenVPN ručno i to je bilo prilično iscrpljujuće, a IPSec nikad nisam ni pokušavao. Previše odluka treba doneti, lako se može napraviti greška. Zato sam uvek koristio gotove skripte za postavljanje servera.

Dakle, WireGuard je, po mom mišljenju, apsolutno idealan za korisnike. Sva niskonivenska rešenja su obuhvaćena specifikacijom, tako da priprema tipične VPN infrastrukture traje samo nekoliko minuta. Gotovo je nemoguće napraviti grešku u konfiguraciji.

Postopek namestitve je podrobno opisan na uradni spletni strani, posebej želim poudariti odlično podporo OpenWRT.

Ključevi za šifrovanje se generišu putem alata wg:

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

Zatim je potrebno kreirati server konfiguraciju /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

i podići tunel skriptom wg-quick:

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

Na sistemima sa systemd, umesto toga možete koristiti sudo systemctl start wg-quick@wg0.service.

Na klijentskom računaru, kreirati konfiguraciju /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 # Spoljni IP servera
PersistentKeepalive = 25 

I na isti način podići tunel:

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

Preostaje podesiti NAT na serveru kako bi klijenti mogli da izlaze na Internet, i sve je spremno!

Ovu jednostavnost korišćenja i kompaktnost kôda postignuta je odbacivanjem funkcionalnosti distribucije ključeva. Nema složenog sistema sertifikata i svega tog korporativnog užasa, kratki ključevi šifrovanja se distribuiraju otprilike kao SSH ključevi. Međutim, to donosi problem: neće biti jednostavno implementirati WireGuard u nekim već postojećim mrežama.

Med pomanjkljivostmi je treba omeniti, da WireGuard ne deluje preko HTTP proxy, saj kot transport uporablja samo protokol UDP. Pojavi se vprašanje, ali bi bilo mogoče protokol obfucirati? Seveda to ni neposredno naloga VPN, vendar za OpenVPN na primer obstajajo načini za maskiranje pod HTTPS, kar pomaga prebivalcem totalitarnih držav, da v polni meri uporabljajo internet.

Zaključki

Na kratko, to je zelo zanimiv in obetaven projekt, ki ga je mogoče že zdaj uporabljati na osebnih strežnikih. Kakšna je prednost? Visoka zmogljivost na sistemih Linux, enostavna nastavitev in podpora, kompaktna in berljiva koda. Vendar pa je prezgodaj, da bi se hitro preusposobili na kompleksno infrastrukturo WireGuard, zato je bolje počakati na vključitev v jedro Linux.

Za varčevanje s svojim (in vašim) časom sem razvil samodejni namestitveni program WireGuard. Z njegovo pomočjo lahko postavite osebni VPN zase in svoje znance, ne da bi morali kaj vedeti o tem.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster