
Ka arritur koha kur VPN nuk është më një instrument ekzotik i adminëve të sistemit me mjekra. Detyrat e përdoruesve janë të ndryshme, por e vërteta është se VPN-i është bërë i nevojshëm për të gjithë.
Problemi i zgjidhjeve aktuale VPN është se është e vështirë t'i konfigurosh siç duhet, janë të shtrenjta për t'u mbajtur dhe kanë shumë kod legacy të cilësisë dyshimtare.
Disa vjet më parë, specialisti kanadez i sigurisë informatike Jason A. Donenfeld vendosi se ishte mjaft dhe filloi punën mbi . Tani WireGuard po përgatitet të përfshihet në bërthamën e Linux-it, dhe madje ka marrë lëvdata nga dhe në .
Avantazhet e shpallura të WireGuard mbi zgjidhjet e tjera VPN:
- E thjeshtë për t'u përdorur.
- Përdor kriptografi moderne: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, etj.
- Kod kompakt dhe i lexueshëm, më e lehtë për t'u shqyrtuar për dobësi.
- Performancë e lartë.
- Një koncept i qartë dhe i mirëpunuar .
A mos Ă«shtĂ« gjetur njĂ« plumb argjendi? ĂshtĂ« koha t'i japim lamtumirĂ« OpenVPN dhe IPSec? Vendosa tĂ« merrem me kĂ«tĂ« dhe gjithashtu bĂ«ra .
Principet e funksionimit
Principet e funksionimit mund të përshkruhen në këtë mënyrë:
- Krijohet një interface WireGuard, i jepet një çelës privat dhe një adresë IP. Ngarkohet konfigurimi i peer të tjerë: çelësat e tyre publikë, adresat IP, etj.
- Të gjitha paketat IP që vijnë në interfesin WireGuard kapsulohen në UDP dhe tek peer-të e tjerë.
- Këta të fundit vendosin adresën IP publike të serverit në konfigurime. Serveri zbulohet automatikisht adresat e jashtme të klientëve kur ata dërgojnë të dhëna të autentikuara siç duhet.
- Serveri mund të ndryshojë adresën IP publike pa ndërprerë operimin. Në të njëjtën kohë, ai do të dërgojë një njoftim klientëve të lidhur dhe ata do të azhurnojnë konfigurimin e tyre në flakë.
- Përdoret koncepti i ruterizimit . WireGuard pranon dhe dërgon paketa në bazë të çelësit publik të peer-it. Kur serveri dekriptocon një paketë të autentikuar siç duhet, kontrollohet fusha e saj src. Nëse ajo përputhet me konfigurimin
allowed-ipstë peer-it të autentikuar, atëherë paketa pranohet nga interface-i WireGuard. Kur dërgohet një paketë dalëse, ndodh procedura e duhur: merret fusha dst e paketës dhe në bazë të saj përzgjidhet peer-i përgjegjës, paketa nënshkruhet me çelësin e saj, kriptohet me çelësin e peer-it dhe dërgohet në endpoint-in e largët.
E gjithë logjika kryesore e WireGuard zë më pak se 4 mijë rreshta kod, ndërsa OpenVPN dhe IPSec kanë qindra mijëra rreshta. Për të mbështetur algoritmet moderne të kriptografisë, propozohet të përfshihet një API kriptografik i ri në bërthamën e Linux-it. Tani që po diskutohet tani është sa e suksesshme është kjo ide.
Performanca
Avantazhi maksimal në performancë (krahasuar me OpenVPN dhe IPSec) do të jetë i dukshëm në sistemet Linux, pasi aty WireGuard është realizuar si një modul bërthamor. Përveç kësaj, mbështeten macOS, Android, iOS, FreeBSD dhe OpenBSD, por në këto sisteme WireGuard funksionon në userspace me të gjitha pasojat për performancën. Mbështetje për Windows është premtuar që do të shtohet në të ardhmen e afërt.
Rezultatet e benchmarkeve me :

Eksperienca ime e përdorimit
Nuk jam ekspert në konfigurimin e VPN-ve. Një herë kam konfiguruar OpenVPN manualisht dhe ishte shumë e lodhshme, ndërsa për IPSec nuk kam provuar as. Janë shumë shumë vendime për t'u marrë, është shumë e lehtë të lëndosh veten. Prandaj gjithmonë kam përdorur skriptet e gatshme për të konfiguruar serverin.
Pra, WireGuard, sipas mendimit tim, është krejtësisht i përsosur për përdoruesin. Të gjitha zgjidhjet në nivel të ulët janë pranuar në specifikim, kështu që procesi i përgatitjes së një infrastrukture tipike VPN zgjat vetëm disa minuta. Të gabosh në konfigurim është praktikisht e pamundur.
Procesi i instalimit në faqen zyrtare, veçanërisht dua të theksoj mbështetje të shkëlqyer .
ĂelĂ«sat e enkriptimit krijohen nga utilita 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ë ngritni tunelin me skriptin wg-quick:
sudo wg-quick up /etc/wireguard/wg0.confNë sistemet me systemd, mund të përdorni këtë 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 po ashtu ngritni tunelin:
sudo wg-quick up /etc/wireguard/wg0.confDuhet të konfigurohet NAT në server për të lejuar klientët të aksesojnë Internetin, dhe çdo gjë është gati!
Kjo thjeshtësi përdorimi dhe kompaktesi e bazës së kodit është arritur përmes heqjes së funksionalitetit të shpërndarjes së çelësave. Këtu nuk ka një sistem të komplikuar sertifikatash dhe gjithë atij tmerri korporativ, çelësat e shkurtër të enkriptimit shpërndahen si çelësat SSH. Por për shkak të kësaj lind një problem: WireGuard nuk do të jetë kaq e lehtë për t'u implementuar në disa rrjete ekzistuese.
Një nga disavantazhet e tij është se WireGuard nuk do të funksionojë përmes HTTP proxy, pasi protokolli i transportit është vetëm UDP. Lind pyetja, a është e mundur të maskohet protokolli? Sigurisht, kjo nuk është një detyrë e drejtpërdrejtë e VPN, por për OpenVPN, për shembull, ekzistojnë mënyra për ta maskuar atë 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 me perspektivë, tani mund ta përdorim atë në serverët tanë personalë. Cila është përfitimi? Performancë e lartë në sistemet Linux, lehtësi në konfigurim dhe mirëmbajtje, një kod bazë kompakte dhe të lexueshme. Megjithatë, është ende herët për të filluar të përkthejmë infrastrukturën komplekse në WireGuard, është më mirë të presim për ta përfshirë në kernelin e Linux.
Për të kursyer kohën time (dhe tuajën), kam zhvilluar . Me të, mund të krijoni një VPN personale për veten dhe miqtë tuaj pa pasur ndonjë njohuri të thellë në këtë temë.
Burimi: habr.com
