Ang WireGuard ba ang mahusay na VPN ng hinaharap?

Ang WireGuard ba ang mahusay na VPN ng hinaharap?

Dumating ang oras na ang VPN ay hindi na isang kakaibang tool ng mga may balbas na tagapangasiwa ng system. Ang mga gumagamit ay may iba't ibang mga gawain, ngunit ang katotohanan ay ang lahat ay nangangailangan ng isang VPN.

Ang problema sa kasalukuyang mga solusyon sa VPN ay mahirap silang i-configure nang tama, mahal na mapanatili, at puno ng legacy code na kaduda-dudang kalidad.

Ilang taon na ang nakalilipas, nagpasya ang Canadian information security specialist na si Jason A. Donenfeld na sapat na siya rito at nagsimulang magtrabaho sa WireGuard. Inihahanda na ngayon ang WireGuard para sa pagsasama sa Linux kernel at nakatanggap pa ng papuri mula sa Linus Torvalds at Senado ng US.

Inaangkin na mga pakinabang ng WireGuard sa iba pang mga solusyon sa VPN:

  • Madaling gamitin.
  • Gumagamit ng modernong cryptography: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, atbp.
  • Compact, nababasang code, mas madaling imbestigahan para sa mga kahinaan.
  • Mataas na pagganap.
  • Malinaw at detalyado espesipikasyon.

May nakita bang silver bullet? Oras na ba para ilibing ang OpenVPN at IPSec? Nagpasya akong harapin ito, at sa parehong oras ay ginawa ko script para sa awtomatikong pag-install ng isang personal na VPN server.

Mga prinsipyo sa pagtatrabaho

Ang mga prinsipyo ng pagpapatakbo ay maaaring ilarawan tulad nito:

  • Isang WireGuard interface ay nilikha at isang pribadong key at IP address ay itinalaga dito. Ang mga setting ng iba pang mga kapantay ay na-load: ang kanilang mga pampublikong key, mga IP address, atbp.
  • Ang lahat ng mga IP packet na dumarating sa interface ng WireGuard ay naka-encapsulated sa UDP at naihatid nang ligtas ibang mga kapantay.
  • Tinukoy ng mga kliyente ang pampublikong IP address ng server sa mga setting. Awtomatikong kinikilala ng server ang mga panlabas na address ng mga kliyente kapag natanggap nang tama ang data na napatotohanan mula sa kanila.
  • Maaaring baguhin ng server ang pampublikong IP address nang hindi nakakaabala sa trabaho nito. Kasabay nito, magpapadala ito ng alerto sa mga konektadong kliyente at i-update nila ang kanilang configuration on the fly.
  • Ginagamit ang konsepto ng pagruruta Cryptokey Routing. Ang WireGuard ay tumatanggap at nagpapadala ng mga packet batay sa pampublikong key ng peer. Kapag na-decrypt ng server ang isang packet na napatotohanan nang tama, susuriin ang src field nito. Kung tumutugma ito sa pagsasaayos allowed-ips authenticated peer, ang packet ay natanggap ng WireGuard interface. Kapag nagpapadala ng papalabas na packet, ang kaukulang pamamaraan ay nangyayari: ang dst field ng packet ay kinuha at, batay dito, ang kaukulang peer ay pinili, ang packet ay nilagdaan gamit ang susi nito, naka-encrypt gamit ang peer's key at ipinadala sa remote na endpoint .

Ang lahat ng pangunahing lohika ng WireGuard ay tumatagal ng mas mababa sa 4 na libong linya ng code, habang ang OpenVPN at IPSec ay may daan-daang libong linya. Upang suportahan ang mga modernong cryptographic algorithm, iminungkahi na magsama ng bagong cryptographic API sa Linux kernel Sink. Kasalukuyang may talakayan tungkol sa kung ito ay isang magandang ideya.

Pagiging Produktibo

Ang pinakamataas na kalamangan sa pagganap (kumpara sa OpenVPN at IPSec) ay kapansin-pansin sa mga sistema ng Linux, dahil ang WireGuard ay ipinatupad bilang isang kernel module doon. Bilang karagdagan, sinusuportahan ang macOS, Android, iOS, FreeBSD at OpenBSD, ngunit sa kanila ay tumatakbo ang WireGuard sa userspace kasama ang lahat ng kasunod na mga kahihinatnan ng pagganap. Ang suporta sa Windows ay inaasahang maidaragdag sa malapit na hinaharap.

Mga resulta ng benchmark na may opisyal na site:

Ang WireGuard ba ang mahusay na VPN ng hinaharap?

Aking karanasan sa paggamit

Hindi ako eksperto sa VPN. Minsan ay na-set up ko ang OpenVPN nang manu-mano at ito ay nakakapagod, at hindi ko man lang sinubukan ang IPSec. Napakaraming desisyon na dapat gawin, napakadaling barilin ang iyong sarili sa paa. Samakatuwid, palagi akong gumagamit ng mga handa na script upang i-configure ang server.

Kaya, ang WireGuard, mula sa aking pananaw, ay karaniwang perpekto para sa gumagamit. Ang lahat ng mga desisyon sa mababang antas ay ginawa sa detalye, kaya ang proseso ng paghahanda ng isang tipikal na imprastraktura ng VPN ay tumatagal lamang ng ilang minuto. Halos imposibleng manloko sa pagsasaayos.

Proseso ng pag-install inilarawan nang detalyado sa opisyal na website, nais kong hiwalay na tandaan ang mahusay Suporta sa OpenWRT.

Ang mga susi sa pag-encrypt ay nabuo ng utility wg:

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

Susunod, kailangan mong lumikha ng isang config ng server /etc/wireguard/wg0.conf gamit ang sumusunod na nilalaman:

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

at itaas ang tunnel na may script wg-quick:

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

Sa mga system na may systemd maaari mong gamitin ito sa halip sudo systemctl start [email protected].

Sa client machine, lumikha ng isang 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 

At itaas ang tunel sa parehong paraan:

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

Ang natitira na lang ay i-configure ang NAT sa server para ma-access ng mga kliyente ang Internet, at tapos ka na!

Ang kadalian ng paggamit at pagiging compact ng code base ay nakamit sa pamamagitan ng pag-aalis ng pangunahing pagpapagana ng pamamahagi. Walang kumplikadong sistema ng sertipiko at lahat ng corporate horror na ito; ang mga maiikling encryption key ay ipinamamahagi katulad ng mga SSH key. Ngunit nagdudulot ito ng problema: Hindi magiging ganoon kadaling ipatupad ang WireGuard sa ilang umiiral nang network.

Kabilang sa mga disadvantages, ito ay nagkakahalaga ng noting na WireGuard ay hindi gagana sa pamamagitan ng isang HTTP proxy, dahil lamang ang UDP protocol ay magagamit bilang isang transportasyon. Ang tanong ay lumitaw: posible bang i-obfuscate ang protocol? Siyempre, hindi ito ang direktang gawain ng isang VPN, ngunit para sa OpenVPN, halimbawa, may mga paraan upang magkaila ang sarili bilang HTTPS, na tumutulong sa mga residente ng mga totalitarian na bansa na ganap na magamit ang Internet.

Natuklasan

Upang ibuod, ito ay isang napaka-kawili-wili at promising na proyekto, maaari mo na itong gamitin sa mga personal na server. Ano ang tubo? Mataas na performance sa mga Linux system, kadalian ng pag-setup at suporta, compact at readable code base. Gayunpaman, masyadong maaga upang magmadali upang ilipat ang isang kumplikadong imprastraktura sa WireGuard; sulit na maghintay para sa pagsasama nito sa kernel ng Linux.

Upang i-save ang aking (at ang iyong) oras, binuo ko Awtomatikong installer ng WireGuard. Sa tulong nito, maaari kang mag-set up ng isang personal na VPN para sa iyong sarili at sa iyong mga kaibigan nang hindi nauunawaan ang anuman tungkol dito.

Pinagmulan: www.habr.com

Magdagdag ng komento