Vai WireGuard ir lieliskais nākotnes VPN?

Vai WireGuard ir lieliskais nākotnes VPN?

Ir pienācis laiks, kad VPN vairs nav kāds eksotisks bārdainu sistēmu administratoru rīks. Lietotājiem ir dažādi uzdevumi, taču fakts ir tāds, ka ikvienam ir nepieciešams VPN.

Pašreizējo VPN risinājumu problēma ir tā, ka tos ir grūti pareizi konfigurēt, tos ir dārgi uzturēt, un tie ir pilni ar apšaubāmas kvalitātes mantoto kodu.

Pirms vairākiem gadiem kanādiešu informācijas drošības speciālists Džeisons A. Donenfelds nolēma, ka viņam ar to ir gana, un sāka strādāt pie WireGuard. WireGuard tagad tiek gatavots iekļaušanai Linux kodolā un pat saņēmis atzinību no Linuss Torvalds un ASV Senāts.

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

  • Ērti lietojams.
  • Izmanto modernu kriptogrāfiju: Noise protokolu ietvars, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF u.c.
  • Kompakts, lasāms kods, vieglāk izmeklēt ievainojamības.
  • Augsta veiktspēja.
  • Skaidrs un izstrādāts specifikācija.

Vai ir atrasta sudraba lode? Vai ir pienācis laiks aprakt OpenVPN un IPSec? Es nolēmu ar to tikt galā, un tajā pašā laikā es to darīju skripts personiskā VPN servera automātiskai instalēšanai.

Darba principi

Darbības principus var aprakstīt šādi:

  • Tiek izveidots WireGuard interfeiss, un tam tiek piešķirta privātā atslēga un IP adrese. Tiek ielādēti citu vienaudžu iestatījumi: viņu publiskās atslēgas, IP adreses utt.
  • Visas IP paketes, kas nonāk WireGuard saskarnē, ir iekapsulētas UDP un piegādāts droši citi vienaudži.
  • Klienti iestatījumos norāda servera publisko IP adresi. Serveris automātiski atpazīst klientu ārējās adreses, kad no tiem tiek saņemti pareizi autentificēti dati.
  • Serveris var mainīt publisko IP adresi, nepārtraucot savu darbu. Tajā pašā laikā tas nosūtīs brīdinājumu savienotajiem klientiem, un viņi lidojuma laikā atjauninās savu konfigurāciju.
  • Tiek izmantots maršrutēšanas jēdziens Kriptoatslēgas maršrutēšana. WireGuard pieņem un nosūta paketes, pamatojoties uz vienādranga publisko atslēgu. Kad serveris atšifrē pareizi autentificētu paketi, tiek pārbaudīts tās src lauks. Ja tas atbilst konfigurācijai allowed-ips autentificēts līdzinieks, paketi saņem WireGuard interfeiss. Nosūtot izejošo paketi, notiek atbilstošā procedūra: tiek ņemts paketes lauks dst un, pamatojoties uz to, tiek atlasīts atbilstošais līdzinieks, pakete tiek parakstīta ar tās atslēgu, šifrēta ar partnera atslēgu un nosūtīta uz attālo galapunktu. .

Visa WireGuard pamata loģika aizņem mazāk nekā 4 tūkstošus koda rindiņu, savukārt OpenVPN un IPSec ir simtiem tūkstošu rindiņu. Lai atbalstītu mūsdienu kriptogrāfijas algoritmus, tiek ierosināts iekļaut jaunu kriptogrāfijas API Linux kodolā Cinks. Pašlaik notiek diskusija par to, vai tā ir laba ideja.

Производительность

Maksimālā veiktspējas priekšrocība (salīdzinājumā ar OpenVPN un IPSec) būs pamanāma Linux sistēmās, jo WireGuard tur ir ieviests kā kodola modulis. Turklāt tiek atbalstītas macOS, Android, iOS, FreeBSD un OpenBSD, taču tajās WireGuard darbojas lietotāja telpā ar visām no tā izrietošajām veiktspējas sekām. Paredzams, ka tuvākajā nākotnē tiks pievienots Windows atbalsts.

Etalona rezultāti ar oficiālā vietne:

Vai WireGuard ir lieliskais nākotnes VPN?

Mana lietošanas pieredze

Es neesmu VPN eksperts. Es reiz iestatīju OpenVPN manuāli, un tas bija ļoti nogurdinoši, un es pat neizmēģināju IPSec. Ir pārāk daudz lēmumu, kas jāpieņem, ir ļoti viegli iešaut sev kājā. Tāpēc servera konfigurēšanai vienmēr izmantoju gatavus skriptus.

Tātad, WireGuard, no mana viedokļa, parasti ir ideāls lietotājam. Visi zema līmeņa lēmumi tiek pieņemti specifikācijā, tāpēc tipiskas VPN infrastruktūras sagatavošanas process aizņem tikai dažas minūtes. Konfigurācijā ir gandrīz neiespējami krāpties.

Uzstādīšanas process sīki aprakstīts oficiālajā vietnē es vēlētos atsevišķi atzīmēt izcilo OpenWRT atbalsts.

Šifrēšanas atslēgas ģenerē utilīta 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 jums ir jāizveido servera konfigurācija /etc/wireguard/wg0.conf ar šādu saturu:

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

un paceliet tuneli ar skriptu wg-quick:

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

Sistēmās ar systemd varat to izmantot tā vietā sudo systemctl start [email protected].

Klienta datorā izveidojiet 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 # Внешний IP сервера
PersistentKeepalive = 25 

Un paceliet tuneli tādā pašā veidā:

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

Atliek tikai konfigurēt NAT serverī, lai klienti varētu piekļūt internetam, un esat pabeidzis!

Šī koda bāzes lietošanas vienkāršība un kompaktums tika panākts, likvidējot atslēgu izplatīšanas funkcionalitāti. Nav sarežģītas sertifikātu sistēmas un visas šīs korporatīvās šausmas; īsās šifrēšanas atslēgas tiek izplatītas līdzīgi kā SSH atslēgas. Bet tas rada problēmu: WireGuard nebūs tik viegli ieviest dažos esošajos tīklos.

Starp trūkumiem ir vērts atzīmēt, ka WireGuard nedarbosies, izmantojot HTTP starpniekserveri, jo kā transports ir pieejams tikai UDP protokols. Rodas jautājums: vai izdosies apmulsināt protokolu? Protams, tas nav VPN tiešais uzdevums, taču, piemēram, OpenVPN ir veidi, kā maskēties kā HTTPS, kas palīdz totalitāro valstu iedzīvotājiem pilnvērtīgi izmantot internetu.

Atzinumi

Rezumējot, šis ir ļoti interesants un daudzsološs projekts, to jau var izmantot personīgajos serveros. Kāda ir peļņa? Augsta veiktspēja Linux sistēmās, vienkārša iestatīšana un atbalsts, kompakta un lasāma kodu bāze. Tomēr ir pāragri steigties nodot sarežģītu infrastruktūru WireGuard, ir vērts gaidīt tās iekļaušanu Linux kodolā.

Lai ietaupītu savu (un jūsu) laiku, es izstrādāju WireGuard automātiskais instalētājs. Ar tās palīdzību jūs varat iestatīt personīgo VPN sev un saviem draugiem, pat neko par to nesaprotot.

Avots: www.habr.com

Pievieno komentāru