Ĉu WireGuard estas la bonega VPN de la estonteco?

Ĉu WireGuard estas la bonega VPN de la estonteco?

Venis la tempo, kiam VPN ne plu estas ekzotika ilo de barbaj sistemadministrantoj. Uzantoj havas malsamajn taskojn, sed la fakto estas, ke ĉiuj bezonas VPN.

La problemo kun nunaj VPN-solvoj estas, ke ili malfacilas ĝuste agordi, multekostaj konservi, kaj estas plenaj de hereda kodo de kritikinda kvalito.

Antaŭ pluraj jaroj, kanada specialisto pri informsekureco Jason A. Donenfeld decidis, ke li havis sufiĉe da ĝi kaj komencis labori pri WireGuard. WireGuard nun estas preta por inkludo en la Linukso-kerno kaj eĉ ricevis laŭdon de Linus Torvalds kaj en Usona Senato.

Asertataj avantaĝoj de WireGuard super aliaj VPN-solvoj:

  • Facile uzebla.
  • Uzas modernan kriptografion: Brua protokola kadro, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, ktp.
  • Kompakta, legebla kodo, pli facile esplorebla pri vundeblecoj.
  • Alta rendimento.
  • Klara kaj ellaborita specifo.

Ĉu arĝenta kuglo estis trovita? Ĉu estas tempo enterigi OpenVPN kaj IPSec? Mi decidis trakti ĉi tion, kaj samtempe mi faris skripto por aŭtomate instali personan VPN-servilon.

Principoj de laboro

La funkciaj principoj povas esti priskribitaj kiel ĉi tio:

  • Interfaco WireGuard estas kreita kaj privata ŝlosilo kaj IP-adreso estas asignitaj al ĝi. La agordoj de aliaj samuloj estas ŝarĝitaj: iliaj publikaj ŝlosiloj, IP-adresoj ktp.
  • Ĉiuj IP-pakoj alvenantaj al la WireGuard-interfaco estas enkapsuligitaj en UDP kaj liverita sekure aliaj samuloj.
  • Klientoj specifas la publikan IP-adreson de la servilo en la agordoj. La servilo aŭtomate rekonas la eksterajn adresojn de klientoj kiam ĝuste aŭtentikigitaj datumoj estas ricevitaj de ili.
  • La servilo povas ŝanĝi la publikan IP-adreson sen interrompi sian laboron. Samtempe, ĝi sendos alarmon al konektitaj klientoj kaj ili ĝisdatigos sian agordon sur la flugo.
  • La koncepto de vojigo estas uzata Cryptokey Routing. WireGuard akceptas kaj sendas pakaĵetojn bazitajn sur la publika ŝlosilo de la kunulo. Kiam la servilo deĉifras ĝuste aŭtentikigitan paketon, ĝia src-kampo estas kontrolita. Se ĝi kongruas kun la agordo allowed-ips aŭtentikigita samulo, la pakaĵeto estas ricevita de la WireGuard-interfaco. Sendante elirantan pakaĵon, okazas la responda proceduro: la dst-kampo de la pako estas prenita kaj, surbaze de ĝi, la responda samulo estas elektita, la pakaĵeto estas subskribita per sia ŝlosilo, ĉifrita per la kunula ŝlosilo kaj sendita al la fora finpunkto. .

La tuta kerna logiko de WireGuard okupas malpli ol 4 mil liniojn da kodo, dum OpenVPN kaj IPSec havas centojn da miloj da linioj. Por subteni modernajn kriptografiajn algoritmojn, estas proponite inkludi novan kriptografan API en la Linukso-kerno. zinko. Nuntempe okazas diskuto pri ĉu tio estas bona ideo.

Produkteco

La maksimuma rendimenta avantaĝo (kompare kun OpenVPN kaj IPSec) estos rimarkebla sur Linuksaj sistemoj, ĉar WireGuard estas efektivigita kiel kernomodulo tie. Krome, macOS, Android, iOS, FreeBSD kaj OpenBSD estas subtenataj, sed en ili WireGuard funkcias en uzantspaco kun ĉiuj sekvaj agado-konsekvencoj. Vindoza subteno estas atendita esti aldonita en proksima estonteco.

Benchmark rezultoj kun oficiala retejo:

Ĉu WireGuard estas la bonega VPN de la estonteco?

Mia sperto pri uzo

Mi ne estas spertulo pri VPN. Mi iam agordis OpenVPN permane kaj ĝi estis tre teda, kaj mi eĉ ne provis IPSec. Estas tro da decidoj por fari, estas tre facile pafi vin en la piedon. Tial mi ĉiam uzis pretajn skriptojn por agordi la servilon.

Do, WireGuard, el mia vidpunkto, ĝenerale estas ideala por la uzanto. Ĉiuj malaltnivelaj decidoj estas faritaj en la specifo, do la procezo de preparado de tipa VPN-infrastrukturo daŭras nur kelkajn minutojn. Estas preskaŭ neeble trompi en la agordo.

Instalada procezo priskribita detale en la oficiala retejo, mi ŝatus aparte noti la bonegan OpenWRT-subteno.

Ĉifradaj ŝlosiloj estas generitaj de la utileco wg:

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

Poste, vi devas krei servilan agordon /etc/wireguard/wg0.conf kun la jena enhavo:

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

kaj levi la tunelon per skripto wg-quick:

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

Sur sistemoj kun systemd vi povas uzi ĉi tion anstataŭe sudo systemctl start [email protected].

Sur la klienta maŝino, kreu agordon /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 

Kaj levu la tunelon en la sama maniero:

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

Restas nur agordi NAT en la servilo por ke klientoj povu aliri la Interreton, kaj vi finis!

Ĉi tiu facileco de uzo kaj kompakteco de la kodbazo estis atingitaj per forigo de la ŝlosila distribufunkcio. Ne ekzistas kompleksa atestsistemo kaj ĉi tiu tuta kompania teruro; mallongaj ĉifradaj ŝlosiloj estas distribuitaj tre kiel SSH-ŝlosiloj. Sed ĉi tio prezentas problemon: WireGuard ne estos tiel facile efektivigi sur iuj ekzistantaj retoj.

Inter la malavantaĝoj, indas noti, ke WireGuard ne funkcios per HTTP-prokurilo, ĉar nur la UDP-protokolo disponeblas kiel transportilo. Estiĝas la demando: ĉu eblos malklarigi la protokolon? Kompreneble, ĉi tio ne estas la rekta tasko de VPN, sed por OpenVPN, ekzemple, ekzistas manieroj alivesti sin kiel HTTPS, kiu helpas loĝantojn de totalismaj landoj plene uzi Interreton.

trovoj

Resume, ĉi tio estas tre interesa kaj promesplena projekto, vi jam povas uzi ĝin en personaj serviloj. Kio estas la profito? Alta rendimento en Linuksaj sistemoj, facileco de aranĝo kaj subteno, kompakta kaj legebla koda bazo. Tamen, estas tro frue por rapidi por transdoni kompleksan infrastrukturon al WireGuard; indas atendi ĝian inkludon en la Linukso-kerno.

Por ŝpari mian (kaj vian) tempon, mi disvolviĝis WireGuard aŭtomata instalilo. Kun ĝia helpo, vi povas agordi personan VPN por vi mem kaj viaj amikoj sen eĉ kompreni ion ajn pri ĝi.

fonto: www.habr.com

Aldoni komenton