WireGuard — lielisks VPN nākotnei?

WireGuard — lielisks VPN nākotnei?

Ir pienācis laiks, kad VPN vairs nav eksotisks instruments bārdainajiem sistēmu administrētājiem. Lietotāju uzdevumi ir dažādi, taču fakts ir tāds, ka VPN kļuva nepieciešams visiem.

Pašreizējo VPN risinājumu problēma ir tā, ka tos ir grūti pareizi konfigurēt, dārgi apkalpot, un tajos ir daudz apšaubāmas kvalitātes mantojuma koda.

Pirms dažiem gadiem Kanādas kiberdrošības speciālists Jason A. Donenfeld nolēma, ka pietiek ar šo situāciju, un uzsāka darbu pie WireGuard. Tagad WireGuard gatavojas iekļaušanai Linux kodolā, tam ir pat saņemtas atzinības no Linusa Torvalda un Amerikas senātā.

WireGuard norādītās priekšrocības salīdzinājumā ar citiem VPN risinājumiem:

  • Vienkārši lietojams.
  • Izmanto mūsdienīgu kriptogrāfiju: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF utt.
  • Kompakts, saprotams kods, vieglāk pētīt ievainojamības.
  • Augsta veiktspēja.
  • Skaidra un izstrādāta specifikācija.

Vai tiešām ir atrasta sudraba lode? Vai laiks apglabāt OpenVPN un IPSec? Es nolēmu to noskaidrot un pašlaik esmu izstrādājis skriptu personīga VPN servera automātiskai uzstādīšanai.

Darbības principi

Darba principi varētu tikt aprakstīti šādi:

  • Izveidojas WireGuard interfeiss, tam tiek piešķirts privāts atslēgas un IP adrese. Tiek ielādēti citu mezglu iestatījumi: viņu publiskās atslēgas, IP adreses utt.
  • Visi IP paketi, kas ierodas uz WireGuard interfeisa, tiek ielikt UDP un droši piegādāti citiem mezgliem.
  • Klienti iestata servera publisko IP adresi savos iestatījumos. Serveris automātiski uzzina klientu ārējās adreses, kad no tiem saņem pareizi autentificētus datus.
  • Serveris var mainīt publisko IP adresi, nepārtraucot darbu. Tajā pašā laikā tas paziņos pievienotajiem klientiem, un viņi atjauninās savu konfigurāciju uz vietas.
  • Tiek izmantota maršrutēšanas koncepcija Cryptokey Routing. WireGuard pieņem un sūta paketes, pamatojoties uz mezgla publisko atslēgu. Kad serveris pareizi atšifrē autentificēto paketi, tiek pārbaudīts tās src lauks. Ja tas atbilst konfigurācijai allowed-ips authentificēta pira, tad pakete tiek pieņemta WireGuard saskarē. Sūtot izejošo paketi, notiek attiecīgā procedūra: tiek ņemts dst lauks paketē un, pamatojoties uz tā, tiek izvēlēts attiecīgais pirs, pakete tiek parakstīta ar savu atslēgu, šifrēta ar pira atslēgu un nosūtīta uz attālo galapunktu.

Visa pamatloģika WireGuard aizņem mazāk par 4 tūkstošiem rindiņu koda, kamēr OpenVPN un IPSec ir simtiem tūkstošu rindiņu. Lai atbalstītu mūsdienu kriptovalūtu algoritmus, plānots iekļaut Linux kodolā jaunu kriptogrāfisko API. Cinks. Šobrīd notiek diskusijas par to, cik veiksmīga ir šī ideja.

Veiktspēja

Maksimālais veiktspējas ieguvums (salīdzinot ar OpenVPN un IPSec) būs pamanāms Linux sistēmās, jo tur WireGuard tiek realizēts kā kodola modulis. Turklāt tiek atbalstīti macOS, Android, iOS, FreeBSD un OpenBSD, taču tajās WireGuard darbojas userspace, ar visām tā radītajām sekām veiktspējā. Atbalstu Windows sola pievienot drīzumā.

Benchmarku rezultāti ar oficiālās vietnes:

WireGuard — lielisks VPN nākotnei?

Mans pieredzes stāsts

Es neesmu VPN uzstādīšanas eksperts. Reiz es manuāli iestatīju OpenVPN, un tas bija ļoti nogurdinoši, bet IPSec pat neesmu mēģinājis. Pārāk daudz lēmumu jāpieņem, un ir ļoti viegli nosist sevi kājā. Tāpēc es vienmēr esmu izmantojis gatavas skriptu sistēmas servera iestatīšanai.

Nu, WireGuard, manuprāt, ir ideāls lietotājam. Visas zema līmeņa risinājumi ir iekļauti specifikācijā, tāpēc tipiskas VPN infrastruktūras sagatavošanas process aizņem tikai dažas minūtes. Pārkonfigurēt praktiski nav iespējams.

Uzstādīšanas process ir detalizēti aprakstīts oficiālajā vietnē, atsevišķi jāuzsver lieliska OpenWRT atbalsts.

Šifrēšanas atslēgas ģenerē ar rīku wg:

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

Tālāk jāizveido servera konfigurācija /etc/wireguard/wg0.conf ar sekojošu saturu:

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

un jāuzsākt tunelis ar skriptu wg-quick:

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

Sistēmās ar systemd šo vietā var izmantot sudo systemctl start wg-quick@wg0.service.

Klienta mašīnā izveidot konfigurāciju /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 # Servera ārējais IP
PersistentKeepalive = 25 

Un tieši tāpat uzsākt tuneli:

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

Jāuzstāda NAT serverī, lai klienti varētu piekļūt internetam, un viss ir gatavs!

Šādu vienkāršību un kompakto koda bāzi izdevās sasniegt, atteicoties no atslēgu izplatīšanas funkcionalitātes. Šeit nav sarežģītas sertifikātu sistēmas un visa šī korporatīvā šausmīga, īsas šifrēšanas atslēgas tiek izplatītas aptuveni tāpat kā SSH atslēgas. Taču šajā sakarā rodas problēma: WireGuard nebūs tik viegli integrēt dažās jau esošās tīklos.

No trūkumiem jāatzīmē, ka WireGuard nedarbosies caur HTTP proksiju, jo transportam tiek izmantots tikai UDP protokols. Rodas jautājums, vai būs iespējams obfusēt protokolu? Protams, tas nav tiešs VPN uzdevums, bet OpenVPN, piemēram, pastāv veidi, kā maskēties kā HTTPS, kas palīdz totalitāro valstu iedzīvotājiem pilnvērtīgi izmantot internetu.

Secinājumi

Noslēdzot, tas ir ļoti interesants un solīgs projekts, to var jau tagad izmantot personālajos servidores. Kādi ieguvumi? Augsta veiktspēja Linux sistēmās, vienkārša iestatīšana un atbalsts, kompakta un lasāma koda bāze. Tomēr vēl ir pāragri ārdīt kompleksu infrastruktūru uz WireGuard, ir vērts gaidīt integrāciju Linux kodolā.

Lai ietaupītu savu (un jūsu) laiku, es izstrādāju automātisko WireGuard instalētāju. Ar tā palīdzību jūs varat uzstādīt personīgu VPN sev un saviem paziņām pat neko daudz nesaprotot par šo procesu.

Avots: habr.com

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster