
On aeg, mil VPN ei ole enam eksootiline tööriist bragard-sĂŒsteemide haldajate jaoks. Kasutajatel on erinevad vajadused, kuid tĂ”siasi on see, et VPN on vajalik kĂ”igile.
Praeguste VPN-lahenduste probleem on see, et neid on keeruline Ôigesti seadistada, nad on kallid hooldada ning neis on palju kahtlase kvaliteediga vana koodi.
MĂ”ned aastat tagasi otsustas Kanada kĂŒberjulgeoleku ekspert Jason A. Donenfeld, et on aeg see kĂ”ik lĂ”petada, ja hakkas töötama . Praegu valmistub WireGuard Linuxi tuuma kaasamiseks, ta on isegi saanud kiitust ja .
WireGuardi vÀlja reklaamitavad eelised vÔrreldes teiste VPN lahendustega:
- Lihtne kasutada.
- Kasutab kaasaegset krĂŒptograafiat: Noise protokolliraamistik, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF jne.
- Kompaktne ja loetav kood, lihtsam haavatavuste uurimiseks.
- KÔrge jÔudlus.
- Selge ja pÔhjalik .
Kas on leitud hÔbedane kuul? Kas OpenVPN ja IPSec on aeg matta? Otsustasin sellega tegeleda ja tegin .
TööpÔhimÔtted
TööpÔhimÔtteid vÔib kirjeldada umbes nii:
- Luuakse WireGuardi liides, millele mÀÀratakse privaatvÔti ja IP-aadress. Laaditakse teiste peeride seaded: nende avalikud vÔtmed, IP-aadressid jne.
- KÔik IP-paketid, mis jÔuavad WireGuardi liidesele, kapseldatakse UDP-sse ja teistele peeridele.
- Kliendid mÀÀravad serveri avaliku IP-aadressi seadetes. Server tuvastab automaatselt klientide vÀlised aadressid, kui need saadavad Ôigesti autentitud andmeid.
- Server vĂ”ib avalikku IP-aadressi muuta katkestamata tööd. Sel juhul saadab see teate ĂŒhendatud klientidele ning nad vĂ€rskendavad oma konfiguratsiooni koheselt.
- Kasutatakse marsruutimise kontseptsiooni . WireGuard vĂ”tab ja saadab pakette avaliku vĂ”tme alusel. Kui server dekrĂŒpteerib Ă”igesti autentitud paketi, kontrollitakse selle src vĂ€lja. Kui see vastab konfiguratsioonile
allowed-ipsautentitud piiri jaoks, siis pakett vĂ”etakse WireGuardi liidese poolt. VĂ€ljuva paketi saatmisel toimub vastav protseduur: vĂ”etakse pakkide dst vĂ€li ja selle alusel valitakse vastav piir, pakett allkirjastatakse oma vĂ”tmega, krĂŒpteeritakse piiri vĂ”tmega ja saadetakse kaug-otsingupunktile.
Kogu WireGuard'i pĂ”hiloogika koosneb vĂ€hem kui 4000 koodireast, samas kui OpenVPN ja IPSec sisaldavad sadu tuhandeid ridu. Kaasaegsete krĂŒptoalgoritmide toetamiseks on soovitatav lisada Linuxi kehasse uus krĂŒptograafiline API. . Praegu arutatakse, kui hea mĂ”te see on.
Tootlikkus
Maksimaalne jĂ”udlus (vĂ”rreldes OpenVPN ja IPSec'iga) on mĂ€rgatav Linuxi sĂŒsteemides, kuna WireGuard on seal realiseeritud sĂŒsteemimoodulina. Lisaks toetatakse macOSi, Androidi, iOS-i, FreeBSD-d ja OpenBSD-d, kuid seal töötab WireGuard userspace'is, millel on kĂ”ik sellest tulenevad jĂ”udluse probleemid. Windowsi tuge lubatakse lisada lĂ€hitulevikus.
MÔÔdistamise tulemused :

Minu kogemus
Ma ei ole VPN-i seadistamise ekspert. Kord seadistasin OpenVPN'i kÀsitsi ja see oli vÀga vaevaline, IPSec'i ei proovinud ma isegi. Liiga palju otsuseid tuleb langetada, on vÀga lihtne enda vastu eksida. SeetÔttu olen alati kasutanud valmis skripte serveri seadistamiseks.
WireGuard on minu arvates ideaalne kasutajale. KÔik madalama taseme lahendused on spetsifikatsioonis kirjas, seega tavapÀrase VPN-infrastruktuuri seadistamine vÔtab vaid mÔne minuti. Konfiguratsioonis eksimine on praktiliselt vÔimatu.
Installimisprotsess ametlikul veebisaidil, eraldi tahaksin mÀrkida suurepÀrast .
Ć ifreerimisvĂ”tmed genereeritakse utiliidiga wg:
SERVER_PRIVKEY=$( wg genkey )
SERVER_PUBKEY=$( echo $SERVER_PRIVKEY | wg pubkey )
CLIENT_PRIVKEY=$( wg genkey )
CLIENT_PUBKEY=$( echo $CLIENT_PRIVKEY | wg pubkey )SeejÀrel tuleb luua serveri konfigureerimine /etc/wireguard/wg0.conf jÀrgnevate sisuga:
[Interface]
Address = 10.9.0.1/24
PrivateKey = $SERVER_PRIVKEY
[Peer]
PublicKey = $CLIENT_PUBKEY
AllowedIPs = 10.9.0.2/32ja tĂ”sta tunnel ĂŒles skripti abil wg-quick:
sudo wg-quick up /etc/wireguard/wg0.confSystemd sĂŒsteemides saab kasutada ka jĂ€rgmist sudo systemctl start wg-quick@wg0.service.
Kliendi masinas luua konfigureerimine /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 # Serveri vÀline IP
PersistentKeepalive = 25 Ja samamoodi tĂ”sta tunnel ĂŒles:
sudo wg-quick up /etc/wireguard/wg0.confJÀÀb vaid seadistada NAT serveris, et kliendid saaksid internetti pÀÀseda, ja kÔik on valmis!
Sellise kasutusmugavuse ja koodi kompaktsete vĂ”imaluste saavutamine Ă”nnestus tĂ€nu sellele, et loobuti vĂ”tmete jaotamise funktsioonist. Siin pole keerulist sertifikaadisĂŒsteemi ega seda kĂ”ike ettevĂ”tete Ă”udust, lĂŒhikesed krĂŒpteerimisvĂ”tmed levivad umbes nagu SSH-vĂ”tmed. Kuid sellega kaasneb probleem: WireGuard'i ei ole nii lihtne rakendada mĂ”nedes juba olemasolevates vĂ”rkudes.
Puudustest tasub mĂ€rkida, et WireGuard ei tööta HTTP-proxy kaudu, kuna transportimiseks on saadaval ainult UDP-protokoll. TĂ”statub kĂŒsimus, kas protokolli on vĂ”imalik obfuskeerida? Muidugi, see ei ole VPN-i otsene ĂŒlesanne, kuid nĂ€iteks OpenVPN-i jaoks on olemas viise HTTPS-i all kamufleerimise jaoks, mis aitab totalitaarsetes riikides elavatel inimestel Interneti kasutamist tĂ€ielikult Ă€ra kasutada.
JĂ€reldused
KokkuvĂ”tteks on see vĂ€ga huvitav ja paljulubav projekt, mida saab juba praegu kasutada isiklikel serveritel. Milline kasu? KĂ”rge jĂ”udlus Linuxi sĂŒsteemides, seadistamise ja haldamise lihtsus, kompaktne ja loetav koodibaas. Siiski on veel vara hakata keerulist infrastruktuuri WireGuard'ile ĂŒle viima, tasub oodata, kuni see lisatakse Linuxi tuumasse.
Oma (ja teie) aja kokkuhoiu nimel olen vÀlja töötanud . Nende abiga saate luua isikliku VPN-i endale ja oma tuttavatele, isegi kui te sellest midagi ei tea.
Allikas: habr.com
