
On aeg, mil VPN ei ole enam eksootiline tööriist habemikest sĂŒsteemihalduritele. Kasutajatel on erinevad vajadused, kuid tĂ”siasi on see, et VPN on muutunud kĂ”igile vajalikuks.
Praeguste VPN-lahenduste probleemiks on see, et nende Ôigesti seadistamine on keeruline, hooldus kallis ja nendes on palju kahtlase kvaliteediga pÀrandkoodi.
MĂ”ned aastad tagasi otsustas Kanada kĂŒberturvalisuse spetsialist Jason A. Donenfeld, et on aeg selle olukorraga hakkama saada, ja alustas töötamist . Praegu valmistatakse WireGuard ette Linuxi tuuma lisamiseks, ta on saanud isegi kiidusĂ”nu ja .
WireGuardi vÀidetavad eelised teiste VPN-lahenduste ees:
- Lihtne kasutada.
- Kasutab kaasaegseid krĂŒptograafiat: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF jne.
- Kompaktne ja loetav kood, kergem uurida haavatavuste osas.
- KÔrge tootlikkus.
- Selge ja lÀbimÔeldud .
Kas see on tÔeliselt leidunud hÔbemÔru? Kas OpenVPN ja IPSec on aeg matta? Otsustasin selle vÀlja selgitada ja tegin samal ajal .
Tööprintsiibid
Tööprintsiibe saab kirjeldada jÀrgmiselt:
- Looge WireGuardi liides, mÀÀrake sellele privaatne vÔti ja IP-aadress. Laadige teiste peers'ide seadistused: nende avalikud vÔtmed, IP-aadressid jne.
- KÔik IP-paketid, mis saabuvad WireGuardi liidesesse, kapseldatakse UDP-sse ja teistesse peers'idesse.
- Kliendid mÀÀravad seadistustes serveri avaliku IP-aadressi. Server tÀpsustab automaatselt klientide vÀlised aadressid, kui need saavad Ôigesti autentitud andmed.
- Server vĂ”ib muuta avalikku IP-aadressi, katkestamata tööd. Sel juhul saadab ta ĂŒhendatud klientidele teate, et nad uuendavad oma konfiguratsiooni reaalajas.
- Kasutatakse marsruutimise . WireGuard vastutab pakettide vastuvÔtmise ja saatmise eest avaliku vÔtme alusel. Kui server dekodeerib korralikult autentitud paketi, kontrollitakse selle src vÀlja. Kui see vastab konfiguratsioonile
allowed-ipsautentitud peer'ile, siis vĂ”tab WireGuard paketi vastu. VĂ€lja saadetava paketi saatmise korral toimub vastav protseduur: vĂ”etakse dst vĂ€lja paketist ja selle alusel valitakse sobiv peer, pakett allkirjastatakse oma vĂ”tmega, krĂŒpteeritakse peer'i vĂ”tmega ja saadetakse kaugservisse.
Kogu WireGuard'i pĂ”hiloogika maht on vĂ€hem kui 4000 rida koodi, samas kui OpenVPN ja IPSec sisaldavad sadu tuhandeid ridu. Kaasaegsete krĂŒptoalgoritmide toetamiseks on soovitatav lisada Linuxi tuumasse uus krĂŒptograafiline API. . Praegu arutatakse, kui hea mĂ”te see on.
TÔhusus
Maksimaalne jĂ”udluse eelis (vĂ”rreldes OpenVPN ja IPSec'iga) on mĂ€rgatav Linuxi sĂŒsteemides, kuna seal on WireGuard teostatud tuumamoodulina. Lisaks toetatakse macOS'i, Androidi, iOS'i, FreeBSD-d ja OpenBSD-d, kus WireGuard töötab userspaces, mis toob kaasa jĂ”udluse probleeme. Windowsi toe lisamist lubatakse lĂ€hiajal.
Pingutuste tulemused on :

Minu kogemus kasutamisel
Ma ei ole VPN-i seadistamise ekspert. Ăks kord seadistasin OpenVPN-i kĂ€sitsi ja see oli ĂŒsna vaevarikas, IPSec-i ma isegi ei proovinud. Otsuste tegemine on liiga keeruline, on vĂ€ga lihtne endale jalga lasta. SeetĂ”ttu olen alati kasutanud valmis skripte serveri seadistamiseks.
Nii et WireGuard, minu arvates, on kasutajale tĂ€iesti ideaalne. KĂ”ik madala taseme lahendused on mÀÀratud spetsifikatsioonis, nii et tĂŒĂŒpilise VPN infrastruktuuri ettevalmistamine vĂ”tab vaid paar minutit. Peaaegu on vĂ”imatu vale konfiguratsiooniga eksida.
Installimisprotsess ametlikul veebilehel, soovin eraldi mÀrkida suurepÀrase .
KrĂŒpteerimisvĂ”tmed genereeritakse tööriistaga 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 konfiguratsioon /etc/wireguard/wg0.conf jÀrgmise sisuga:
[Interface]
Address = 10.9.0.1/24
PrivateKey = $SERVER_PRIVKEY
[Peer]
PublicKey = $CLIENT_PUBKEY
AllowedIPs = 10.9.0.2/32ja tÔsta tunnel skripti abil wg-quick:
sudo wg-quick up /etc/wireguard/wg0.confSystemd sĂŒsteemides vĂ”ib selle asemel kasutada sudo systemctl start wg-quick@wg0.service.
Kliendi masinas luua konfiguratsioon /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Àlise IP Ja tÀpselt samamoodi tÔsta tunnel:
sudo wg-quick up /etc/wireguard/wg0.confJÀÀb seadistada NAT serveris, et kliendid saaksid Internetti pÀÀseda, ja kÔik on valmis!
Selle kasutuslihtsuse ja koodibaasi kompaktsuse saavutasime loobudes vĂ”tmete jaotamise funktsioonist. Siin pole keerulist sertifikaadi sĂŒsteemi ja kogu seda ettevĂ”tte hirmus, lĂŒhikesed krĂŒpteerimisvĂ”tmed levivad umbes nagu SSH vĂ”ti. Kuid see tekitab probleemi: WireGuardi integreerimine vĂ”ib olla mĂ”nel juba olemasoleval vĂ”rgul keeruline.
Puudustest tuleks mĂ€rkida, et WireGuard ei toimi HTTP-proxy kaudu, kuna transportimiseks on saadaval ainult UDP-protokoll. TĂ”statub kĂŒsimus, kas protokolli on vĂ”imalik maskeerida? Loomulikult ei ole see VPN-i otsene ĂŒlesanne, kuid nĂ€iteks OpenVPN-i puhul on olemas viise, kuidas maskeerida HTTPS-i alla, mis aitab totalitaarsetes riikides elavatel inimestel Interneti tĂ”husalt kasutada.
JĂ€reldused
KokkuvĂ”ttes on see vĂ€ga huvitav ja paljutĂ”otav 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 WireGuardi peale ĂŒle viima, tuleks oodata, kuni see lisatakse Linuxi kerneli koostisse.
Oma (ja teie) aja sÀÀstmiseks olen vÀlja töötanud . Selle abil saab luua omaenda VPN-i isegi siis, kui te ei tea sellest midagi.
Allikas: habr.com
