VPG WireGuard: Instalarea și configurarea serverului VPN și a clienților

WireGuard VPN este o aplicație software complet gratuită care ne va permite să stabilim tuneluri VPN. Acest software complet încorporează toate protocoalele de comunicare și criptografie necesare pentru a construi o rețea privată virtuală între mai mulți clienți și un server. WireGuard oferă performanțe mai bune decât protocolul IPsec și OpenVPN (atât în ​​ceea ce privește viteza, cât și latența conexiunilor), astăzi vă vom explica principalele sale caracteristici, cum să o instalați și să o configurați ușor.

fireguard-14

Funcții VPG WireGuard

VPN WireGuard este un software pentru creați o rețea privată virtuală (VPN) extrem simplu de configurat , foarte rapid (mai rapid decât IPsec și OpenVPN) și care folosește cele mai moderne criptografii în mod implicit , fără a fi nevoie să selectați între diferiți algoritmi de criptare simetrici, asimetrici și hashing. Scopul VPN WireGuard este de a deveni un standard și pentru ca mai mulți utilizatori casnici și companii să înceapă să îl folosească, în loc să folosească IPsec sau OpenVPN popular, care sunt mai dificil de configurat și mai lent. Acest software este conceput pentru a fi utilizat de toate publicurile, atât pentru utilizatorii casnici, cât și pentru super-calculatoare.

Cu VPG WireGuard nu este necesar să gestionați conexiunile , vă faceți griji pentru starea rețelei private virtuale în sine, gestionați procesele sau știți ce se află sub software pentru a-l face să funcționeze, la fel ca IPsec, unde este adesea necesar să priviți jurnalele și să cercetați ce se întâmplă. Un alt punct forte este că configurația este extrem de de bază, dar foarte puternică.

Acest software-ul este un VPN L3 , aia este folosește numai tunel , nu se întâmplă ca OpenVPN unde avem posibilitatea de a lucra în modul de transport sau în modul tunel. În acest caz, vom folosi întotdeauna modul tunel, în plus, este compatibil cu ambele Rețele IPv4 și rețele IPv6 În plus, poate încapsula pachetele IPv4 în IPv6 și invers. Protocolul stratului de transport utilizat de WireGuard este UDP , deci va trebui să deschidem un anumit port (pentru a alege, acesta poate fi schimbat) în routerul nostru care face NAT.

Compatibilitatea sistemului de operare

Acest nou software VPN a fost lansat pentru prima dată pentru Linux Kernel, dar este cross-platform , deoarece este compatibil cu ferestre din, Linux, MacOS, FreeBSD, Android și, de asemenea, iOS sisteme de operare . Unul dintre punctele forte ale acestui software este că configurația clientului și a serverului este exact aceeași în sisteme de operare diferite, folosind aceeași sintaxă, astfel încât să puteți configura serverul și clienții în Linux, apoi „trece” configurația la alte dispozitive cu alte sisteme de operare din interior.

Criptografia folosită

Cu protocoalele IPsec și OpenVPN, este necesar ca atât clienții cât și serverul „să fie de acord” cu protocoalele criptografice care vor fi utilizate, atât în ​​faza 1 și faza 2 (a IPsec), cât și în canalul de control și de date (al OpenVPN) ), în caz contrar, conexiunea nu va fi stabilită corect. WireGuard oferă un întreg „pachet” criptografic , asigurând conectivitatea fără a fi nevoie să selectați nimic. Dacă la un moment dat unul dintre protocoalele criptografice utilizate de acest VPN este considerat nesigur, este la fel de ușor ca lansarea unei a doua versiuni a WireGuard cu un nou protocol care nu are un defect de securitate, iar între clienți și server va fi a indicat că folosiți „versiunea 2”, fiind complet transparent pentru noi.

Un alt detaliu foarte important este că acest VPN folosește un cod sursă foarte mic . Există foarte puține linii de cod în comparație cu StrongSwan sau OpenVPN, astfel încât auditurile ar putea fi efectuate într-un timp foarte scurt, va fi, de asemenea, mai ușor să găsiți posibile vulnerabilități sau defecte de securitate. Cu mai puține linii de cod, suprafața unui posibil atac asupra programării VPN este de asemenea mai mică.

VPN WireGuard folosește în prezent ChaCha20 pentru criptarea simetrică, autentificată cu Poly1305 , folosind o construcție AEAD. De asemenea, folosește Curve25519 pentru ECDH, BLAKE2 pentru hashing, SipHash24 pentru Hashtable chei și HKDF pentru derivarea cheilor, ceea ce înseamnă că folosim cei mai moderni algoritmi criptografici, cu scopul de a oferi securitate și performanță maximă.

Asistență Roaming și Kill Switch

Acest software este conceput pentru a putea cutreieră ușor și repede , dacă dispozitivul nostru schimbă rețelele și schimbă logic IP-ul public, cum ar fi atunci când trecem de la rețeaua Wi-Fi și rețeaua 4G / LTE a operatorului nostru, conexiunea VPN va rămâne ridicată, deoarece se vor autentifica rapid cu VPN server, astfel încât vom fi întotdeauna conectat la VPN.

Putem de asemenea activați comutatorul Kill-on pe dispozitiv , în acest fel, dacă conexiunea VPN este întreruptă, software-ul în sine va fi, de asemenea, responsabil de întreruperea întregului trafic de rețea până la restabilirea conexiunii VPN, pentru a nu naviga fără protecția oferită de acest VPN.

Instalare VPG WireGuard

Instalarea acestui software este foarte ușoară, trebuie doar să facem accesați site-ul oficial al WireGuard și descărcați sistemele de operare executabile pentru Windows sau MacOS. Dacă utilizați un sistem de operare bazat pe Linux cu depozitele corespunzătoare, probabil va trebui să adăugați depozitele WireGuard specifice, deoarece nu se află în prezent în ramura „stabilă” în mod implicit.

De exemplu, am instalat serverul VPN într-o versiune cea mai recentă a lui Debian, pentru a-l instala, am urmat pașii indicați pe site-ul oficial. Permisiunile Superuser sunt necesare pentru a efectua corect instalarea.

 sudo echo "deb http://deb.debian.org/debian/ unstable main"> /etc/apt/sources.list.d/unstable.list sudo printf 'Pachet: * / nPin: release a = unstable / nPin- Prioritate: 90 / n '> /etc/apt/preferences.d/limit-unstable sudo apt update sudo apt install wireguard

Nu trebuie să uităm că acest VPN este compatibil și cu sisteme de operare, cum ar fi FreeBSD, OpenBSD și chiar cu OpenWRT pentru routere, deoarece pur și simplu instalați-l prin „opkg”, deoarece de obicei este instalat tot software-ul suplimentar.

Dacă aveți de gând să instalați clientul VPN pe smartphone-ul dvs. cu Android sau iOS, în prezent avem aplicațiile oficiale, astfel încât să îl puteți instala fără probleme din Google Play, și App Store respectiv:

Configurație WireGuard: chei publice, private și fișiere de configurare

După ce am instalat corect WireGuard, atât pe computerul care acționează ca server, cât și pe toți clienții la care dorim să ne conectăm, este necesară configurarea acestuia. Primul lucru pe care trebuie să-l facem este să creăm perechea de chei public-privat, atât pe server, cât și pe toți clienții pe care vrem să-i conectăm. Am folosit un sistem de operare Debian pentru a genera cheile și, de asemenea, pentru a configura serverul, totuși, l-am putea face direct în software-ul Windows.

Ruta pentru a rula serverul WireGuard pe Debian este / etc / wireguard /, deci vom merge pe această rută cu următoarea comandă:

cd /etc/wireguard/

Generare de cheie publică-privată pentru server

Pentru a genera perechea de chei publice și private chiar în această locație, trebuie doar să punem:

wg genkey | tee claveprivadaservidor | wg pubkey > clavepublicaservidor

Acum vom avea două fișiere, unul cu cheia publică și unul cu cel privat:

  • Cheia privată: 6JcquylvtJsHNCdWrYMj28XsLIFJUVjlr2y5o27rO2c =
  • Cheia publică: xeTkJjjBUyp8paxTgajwDa + qWjrD2RpXlJRSHMwcGDQ =

Aceste chei sunt cele pe care le vom folosi pentru „serverul” VPN WireGuard.

Generarea de chei public-private uniformă pentru un client

Pentru a genera o altă pereche de chei publice și private, pe care le vom folosi într-un client, le putem crea într-un folder nou sau le putem crea în aceeași locație, dar cu un alt nume.

wg genkey | tee claveprivadacliente1 | wg pubkey > clavepublicacliente1

Acum vom avea două fișiere, unul cu cheia publică și unul cu cel privat:

  • Cheie privată: yPMpP2raY4FoCEJkmzQMlxzm / 6RBIW9HkjY6pVFIOnI =
  • Cheia publică: 6c12jLkKzgU9len1kQ / 6Fc61xm + LL98TPPlLsri8klE =

Aceste chei sunt cele pe care le vom folosi pentru un client VPG WireGuard.

Fișier de configurare server

Configurația serverului WireGuard este destul de simplă în comparație cu serverele IPsec sau OpenVPN, cu toate acestea, trebuie să luăm în considerare mai multe lucruri pe care le explicăm mai jos.

Pe server va trebui să avem un " interfaţă ”, În această secțiune putem indica adresa IP privată care identifică serverul când clienții se conectează. Trebuie să ne amintim că acest VPN este L3, deci putem pune orice adresă IP privată care nu este folosită la un moment dat. De exemplu, în OpenVPN, subrețea implicită este 10.8.0.0/24, aici putem pune și aceeași sau orice altă subrețea 192.168.2.0/24 (iar 192.168.2.1 este serverul în sine, iar celelalte IP-uri care sunt clienții) . Cu sintaxa lui « Adresă »Vom pune subrețeaua VPN pe care o dorim.

În « cheie privată »Va trebui să introducem cheia privată pe care am generat-o anterior pentru server. În « ListenPort »Vom pune portul UDP pe care dorim să-l utilizăm pentru server, acest port este cel pe care va trebui ulterior să-l„ deschidem ”în NAT dacă suntem în spatele unui router cu NAT.

În cele din urmă, în această secțiune a „Interfeței” putem defini, de asemenea, comenzile care trebuie executate după ridicarea interfeței virtuale cu „PostUp” și după aruncarea interfeței virtuale cu „PostDown”. După cum puteți vedea, în momentul de față am comentat-o, deoarece nu dorim să facem NAT împotriva acestei interfețe, dar s-ar putea face perfect.

În secțiunea ” egal ”Este locul în care va trebui să punem lista clienților pe care le permitem să se conecteze. În acest caz, vom conecta doar un „peer”, așa că vom defini cheia publică cu „ cheie publică »Pe care l-am creat anterior (sau pe care clientul ni l-a furnizat, deoarece este posibil ca acesta să fi fost generat de el) și, de asemenea, Putem indica dacă permitem conectarea acelui client cu o adresă IP specifică. Cu " Permise IP-uri »Directiva putem filtra adresele IP sursa, daca punem 0.0.0.0/0 inseamna ca permitem orice adresa IP.

[Interfață] Adresă = 192.168.2.1/24
PrivateKey = 6JcquylvtJsHNCdWrYMj28XsLIFJUVjlr2y5o27rO2c =
ListenPort = 51820

#PostUp = iptables -A FORWARD -i% i -j ACCEPT; iptables -A FORWARD -o% i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens33 -j MASCHERADE
#PostDown = iptables -D FORWARD -i% i -j ACCEPT; iptables -D FORWARD -o% i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens33 -j MASCHERADE

[Peer] PublicKey = 6c12jLkKzgU9len1kQ / 6Fc61xm + LL98TPPlLsri8klE =
AllowedIPs = 0.0.0.0/0

Dacă dorim să adăugăm mai mulți „colegi”, pur și simplu definiți-le individual în fișierul de configurare după cum urmează:

[Interfață] Adresă = 192.168.2.1/24
PrivateKey = 6JcquylvtJsHNCdWrYMj28XsLIFJUVjlr2y5o27rO2c =
ListenPort = 51820

#PostUp = iptables -A FORWARD -i% i -j ACCEPT; iptables -A FORWARD -o% i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens33 -j MASCHERADE
#PostDown = iptables -D FORWARD -i% i -j ACCEPT; iptables -D FORWARD -o% i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens33 -j MASCHERADE

[Peer] PublicKey = 6c12jLkKzgU9len1kQ / 6Fc61xm + LL98TPPlLsri8klE =
AllowedIPs = 0.0.0.0/0

[Peer] PublicKey = cheia publică 2 a clientului
AllowedIPs = 0.0.0.0/0

[Peer] PublicKey = cheia publică a clientului 3
AllowedIPs = 0.0.0.0/0

[/ cod]

Fișierul de configurare poate fi numit «wg0.conf», deoarece WireGuard creează interfețe virtuale cu acest nume, ideal pentru a le distinge perfect. Pentru a rula acest fișier de configurare, trebuie doar să executați:

root@debian-vm:/etc/wireguard# wg-quick up wg0

Când o porniți, WireGuard va fi responsabil de crearea interfeței virtuale, de punerea adresei IP, MTU și chiar de crearea rutelor corespunzătoare în tabelul de rutare:

root@debian-vm:/etc/wireguard# wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 192.168.2.1 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] wg set wg0 fwmark 51820
[#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] iptables-restore -n

Fișier de configurare pentru clienți

Configurația clientului WireGuard este destul de simplă în comparație cu serverele IPsec sau OpenVPN, cu toate acestea, trebuie să luăm în considerare mai multe lucruri pe care le explicăm mai jos.

În client va trebui să avem un " interfaţă ”, În această secțiune putem indica adresa IP privată care identifică clientul când ne conectăm. Trebuie să ne amintim că acest VPN este L3, deci putem pune orice adresă IP privată care nu este folosită la un moment dat. De exemplu, în OpenVPN, subrețea implicită este 10.8.0.0/24, aici putem pune și aceeași sau orice altă subrețea 192.168.2.0/24 (iar 192.168.2.1 este serverul în sine, iar adresa 192.168.2.2 de acum încolo. , fiți clienții, cu sintaxa de ” Adresă ”Vom pune subrețeaua VPN pe care o dorim.

În « cheie privată »Va trebui să introducem cheia privată pe care am generat-o anterior pentru client.

În secțiunea ” egal „Este locul unde va trebui să punem cheia publică” cheie publică ”Al serverului WireGuard la care urmează să ne conectăm, adică această cheie publică a trebuit să ne fie furnizată de server. Cu această ocazie, putem folosi și „ Permise IP-uri ”, Dar operațiunea este diferită, cu această ocazie putem defini dacă dorim doar să trecem prin VPN către o anumită subrețea (sau mai multe subrețele) sau dorim să redirecționeze tot traficul de internet prin rețeaua virtuală privată. Dacă punem sub-rețelele separate prin virgule, putem accesa mai multe pe care le avem pe server, dacă dorim să redirecționeze tot traficul, pur și simplu punem 0.0.0.0/0, așa cum se întâmplă cu IPsec.

În cele din urmă, cu „ Punct final »Directivă vom defini adresa IP publică a serverului în care rulăm VPN WireGuard, urmată de două puncte (:) ale portului UDP utilizat. Trebuie să ne amintim că WireGuard folosește UDP, deci nu trebuie să-l filtrăm pe firewall-uri.

Software-ul și comunicația cu WireGuard încearcă să treacă cât mai neobservat posibil dacă nu este utilizat, adică nu trimite în mod continuu date prin VPN pentru a menține tunelul activ, ideal pentru economisirea bateriei și a datelor mobile pe smartphone-uri. În majoritatea configurațiilor obișnuite, acest lucru funcționează perfect, dar dacă suntem în spatele unui NAT sau firewall, este posibil ca comunicarea să fie întreruptă pentru că nu sunt transferate date, deci este necesar să configurați un „mențineți în viață”. Pentru a configura Keep Alive, pur și simplu indicați directiva „PersistentKeepAlive” și introduceți un număr întreg care înseamnă secunde de menținere în viață. Conform documentației oficiale, setarea de 25 de secunde este suficientă pentru majoritatea firewall-urilor și a sistemelor NAT, dacă setăm 0 dezactivează această funcție. Dacă ne aflăm în spatele NAT sau al unui firewall și dorim să primim conexiuni primite după mult timp fără trafic, această directivă va fi necesară, altfel s-ar putea să nu o punem.

[Interfață] PrivateKey = yPMpP2raY4FoCEJkmzQMlxzm / 6RBIW9HkjY6pVFIOnI =
Adresa = 192.168.2.2/32

[Peer] PublicKey = xeTkJjjBUyp8paxTgajwDa + qWjrD2RpXlJRSHMwcGDQ =
AllowedIPs = 0.0.0.0/0
Punct final = 10.10.2.86:51820

#PersistentKeepalive = 25

În sistemele de operare Windows putem importa aceeași configurație și o vom avea gata de conectare, deși ne putem conecta de la zero la un client, dar trebuie să „trecem” cheia publică generată către serverul WireGuard.

De asemenea, este foarte important să ne uităm la jurnalele WireGuard, pentru a verifica dacă conexiunea VPN a fost stabilită corect. Nu putem introduce în secțiunea „Interfață / adresă” o adresă IP privată care este deja folosită la clienții Windows, deoarece vom avea o eroare în conexiune.

După cum ați văzut, configurația VPN WireGuard este foarte ușoară și rapidă

Performanță VPN WireGuard în comparație cu L2TP / IPsec și OpenVPN

În RedesZone am verificat performanța VPN WireGuard în comparație cu L2TP / IPsec și OpenVPN, testele au fost efectuate în rețeaua locală pentru a evita problemele cu operatorul, astfel încât putem măsura performanța maximă reală care este capabilă să ne ofere un specific hardware-ului.

Configurația serverului VPN pe care am folosit-o (atât pentru L2TP / IPsec, OpenVPN, cât și pentru WireGuard) este următoarea:

  • QNAP TS-1277: procesor AMD Ryzen 7 2700; Memorie RAM: 64 GB RAM DDR4; Conectivitate de rețea: QNAP QXG-10G2T-107 la 10 Gbps cu cablare Cat7 și Comutator D-Link DXS-1210-10TS .
  • Software-ul VPN pentru L2TP / IPsec și OpenVPN (folosind UDP) este QVPN 2 de la QNAP
  • Într-un al doilea test cu OpenVPN (folosind UDP) și AES-256-GCM am folosit stația de virtualizare cu Debian.
  • iperf3 instalat manual în QTS și, de asemenea, în Debian virtualizat.

Configurația clientului VPN pe care am folosit-o (atât pentru L2TP / IPsec, OpenVPN, cât și pentru WireGuard) este următoarea:

  • PC cu procesor AMD Ryzen 7 3800x; Memorie RAM: 32 GB RAM DDR4 3200MHz; Conectivitate la rețea: ASUS XG-C100C la 10 Gbps cu cablare CAT7 și a Comutator D-Link DXS-1210-10TS pentru conectarea ambelor Dispozitive . Sistem de operare utilizat la teste: Windows 10 1909.
  • Client Windows L10TP / IPsec
  • Ultima versiune a OpenVPN (2.4.8)
  • iperf 3 în Windows 10.

Performanțele obținute la teste sunt următoarele:

După cum vedeți, viteza reală a WireGuard este de două ori mai mare decât cea a L2TP / IPsec sau OpenVPN, deci putem spune că acest VPN este într-adevăr rapid.

Sperăm că acest tutorial de configurare vă va ajuta și puteți să implementați cu ușurință serverele și clienții WireGuard pentru a vă conecta în siguranță la casa noastră, compania sau Internetul de oriunde într-un mod sigur.