Este WireGuard marea VPN a viitorului?

Este WireGuard marea VPN a viitorului?

A sosit momentul în care VPN-ul nu mai este un instrument exotic al administratorilor de sistem cu barbă. Utilizatorii au sarcini diferite, dar adevărul este că toată lumea are nevoie de un VPN.

Problema cu soluțiile VPN actuale este că sunt dificil de configurat corect, costisitoare de întreținut și sunt pline de coduri vechi de o calitate îndoielnică.

Cu câțiva ani în urmă, specialistul canadian în securitatea informațiilor Jason A. Donenfeld a decis că s-a săturat și a început să lucreze la WireGuard. WireGuard este acum pregătit pentru includerea în nucleul Linux și chiar a primit laude de la Linus Torvalds și Senatul SUA.

Avantajele revendicate ale WireGuard față de alte soluții VPN:

  • Ușor de folosit.
  • Utilizează criptografia modernă: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF etc.
  • Cod compact, lizibil, mai ușor de investigat pentru vulnerabilități.
  • Performanta ridicata.
  • Clar și elaborat specificație.

A fost găsit un glonț de argint? Este timpul să îngropați OpenVPN și IPSec? Am decis să mă ocup de asta și, în același timp, am făcut-o script pentru instalarea automată a unui server VPN personal.

Principiile muncii

Principiile de funcționare pot fi descrise cam așa:

  • Este creată o interfață WireGuard și îi sunt atribuite o cheie privată și o adresă IP. Se încarcă setările altor colegi: cheile lor publice, adresele IP etc.
  • Toate pachetele IP care ajung la interfața WireGuard sunt încapsulate în UDP și livrat în siguranță alți semeni.
  • Clienții specifică adresa IP publică a serverului în setări. Serverul recunoaște automat adresele externe ale clienților atunci când sunt primite de la aceștia date autentificate corect.
  • Serverul poate schimba adresa IP publică fără a-și întrerupe activitatea. În același timp, va trimite o alertă clienților conectați și aceștia își vor actualiza configurația din mers.
  • Este folosit conceptul de rutare Rutare Cryptokey. WireGuard acceptă și trimite pachete pe baza cheii publice a egalului. Când serverul decriptează un pachet autentificat corect, câmpul său src este verificat. Dacă se potrivește cu configurația allowed-ips peer autentificat, pachetul este primit de interfața WireGuard. La trimiterea unui pachet de ieșire, are loc procedura corespunzătoare: se ia câmpul dst al pachetului și, pe baza acestuia, se selectează peer-ul corespunzător, pachetul este semnat cu cheia sa, criptat cu cheia peer-ului și trimis la punctul final la distanță .

Toată logica de bază a WireGuard ocupă mai puțin de 4 mii de linii de cod, în timp ce OpenVPN și IPSec au sute de mii de linii. Pentru a sprijini algoritmi criptografici moderni, se propune includerea unui nou API criptografic în kernel-ul Linux. zinc. În prezent, există o discuție despre dacă aceasta este o idee bună.

productivitate

Avantajul maxim de performanță (comparativ cu OpenVPN și IPSec) va fi remarcat pe sistemele Linux, deoarece WireGuard este implementat ca modul kernel acolo. În plus, sunt acceptate macOS, Android, iOS, FreeBSD și OpenBSD, dar în ele WireGuard rulează în spațiul utilizatorului cu toate consecințele de performanță care decurg. Se așteaptă ca suportul Windows să fie adăugat în viitorul apropiat.

Rezultatele de referință cu site-ul oficial:

Este WireGuard marea VPN a viitorului?

Experiența mea de utilizare

Nu sunt expert VPN. Am configurat odată OpenVPN manual și a fost foarte obositor și nici nu am încercat IPSec. Sunt prea multe decizii de luat, e foarte ușor să te împuști în picior. Prin urmare, am folosit întotdeauna scripturi gata făcute pentru a configura serverul.

Deci, WireGuard, din punctul meu de vedere, este în general ideal pentru utilizator. Toate deciziile de nivel scăzut sunt luate în specificație, astfel încât procesul de pregătire a unei infrastructuri VPN tipice durează doar câteva minute. Este aproape imposibil să trișezi în configurație.

Procesul de instalare descrisă în detaliu pe site-ul oficial, aș dori să notez separat excelentul Suport OpenWRT.

Cheile de criptare sunt generate de utilitar wg:

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

Apoi, trebuie să creați o configurare a serverului /etc/wireguard/wg0.conf cu urmatorul continut:

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

și ridicați tunelul cu un script wg-quick:

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

Pe sistemele cu systemd, puteți utiliza acest lucru sudo systemctl start [email protected].

Pe computerul client, creați o config /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 

Și ridicați tunelul în același mod:

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

Tot ce rămâne este să configurați NAT pe server, astfel încât clienții să poată accesa Internetul și gata!

Această ușurință în utilizare și compactitatea bazei de cod a fost obținută prin eliminarea funcționalității de distribuție a cheilor. Nu există un sistem complex de certificate și toată această groază corporativă; cheile scurte de criptare sunt distribuite la fel ca cheile SSH. Dar asta ridică o problemă: WireGuard nu va fi atât de ușor de implementat pe unele rețele existente.

Printre dezavantaje, este de remarcat faptul că WireGuard nu va funcționa prin intermediul unui proxy HTTP, deoarece doar protocolul UDP este disponibil ca transport. Apare întrebarea: va fi posibil să se ofusca protocolul? Desigur, aceasta nu este sarcina directă a unui VPN, dar pentru OpenVPN, de exemplu, există modalități de a se deghiza în HTTPS, care îi ajută pe rezidenții țărilor totalitare să folosească pe deplin internetul.

Constatări

Pentru a rezuma, acesta este un proiect foarte interesant și promițător, îl puteți utiliza deja pe servere personale. Care este profitul? Performanță ridicată pe sistemele Linux, ușurință de configurare și suport, bază de cod compactă și lizibilă. Cu toate acestea, este prea devreme să vă grăbiți să transferați o infrastructură complexă către WireGuard; merită să așteptați includerea acesteia în kernel-ul Linux.

Pentru a economisi timpul meu (și al tău) am dezvoltat Instalator automat WireGuard. Cu ajutorul acestuia, poți configura un VPN personal pentru tine și prietenii tăi, fără să înțelegi nimic despre el.

Sursa: www.habr.com

Adauga un comentariu