
Ka ardhur koha kur VPN nuk është më një mjet ekzotik për administratoret e sistemit me mjekër. Përdoruesit kanë nevoja të ndryshme, por e vërteta është se VPN është bërë i nevojshëm për të gjithë.
Problemi me zgjidhjet aktuale të VPN është se ato janë të vështira për t'u konfiguruar siç duhet, kushtojnë shtrenjtë për t'u mbajtur, dhe kanë shumë kod të trashëguar të dyshimtë.
Disa vite më parë, specialisti kanadez i sigurisë informatike Jason A. Donenfeld vendosi se ishte koha ta ndalte këtë, dhe nisi punën mbi . Tani WireGuard po përgatitet për t'u përfshirë në bërthamën e Linux, madje ka marrë lavdërime nga dhe në .
Avantazhet e deklaruara të WireGuard mbi zgjidhjet e tjera të VPN janë:
- I lehtë për t'u përdorur.
- Përdor kriptografi moderne: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF etj.
- Kod kompakt dhe të lexueshëm, më e lehtë për t'u hetuar për dobësi.
- Performancë e lartë.
- Koncepte të qarta dhe të punuara .
A është gjetur një plumb argjendi? A duhet të varrosim OpenVPN dhe IPSec? Unë vendosa të kuptoj këtë, dhe përveç kësaj, bëra .
Princippin e funksionimit
Parimet e funksionimit mund të përshkruhen për afërsisht në këtë mënyrë:
- Krijohet një ndërfaqe WireGuard, i caktohet një çelës privat dhe një adresë IP. Ngarkohet konfigurimi i pjesëmarrësve të tjerë: çelësat e tyre publikë, adresat IP etj.
- Të gjithë paketat IP që vijnë në ndërfaqen WireGuard inkapsulohen në UDP dhe te pjesëmarrësit e tjerë.
- Klientët vendosin adresën IP publike të serverit në konfigurim. Serveri automatikisht merr informacionin e adresave të jashtme të klientëve kur merr të dhëna të verifikuara.
- Serveri mund të ndryshojë adresën IP publike pa e ndërprerë punën. Në këtë rast, ai do të dërgojë një njoftim klientëve të lidhur dhe ata do të përditësojnë konfigurimin e tyre në kohë reale.
- Përdoret koncepti i rrugëzimit . WireGuard pranon dhe dërgon paketa në përputhje me çelësin publik të pjesëmarrësit. Kur serveri deshifron një paketë të verifikuar siç duhet, kontrollohet fusha e saj src. Në qoftë se ajo përputhet me konfigurimin
allowed-ipse pjesëmarrësit të verifikuar, atëherë paketa pranohen nga ndërfaqja WireGuard. Kur dërgohet një paketë dalëse, ndodh një procedurë e ngjashme: fusha dst e paketës merret dhe për bazë të saj zgjidhet pjesëmarrësi përkatës, paketa nënshkruhet me çelësin e saj, kodifikohet me çelësin e pjesëmarrësit dhe dërgohet në pikën e largët.
Të gjitha logjika kryesore e WireGuard merr më pak se 4 mijë rreshta kodi, ndërsa OpenVPN dhe IPSec kanë qindra mijëra rreshta. Për të mbështetur algoritmët modernë të kriptimit, propozohet të përfshihet një API kriptografik i ri në bërthamën Linux. . Aktualisht po diskutohet nëse kjo është një ide e mirë.
Performanca
Maksimalja e përfitimit në performancë (në krahasim me OpenVPN dhe IPSec) do të jetë e dukshme në sistemet Linux, sepse aty WireGuard realizohet si një modul bërthamor. Përveç kësaj, mbështeten macOS, Android, iOS, FreeBSD dhe OpenBSD, por aty WireGuard funksionon në userspace me të gjitha pasojat për performancën. Mbështetja për Windows premtohet të shtohet në të ardhmen e afërt.
Rezultatet e benchmarkeve me :

Përvoja ime e përdorimit
Nuk jam ekspert në konfigurimin e VPN-ve. Njëherë konfigurisa OpenVPN manualisht dhe ishte shumë e ndërlikuar, ndërsa për IPSec as nuk u përpoqa. Ka shumë vendime për të marrë, shumë lehtësisht mund të të shosh për këmbë. Prandaj gjithmonë kam përdorur skripte të gatshme për konfigurimin e serverit.
Pra, WireGuard, në opinionin tim, është krejtësisht i përsosur për përdoruesit. Të gjitha zgjidhjet në nivel të ulët janë marrë në spesifikimin, kështu që procesi i përgatitjes së infrastrukturës tipike VPN zgjat vetëm disa minuta. Të bësh gabime në konfigurim është praktikisht e pamundur.
Procesi i instalimit në faqen zyrtare, të veçoj mbështetje të shkëlqyer për .
ĂelĂ«sat e kriptimit gjenerohen me mjetin wg:
SERVER_PRIVKEY=$( wg genkey )
SERVER_PUBKEY=$( echo $SERVER_PRIVKEY | wg pubkey )
CLIENT_PRIVKEY=$( wg genkey )
CLIENT_PUBKEY=$( echo $CLIENT_PRIVKEY | wg pubkey )Më pas, duhet të krijoni konfigurimin e serverit /etc/wireguard/wg0.conf me përmbajtjen e mëposhtme:
[Interface]
Address = 10.9.0.1/24
PrivateKey = $SERVER_PRIVKEY
[Peer]
PublicKey = $CLIENT_PUBKEY
AllowedIPs = 10.9.0.2/32dhe të ngrihet tuneli me skriptin wg-quick:
sudo wg-quick up /etc/wireguard/wg0.confNë sistemet me systemd, mund të përdorni në vend të kësaj sudo systemctl start wg-quick@wg0.service.
Në makinën klient, krijoni konfigurimin /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 i jashtëm i serverit
PersistentKeepalive = 25 Dhe njësoj ngrihet tuneli:
sudo wg-quick up /etc/wireguard/wg0.confDuhet të konfigurohet NAT në server, në mënyrë që klientët të mund të dalin në Internet, dhe gjithçka është gati!
Kjo thjeshtësi përdorimi dhe kompaktësia e kodit janë arritur duke hequr dorë nga funksionaliteti i shpërndarjes së çelësave. Nuk ka një sistem të komplikuar certifikatash dhe gjithë këtyre frikësëve korporativë, çelësat e shkurtër të enkriptimit shpërndahen më ose pak si çelësat SSH. Por për këtë lind një problem: WireGuard nuk do të jetë aq e lehtë për t'u integruar në disa rrjeta ekzistuese.
Një nga mangësitë është se WireGuard nuk do të punojë përmes proxy HTTP, pasi transporti është vetëm protokolli UDP. Lind pyetja, a do të jetë e mundur të obfuzosh protokollin? Sigurisht, kjo nuk është një detyrë direkte për VPN, por për OpenVPN, për shembull, ekzistojnë mënyra për t'u maskuar si HTTPS, që ndihmon banorët e vendeve totalitare të përdorin plotësisht Internetin.
Përfundimet
Duke përmbledhur, ky është një projekt shumë interesant dhe premtues, mund të filloni ta përdorni tani në serverët tuaj personalë. Cili është përfitimi? Performancë e lartë në sistemet Linux, thjeshtësi në konfigurim dhe mbështetje, një kod kompakt dhe lexueshme. Megjithatë, është akoma herët të kaloni një infrastrukturë të kompletuar në WireGuard, duhet të presim për përfshirjen e tij në bërthamën e Linux.
Për të kursyer kohën time (dhe tuajën) kam zhvilluar . Me ndihmën e tij mund të ngrini një VPN personale për veten dhe miqtë tuaj, pa pasur nevojë të kuptoni asgjë rreth saj.
Burimi: habr.com
