WireGuard VPN: Installation og konfiguration af VPN-server og klienter

WireGuard VPN er et helt gratis softwareprogram, der giver os mulighed for at etablere VPN-tunneler. Denne komplette software indeholder alle de nødvendige kommunikations- og kryptografiprotokoller til at opbygge et virtuelt privat netværk mellem flere klienter og en server. WireGuard giver bedre ydelse end IPsec-protokollen og OpenVPN (både i forbindelsernes hastighed og latenstid), i dag vil vi forklare dets vigtigste funktioner, hvordan man let installerer og konfigurerer det.

wireguard-14

WireGuard VPN-funktioner

WireGuardVPN er en software til oprette et virtuelt privat netværk (VPN) ekstremt let at konfigurere , meget hurtig (hurtigere end IPsec og OpenVPN), og der bruger mest moderne kryptografi som standard uden behov for at vælge mellem forskellige symmetriske krypteringsalgoritmer, asymmetrisk og hashing. Målet med WireGuard VPN er at blive en standard og for flere hjemmebrugere og virksomheder at begynde at bruge det i stedet for at bruge IPsec eller den populære OpenVPN, der er vanskeligere at konfigurere og langsommere. Denne software er designet til at blive brugt af alle målgrupper, både til hjemmebrugere og supercomputere.

Med WireGuard VPN det er ikke nødvendigt at administrere forbindelserne , bekymre dig om tilstanden i selve det virtuelle private netværk, administrere processer eller vide, hvad der er under softwaren for at få det til at fungere, ligesom IPsec, hvor det ofte er nødvendigt at se på logfiler og undersøge, hvad der sker. En anden styrke er, at konfigurationen er ekstremt grundlæggende, men meget kraftig.

Denne software er en L3 VPN , det er det bruger kun tunneling , sker det ikke som OpenVPN, hvor vi har mulighed for at arbejde i transporttilstand eller tunneltilstand. I dette tilfælde bruger vi altid tunneltilstand, derudover er den kompatibel med begge dele IPv4-netværk og IPv6-netværk derudover kan det indkapse IPv4-pakker i IPv6 og vice versa. Den transportlagsprotokol, der bruges af WireGuard, er UDP , så vi bliver nødt til at åbne en bestemt port (for at vælge, den kan ændres) i vores router, der gør NAT.

Operativsystem kompatibilitet

Denne nye VPN-software blev først frigivet til Linux Kerne, men det er det cross-platform , da det er kompatibelt med Windows, Linux, MacOS, FreeBSD, Android og også iOS operativsystemer . En af styrkerne ved denne software er, at klient- og serverkonfigurationen er nøjagtig den samme i forskellige operativsystemer ved hjælp af den samme syntaks, så du kan konfigurere serveren og klienterne i Linux og derefter "videregive" konfigurationen til andre enheder med andre operativsystemer inde.

Brugt kryptografi

Med IPsec- og OpenVPN-protokollerne er det nødvendigt, at både klienterne og serveren "er enige" om de kryptografiske protokoller, der skal bruges, både i fase 1 og fase 2 (af IPsec), og i kontrol- og datakanalen (af OpenVPN ), ellers oprettes forbindelsen ikke korrekt. WireGuard leverer en hel kryptografisk "pakke" , sikrer tilslutning uden behov for at vælge noget. Hvis en af ​​de kryptografiske protokoller, der bruges af denne VPN på et tidspunkt, betragtes som usikker, er det lige så let som at lancere en anden version af WireGuard med en ny protokol, der ikke har en sikkerhedsfejl, og mellem klienter og server vil det være angav, at brug af "version 2", der er helt gennemsigtig for os.

En anden meget vigtig detalje er, at denne VPN bruger en meget lille kildekode . Der er meget få kodelinjer sammenlignet med StrongSwan eller OpenVPN, så der kan udføres revisioner på meget kort tid, det vil også være lettere at finde mulige sårbarheder eller sikkerhedsfejl. Med færre kodelinjer er overfladen på et muligt angreb på VPN-programmeringen også mindre.

WireGuard VPN bruger i øjeblikket ChaCha20 til symmetrisk kryptering, godkendt med Poly1305 , ved hjælp af en AEAD-konstruktion. Det bruger også Curve25519 til ECDH, BLAKE2 til hasling, SipHash24 forum hashtabellen nøgler og HKDF til nøgledivation, hvilket betyder, at vi bruger de mest moderne kryptografiske algoritmer med det formål at give maksimal sikkerhed og ydeevne.

Roaming og Kill Switch support

Denne software er designet til at være i stand til strejfe let og hurtigt , hvis vores enhed skifter netværk og logisk ændrer offentlig IP, f.eks. når vi passerer fra Wi-Fi-netværket og 4G / LTE-netværket fra vores operatør, forbliver VPN-forbindelsen løftet, fordi de hurtigt vil autentificere med VPN server, så vi altid vil være tilsluttet VPN.

Vi kan også aktiver Kill-Switch på enheden på denne måde, hvis VPN-forbindelsen afbrydes, vil selve softwaren også være ansvarlig for at afbryde al netværkstrafik, indtil VPN-forbindelsen er genoprettet, så lad os ikke navigere uden den beskyttelse, denne VPN giver os.

WireGuard VPN-installation

Installationen af ​​denne software er virkelig let, det er vi bare nødt til gå til det officielle websted for WireGuard , og download den eksekverbare til Windows- eller MacOS-operativsystemer. Hvis du bruger et Linux-baseret operativsystem med dets tilhørende lagre, bliver du sandsynligvis nødt til at tilføje de specifikke WireGuard-lagre, da det i øjeblikket ikke er i den "stabile" gren som standard.

For eksempel har vi installeret VPN-serveren i en Debian seneste version, for at installere den har vi fulgt de trin, der er angivet på det officielle websted. Superbruger-tilladelser er nødvendige for at udføre installationen korrekt.

 sudo echo "deb http://deb.debian.org/debian/ ustabil main"> /etc/apt/sources.list.d/unstable.list sudo printf 'Pakke: * / nPin: frigiv a = ustabil / nPin- Prioritet: 90 / n '> /etc/apt/preferences.d/limit-unstable sudo apt opdatering sudo apt installation wireguard

Vi må ikke glemme, at denne VPN også er kompatibel med operativsystemer som FreeBSD, OpenBSD og endda med OpenWRT til routere, da simpelthen blot installeres det gennem “opkg”, da al ekstra software normalt installeres.

Hvis du vil installere VPN-klienten på din smartphone med Android eller iOS, har vi i øjeblikket de officielle applikationer, så du kan installere den uden problemer fra Google Play , App Store henholdsvis:

WireGuard-konfiguration: offentlige, private nøgler og konfigurationsfiler

Når vi korrekt har installeret WireGuard, både på computeren, der fungerer som en server, såvel som på alle de klienter, vi vil oprette forbindelse, er det nødvendigt at konfigurere det. Den første ting, vi skal gøre, er at oprette det offentlig-private nøglepar, både på serveren og på alle de klienter, som vi ønsker at oprette forbindelse. Vi har brugt et Debian-operativsystem til at generere nøglerne og også til at konfigurere serveren. Vi kunne imidlertid også gøre det direkte i Windows-softwaren.

Ruten til at køre WireGuard-serveren på Debian er / etc / wireguard /, så vi vil gå til denne rute med følgende kommando:

cd /etc/wireguard/

Selv-offentlig-privat nøglegenerering til serveren

For at generere det offentlige og private nøglepar lige på dette sted, skal vi blot sætte:

wg genkey | tee claveprivadaservidor | wg pubkey > clavepublicaservidor

Nu vil vi have to filer, en med den offentlige nøgle og en med den private:

  • Privat nøgle: 6JcquylvtJsHNCdWrYMj28XsLIFJUVjlr2y5o27rO2c =
  • Offentlig nøgle: xeTkJjjBUyp8paxTgajwDa + qWjrD2RpXlJRSHMwcGDQ =

Disse taster er dem, vi vil bruge til WireGuard VPN «server».

Selv en offentlig-privat nøglegenerering til en klient

For at generere et andet par offentlige og private nøgler, som vi vil bruge i en klient, kan vi oprette dem i en ny mappe eller oprette dem på samme sted, men med et andet navn.

wg genkey | tee claveprivadacliente1 | wg pubkey > clavepublicacliente1

Nu vil vi have to filer, en med den offentlige nøgle og en med den private:

  • Privat nøgle: yPMpP2raY4FoCEJkmzQMlxzm / 6RBIW9HkjY6pVFIOnI =
  • Offentlig nøgle: 6c12jLkKzgU9len1kQ / 6Fc61xm + LL98TPPlLsri8klE =

Disse nøgler er dem, vi vil bruge til en WireGuard VPN-klient.

Serverkonfigurationsfil

Konfigurationen af ​​WireGuard-serveren er ganske enkel sammenlignet med IPsec- eller OpenVPN-servere. Vi skal dog tage hensyn til flere ting, som vi forklarer nedenfor.

I serveren bliver vi nødt til at have en ” grænseflade ”Afsnit, i dette afsnit kan vi indikere privat IP-adresse der identificerer serveren, når klienterne opretter forbindelse. Vi skal huske, at denne VPN er L3, så vi kan placere enhver privat IP-adresse, der ikke er i brug på et givet tidspunkt. For eksempel, i OpenVPN er standard subnet 10.8.0.0/24, her kan vi også placere det samme eller ethvert andet subnet 192.168.2.0/24 (og 192.168.2.1 er selve serveren og de andre IP'er, der er klienter) . Med syntaks af « Adresse »Vi sætter det VPN-undernet, vi ønsker.

I « PrivateKey »Vi bliver nødt til at indtaste den private nøgle, som vi tidligere har genereret til serveren. I « Lyt til havn »Vi vil placere UDP-porten, som vi vil bruge til serveren. Denne port er den, som vi senere skal" åbne "i NAT, hvis vi står bag en router med NAT.

Endelig i dette afsnit af «Interface» kan vi også definere kommandoer, der skal udføres efter at have løftet den virtuelle interface med «PostUp» og efter at have kastet den virtuelle interface med «PostDown». Som du kan se, har vi det i øjeblikket kommenteret, da vi ikke ønsker at gøre NAT imod denne grænseflade, men det kunne gøres perfekt.

I afsnittet ” Peer ”Er det sted, hvor vi bliver nødt til at placere listen over klienter, som vi tillader forbindelse. I dette tilfælde forbinder vi kun en «peer», så vi definerer din offentlige nøgle med « Offentlig nøgle », Som vi tidligere har oprettet (eller at klienten har givet os, da det er muligt, at det er blevet genereret af ham), og også Vi kan indikere, om vi tillader denne klient med en bestemt IP-adresse at oprette forbindelse. Med " Tilladte IP'er »Direktiv kan vi filtrere kildens IP-adresser, hvis vi sætter 0.0.0.0/0 betyder det, at vi tillader enhver IP-adresse.

[Interface] Adresse = 192.168.2.1/24
PrivateKey = 6JcquylvtJsHNCdWrYMj28XsLIFJUVjlr2y5o27rO2c =
ListenPort = 51820

#PostUp = iptables -A FREMTID -i% i -j ACCEPT; iptables -A FREMTIL -o% i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
#PostDown = iptables -D FREM -i% i -j ACCEPT; iptables -D FREM -o% i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens33 -j MASQUERADE

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

Hvis vi vil tilføje flere "peers", skal du blot definere dem individuelt i konfigurationsfilen som følger:

[Interface] Adresse = 192.168.2.1/24
PrivateKey = 6JcquylvtJsHNCdWrYMj28XsLIFJUVjlr2y5o27rO2c =
ListenPort = 51820

#PostUp = iptables -A FREMTID -i% i -j ACCEPT; iptables -A FREMTIL -o% i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
#PostDown = iptables -D FREM -i% i -j ACCEPT; iptables -D FREM -o% i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens33 -j MASQUERADE

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

[Peer] PublicKey = klient offentlig nøgle 2
TilladteIPs = 0.0.0.0/0

[Peer] PublicKey = kundens offentlige nøgle 3
TilladteIPs = 0.0.0.0/0

[/ kode]

Konfigurationsfilen kan kaldes «wg0.conf», da WireGuard opretter virtuelle grænseflader med dette navn, ideelt til at skelne dem perfekt. For at køre denne konfigurationsfil skal du bare køre:

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

Når du starter den, vil WireGuard være ansvarlig for at oprette den virtuelle grænseflade, placere IP-adresse, MTU og endda oprette de tilsvarende ruter i rutetabellen:

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

Konfigurationsfil for klienter

WireGuard-klientkonfiguration er ganske enkel sammenlignet med IPsec- eller OpenVPN-servere, men vi skal tage hensyn til flere ting, som vi forklarer nedenfor.

I klienten bliver vi nødt til at have en ” grænseflade ”Afsnit, i dette afsnit kan vi indikere privat IP-adresse der identificerer klienten, når vi opretter forbindelse. Vi skal huske, at denne VPN er L3, så vi kan placere enhver privat IP-adresse, der ikke er i brug på et givet tidspunkt. For eksempel, i OpenVPN er standard subnet 10.8.0.0/24, her kan vi også placere det samme eller ethvert andet subnet 192.168.2.0/24 (og 192.168.2.1 er selve serveren, og adressen 192.168.2.2 fra nu af , være klienterne med syntaks af ” Adresse ”Vi sætter det VPN-undernet, vi ønsker.

I « PrivateKey »Vi bliver nødt til at indtaste den private nøgle, som vi tidligere har genereret til klienten.

I afsnittet ” Peer ”Hvor vi bliver nødt til at sætte den offentlige nøgle med” Offentlig nøgle ”Af den WireGuard-server, som vi vil oprette forbindelse til, det vil sige, denne offentlige nøgle har været nødt til at leveres til os af serveren. Ved denne lejlighed kan vi også bruge ” Tilladte IP'er ”-Direktiv, men operationen er anderledes, ved denne lejlighed kan vi definere, om vi kun ønsker at gå gennem VPN til et bestemt undernet (eller flere undernet), eller vi vil videresende al internettrafik via det virtuelle private netværk. Hvis vi sætter undernet adskilt med kommaer, kan vi få adgang til flere, som vi har på serveren, hvis vi vil videresende al trafik, vi blot sætter 0.0.0.0/0, som det sker med IPsec.

Endelig med " Endpoint »Direktiv definerer vi den offentlige IP-adresse på den server, hvor vi har WireGuard VPN, der kører, efterfulgt af to punkter (:) på den anvendte UDP-port. Vi skal huske, at WireGuard bruger UDP, så vi bør ikke filtrere det på firewalls.

Softwaren og kommunikationen med WireGuard forsøger at passere så ubemærket som muligt, hvis den ikke er i brug, det vil sige, at den ikke løbende sender data gennem VPN for at holde tunnelen aktiv, ideel til at spare batteri- og mobildata på smartphones. I de fleste af de sædvanlige konfigurationer fungerer dette perfekt, men hvis vi står bag en NAT eller firewall, det er muligt, at kommunikationen afbrydes, fordi der ikke overføres nogen data, så det er nødvendigt at konfigurere en "holde i live". For at konfigurere Keep Alive skal du blot angive "PersistentKeepAlive" -direktivet og indtaste et heltal, der betyder sekunder for at holde sig i live. Ifølge officiel dokumentation er det tilstrækkeligt at indstille 25 sekunder for de fleste firewalls og NAT-systemer. Hvis vi indstiller 0, deaktiveres denne funktion. Hvis vi står bag NAT eller en firewall og ønsker at modtage indgående forbindelser efter lang tid uden trafik, er dette direktiv nødvendigt, ellers kan vi ikke sige det.

[Interface] PrivateKey = yPMpP2raY4FoCEJkmzQMlxzm / 6RBIW9HkjY6pVFIOnI =
Adresse = 192.168.2.2/32

[Peer] PublicKey = xeTkJjjBUyp8paxTgajwDa + qWjrD2RpXlJRSHMwcGDQ =
TilladteIPs = 0.0.0.0/0
Endepunkt = 10.10.2.86:51820

#PersistentKeepalive = 25

I Windows-operativsystemer kan vi importere den samme konfiguration, og vi vil have den klar til at oprette forbindelse, selvom vi kan oprette forbindelse fra bunden af ​​en klient, men vi skal "videregive" den genererede offentlige nøgle til WireGuard-serveren.

Det er også meget vigtigt at se på WireGuard-logfilerne for at kontrollere, om VPN-forbindelsen er oprettet korrekt. Vi kan ikke placere en privat IP-adresse, der allerede er i brug i Windows-klienter i afsnittet "Interface / adresse", da vi har en fejl i forbindelsen.

Som du har set, er WireGuard VPN's konfiguration virkelig let og hurtig

WireGuard VPN-ydelse sammenlignet med L2TP / IPsec og OpenVPN

I RedesZone har vi kontrolleret ydelsen af ​​WireGuard VPN sammenlignet med L2TP / IPsec og OpenVPN, testene er blevet udført i lokalt netværk for at undgå problemer med operatøren, så vi kan måle den reelle maksimale ydelse, der er i stand til at give os en hardwarespecifik.

Den VPN-serverkonfiguration, vi har brugt (til både L2TP / IPsec, OpenVPN og WireGuard), er som følger:

  • QNAP TS-1277: AMD Ryzen 7 2700 processor; RAM-hukommelse: 64 GB RAM DDR4; Netværksforbindelse: QNAP QXG-10G2T-107 ved 10 Gbps med Cat7-kabling og en D-Link DXS-1210-10TS switch .
  • VPN-softwaren til L2TP / IPsec og OpenVPN (ved hjælp af UDP) er QVPN 2 fra QNAP
  • I en anden test med OpenVPN (ved hjælp af UDP) og AES-256-GCM brugte vi Virtualization Station med Debian.
  • iperf3 installeret manuelt i QTS og også i virtualiseret Debian.

Den VPN-klientkonfiguration, vi har brugt (til både L2TP / IPsec, OpenVPN og WireGuard), er som følger:

  • PC med AMD Ryzen 7 3800x processor; RAM-hukommelse: 32 GB RAM DDR4 3200MHz; Netværksforbindelse: ASUS XG-C100C ved 10 Gbps med CAT7 kabling og a D-Link DXS-1210-10TS switch til tilslutning af begge enheder . Operativsystem brugt i testene: Windows 10 1909.
  • Windows 10 L2TP / IPsec-klient
  • Seneste version af OpenVPN (2.4.8)
  • iperf 3 i Windows 10.

Ydeevnen opnået i testene er som følger:

Som du kan se, er WireGuards virkelige hastighed dobbelt så høj som L2TP / IPsec eller OpenVPN, så vi kan sige, at denne VPN virkelig er hurtig.

Vi håber, at denne installationsvejledning hjælper dig, og at du nemt kan distribuere WireGuard-servere og -klienter til at oprette forbindelse sikkert til vores hjem, forretning eller internettet hvor som helst på en sikker måde.