WireGuard VPN: installatie en configuratie van VPN-server en clients | ITIGIC (2024)

WireGuard VPN-functies

WireGuardVPN is een software voor maak een virtueel privénetwerk (VPN) uiterst eenvoudig te configureren , erg snel (sneller dan IPsec en OpenVPN) en dat maakt gebruik van de meest moderne cryptografie standaard , zonder dat u hoeft te kiezen tussen verschillende symmetrische versleutelingsalgoritmen, asymmetrisch en hashing. Het doel van WireGuard VPN is om een ​​standaard te worden, en voor meer thuisgebruikers en bedrijven om het te gaan gebruiken, in plaats van IPsec of de populaire OpenVPN te gebruiken die moeilijker te configureren en langzamer zijn. Deze software is ontworpen om door alle doelgroepen te worden gebruikt, zowel voor thuisgebruikers als voor supercomputers.

Met WireGuard VPN het is niet nodig om de verbindingen te beheren , zorgen maken over de status van het virtuele privé-netwerk zelf, processen beheren of weten wat er onder de software zit om het te laten werken, net als IPsec, waarbij het vaak nodig is om logboeken te bekijken en te onderzoeken wat er gebeurt. Een andere kracht is dat de configuratie extreem eenvoudig is, maar erg krachtig.

Deze software is een L3 VPN , dat is het gebruikt alleen tunneling , het gebeurt niet als OpenVPN waar we de mogelijkheid hebben om in transportmodus of tunnelmodus te werken. In dit geval zullen we altijd de tunnelmodus gebruiken, bovendien is deze compatibel met beide IPv4-netwerken en IPv6-netwerken Bovendien kan het IPv4-pakketten inkapselen in IPv6 en vice versa. Het transportlaagprotocol dat door WireGuard wordt gebruikt is UDP , dus we moeten een bepaalde poort openen (om te kiezen, deze kan worden gewijzigd) in onze router die NAT uitvoert.

Compatibiliteit met besturingssystemen

Deze nieuwe VPN-software werd voor het eerst uitgebracht voor de Linux Kernel, maar het is cross-platform , omdat het compatibel is met Dakramen en raamkozijnen, Linux, Mac OS, FreeBSD, Android en ook iOS besturingssystemen . Een van de sterke punten van deze software is dat de client- en serverconfiguratie exact hetzelfde is in verschillende besturingssystemen, met dezelfde syntaxis, zodat u de server en clients in Linux kunt configureren en vervolgens de configuratie kunt "doorgeven" aan andere apparaten met andere besturingssystemen binnen.

Cryptografie gebruikt

Met de IPsec- en OpenVPN-protocollen is het noodzakelijk dat zowel de clients als de server het eens zijn over de te gebruiken cryptografische protocollen, zowel in fase 1 en fase 2 (van IPsec), als in het besturings- en gegevenskanaal (van OpenVPN) ), anders wordt de verbinding niet correct tot stand gebracht. WireGuard biedt een volledig cryptografisch "pakket" , zorgt voor connectiviteit zonder dat u iets hoeft te selecteren. Als op een gegeven moment een van de cryptografische protocollen die door deze VPN worden gebruikt, als onveilig wordt beschouwd, is het net zo eenvoudig als het lanceren van een tweede versie van WireGuard met een nieuw protocol zonder beveiligingsfout en tussen de clients en de server zal het aangegeven dat gebruik "versie 2", die volledig transparant is voor ons.

Een ander zeer belangrijk detail is dat deze VPN gebruikt een zeer kleine broncode . Er zijn zeer weinig regels code in vergelijking met StrongSwan of OpenVPN, dus audits kunnen in zeer korte tijd worden uitgevoerd, het zal ook gemakkelijker zijn om mogelijke kwetsbaarheden of beveiligingsfouten te vinden. Met minder coderegels is het oppervlak van een mogelijke aanval op de VPN-programmering ook kleiner.

WireGuard VPN maakt momenteel gebruik van ChaCha20 voor symmetrische codering, geverifieerd met Poly1305 , met behulp van een AEAD-construct. Het maakt ook gebruik van Curve 25519 voor ECDH, BLAKE2 voor hashing, SipHash24 For hashtabel toetsen en HKDF voor sleutelafleiding, wat betekent dat we de meest moderne cryptografische algoritmen gebruiken, met als doel maximale beveiliging en prestaties te bieden.

Ondersteuning voor roaming en kill switch

Deze software is ontworpen om te kunnen zwerven gemakkelijk en snel , als ons apparaat van netwerk verandert en logisch het openbare IP-adres wijzigt, zoals wanneer we via het wifi-netwerk en het 4G / LTE-netwerk van onze operator passeren, blijft de VPN-verbinding opgeheven omdat deze zich snel opnieuw authenticeren met de VPN server, zodat we altijd verbonden zijn met de VPN.

We kunnen ook schakel de Kill-Switch op het apparaat in , op deze manier, als de VPN-verbinding wordt onderbroken, zal de software zelf ook verantwoordelijk zijn voor het onderbreken van al het netwerkverkeer totdat de VPN-verbinding is hersteld, zodat we niet kunnen navigeren zonder de bescherming die deze VPN ons biedt.

WireGuard VPN-installatie

De installatie van deze software is heel eenvoudig, we moeten het gewoon doen ga naar de officiële website van WireGuard en download het uitvoerbare bestand voor Windows- of MacOS-besturingssystemen. Als u een op Linux gebaseerd besturingssysteem gebruikt met de bijbehorende repositories, moet u waarschijnlijk de specifieke WireGuard-repositories toevoegen, omdat deze zich momenteel niet standaard in de "stabiele" tak bevindt.

We hebben de VPN-server bijvoorbeeld geïnstalleerd in een nieuwste versie van Debian, om deze te installeren hebben we de stappen op de officiële website gevolgd. Superuser-machtigingen zijn vereist om de installatie correct uit te voeren.

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

We moeten niet vergeten dat deze VPN ook compatibel is met besturingssystemen zoals FreeBSD, OpenBSD en zelfs met OpenWRT voor routers, omdat u het eenvoudigweg installeert via "opkg", omdat alle aanvullende software meestal wordt geïnstalleerd.

Als u de VPN-client op uw smartphone met Android of iOS gaat installeren, hebben we momenteel de officiële applicaties, zodat u deze zonder problemen kunt installeren vanaf Google Play en App Store respectievelijk:

WireGuard-configuratie: openbare, privésleutels en configuratiebestanden

Nadat we WireGuard correct hebben geïnstalleerd, zowel op de computer die als een server fungeert, als op alle clients die we willen verbinden, is het nodig om het te configureren. Het eerste wat we moeten doen, is het publiek-private sleutelpaar maken, zowel op de server als op alle clients die we willen verbinden. We hebben een Debian-besturingssysteem gebruikt om de sleutels te genereren en ook om de server te configureren, maar we kunnen het ook rechtstreeks in de Windows-software doen.

De route om de WireGuard-server op Debian uit te voeren is / etc / wireguard /, dus we gaan naar deze route met het volgende commando:

cd /etc/wireguard/

Even-public-private sleutel generatie voor de server

Om het openbare en private sleutelpaar op deze locatie te genereren, moeten we gewoon het volgende plaatsen:

wg genkey | tee claveprivadaservidor | wg pubkey > clavepublicaservidor

Nu zullen we twee bestanden hebben, één met de openbare sleutel en één met de privésleutel:

  • Privésleutel: 6JcquylvtJsHNCdWrYMj28XsLIFJUVjlr2y5o27rO2c =
  • Publieke sleutel: xeTkJjjBUyp8paxTgajwDa + qWjrD2RpXlJRSHMwcGDQ =

Deze sleutels zullen we gebruiken voor de WireGuard VPN «server».

Even-public-private sleutel generatie voor een client

Om een ​​ander paar openbare en privésleutels te genereren, die we in een client zullen gebruiken, kunnen we ze in een nieuwe map maken of op dezelfde locatie maken, maar met een andere naam.

wg genkey | tee claveprivadacliente1 | wg pubkey > clavepublicacliente1

Nu zullen we twee bestanden hebben, één met de openbare sleutel en één met de privésleutel:

  • Privésleutel: yPMpP2raY4FoCEJkmzQMlxzm / 6RBIW9HkjY6pVFIOnI =
  • Publieke sleutel: 6c12jLkKzgU9len1kQ / 6Fc61xm + LL98TPPlLsri8klE =

Deze sleutels zullen we gebruiken voor een WireGuard VPN-client.

Server configuratiebestand

De configuratie van de WireGuard-server is vrij eenvoudig in vergelijking met IPsec- of OpenVPN-servers, maar we moeten rekening houden met verschillende dingen die we hieronder toelichten.

In de server moeten we een ” Interface ”Sectie, in deze sectie kunnen we de privé IP-adres die de server identificeert wanneer de clients verbinding maken. We moeten niet vergeten dat deze VPN L3 is, dus we kunnen elk privé-IP-adres plaatsen dat op geen enkel moment in gebruik is. In OpenVPN is het standaardsubnet bijvoorbeeld 10.8.0.0/24, hier kunnen we ook hetzelfde of een ander subnet 192.168.2.0/24 plaatsen (en 192.168.2.1 is de server zelf, en de andere IP's die de clients zijn) . Met de syntaxis van « Adres »We zullen het VPN-subnet plaatsen dat we willen.

in « privateKey »Moeten we de privésleutel invoeren die we eerder voor de server hebben gegenereerd. In « Luisterpoort »Zullen we de UDP-poort plaatsen die we voor de server willen gebruiken, deze poort is degene die we later in NAT moeten" openen "als we achter een router met NAT zitten.

Ten slotte kunnen we in dit gedeelte van "Interface" ook opdrachten definiëren die moeten worden uitgevoerd na het optillen van de virtuele interface met "PostUp" en na het gooien van de virtuele interface met "PostDown". Zoals u ziet, hebben we er momenteel commentaar op, omdat we geen NAT willen doen tegen deze interface, maar het zou perfect kunnen.

In de sectie ' turen ”Is waar we de lijst met clients moeten plaatsen waarmee we verbinding kunnen maken. In dit geval zullen we alleen een «peer» verbinden, dus zullen we uw openbare sleutel definiëren met « Publieke sleutel »Die we eerder hebben gemaakt (of die de klant ons heeft verstrekt, omdat het mogelijk is dat deze door hem is gegenereerd), en we kunnen ook aangeven of we toestaan ​​dat die klant met een specifiek IP-adres verbinding maakt. Met de " Toegestane IP's »Richtlijn kunnen we de bron IP-adressen filteren, als we 0.0.0.0/0 zetten betekent dit dat we elk IP-adres toestaan.

[Interface] Adres = 192.168.2.1/24
Privésleutel = 6JcquylvtJsHNCdWrYMj28XsLIFJUVjlr2y5o27rO2c =
Luisterpoort = 51820

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

[Peer] PublicKey = 6c12jLkKzgU9len1kQ / 6Fc61xm + LL98TPPlLsri8klE =
Toegestane IP's = 0.0.0.0/0

Als we meer “peers” willen toevoegen, definieer ze dan als volgt individueel in het configuratiebestand:

[Interface] Adres = 192.168.2.1/24
Privésleutel = 6JcquylvtJsHNCdWrYMj28XsLIFJUVjlr2y5o27rO2c =
Luisterpoort = 51820

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

[Peer] PublicKey = 6c12jLkKzgU9len1kQ / 6Fc61xm + LL98TPPlLsri8klE =
Toegestane IP's = 0.0.0.0/0

[Peer] PublicKey = client publieke sleutel 2
Toegestane IP's = 0.0.0.0/0

[Peer] PublicKey = openbare sleutel van klant 3
Toegestane IP's = 0.0.0.0/0

[/code]

Het configuratiebestand kan «wg0.conf» worden genoemd, omdat WireGuard virtuele interfaces met deze naam maakt, ideaal om ze perfect te onderscheiden. Om dit configuratiebestand uit te voeren, voert u gewoon uit:

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

Wanneer u het start, zal WireGuard de virtuele interface maken, het IP-adres, MTU plaatsen en zelfs de overeenkomstige routes in de routing-tabel maken:

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

Configuratiebestand voor clients

De configuratie van de WireGuard-client is vrij eenvoudig in vergelijking met IPsec- of OpenVPN-servers, maar we moeten rekening houden met verschillende dingen die we hieronder toelichten.

In de client moeten we een ” Interface ”Sectie, in deze sectie kunnen we de privé IP-adres die de client identificeert wanneer we verbinding maken. We moeten niet vergeten dat deze VPN L3 is, dus we kunnen elk privé-IP-adres plaatsen dat op geen enkel moment in gebruik is. In OpenVPN is het standaardsubnet bijvoorbeeld 10.8.0.0/24, hier kunnen we ook hetzelfde of een ander subnet 192.168.2.0/24 plaatsen (en 192.168.2.1 is de server zelf en het adres 192.168.2.2 vanaf nu , wees de klanten, met de syntaxis van ” Adres ”Zullen we het VPN-subnet plaatsen dat we willen.

in « privateKey »Moeten we de persoonlijke sleutel invoeren die we eerder voor de client hebben gegenereerd.

In de sectie ' turen "Is waar we de publieke sleutel bij moeten plaatsen" Publieke sleutel 'Van de WireGuard-server waarmee we verbinding gaan maken, dat wil zeggen dat deze publieke sleutel door de server aan ons moest worden verstrekt. Bij deze gelegenheid kunnen we ook de " Toegestane IP's ”, Maar de werking is anders, bij deze gelegenheid kunnen we bepalen of we alleen via de VPN naar een bepaald subnet (of meerdere subnetten) willen gaan, of dat we al het internetverkeer via het virtuele privé-netwerk willen doorsturen. Als we de subnetten gescheiden door komma's plaatsen, hebben we toegang tot meerdere die we op de server hebben. Als we al het verkeer willen doorsturen, plaatsen we eenvoudigweg 0.0.0.0/0, zoals het gebeurt met IPsec.

Eindelijk met de « Endpoint »Richtlijn bepalen we het openbare IP-adres van de server waarop WireGuard VPN actief is, gevolgd door twee punten (:) van de gebruikte UDP-poort. We moeten niet vergeten dat WireGuard UDP gebruikt, dus we moeten het niet op firewalls filteren.

De software en communicatie met WireGuard probeert zo onopgemerkt mogelijk voorbij te gaan als het niet in gebruik is, dat wil zeggen dat het niet continu data door de VPN stuurt om de tunnel actief te houden, ideaal voor het besparen van batterij- en mobiele data op smartphones. In de meeste van de gebruikelijke configuraties werkt dit perfect, maar als we achter een NAT of firewall, is het mogelijk dat de communicatie wordt verbroken omdat er geen gegevens worden overgedragen, dus het is noodzakelijk om een ​​"keep alive" te configureren. Om de Keep Alive te configureren, geeft u eenvoudig de “PersistentKeepAlive” -instructie aan en voert u een geheel getal in dat het aantal seconden van in leven houden betekent. Volgens officiële documentatie is 25 seconden instellen voldoende voor de meeste firewalls en NAT-systemen, als we 0 instellen, wordt deze functie uitgeschakeld. Als we achter NAT of een firewall zitten en na lange tijd inkomende verbindingen zonder verkeer willen ontvangen, is deze richtlijn nodig, anders stellen we het misschien niet.

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

[Peer] PublicKey = xeTkJjjBUyp8paxTgajwDa + qWjrD2RpXlJRSHMwcGDQ =
Toegestane IP's = 0.0.0.0/0
Eindpunt = 10.10.2.86:51820

#PersistentKeepalive = 25

In Windows-besturingssystemen kunnen we dezelfde configuratie importeren en klaar hebben om verbinding te maken, hoewel we een client vanaf het begin kunnen verbinden, maar we moeten de gegenereerde openbare sleutel "doorgeven" aan de WireGuard-server.

WireGuard VPN: installatie en configuratie van VPN-server en clients | ITIGIC (1)

Het is ook erg belangrijk om naar de WireGuard-logboeken te kijken om te controleren of de VPN-verbinding correct is gemaakt. We kunnen in het gedeelte 'Interface / adres' geen privé-IP-adres plaatsen dat al in Windows-clients wordt gebruikt, omdat we een fout in de verbinding hebben.

WireGuard VPN: installatie en configuratie van VPN-server en clients | ITIGIC (2)

Zoals u hebt gezien, is de configuratie van de WireGuard VPN echt eenvoudig en snel

WireGuard VPN-prestaties vergeleken met L2TP / IPsec en OpenVPN

In RedesZone hebben we de prestaties van WireGuard VPN vergeleken met L2TP / IPsec en OpenVPN gecontroleerd, de tests zijn in een lokaal netwerk uitgevoerd om problemen met de operator te voorkomen, zodat we de echte maximale prestaties kunnen meten die ons kunnen voorzien van een hardware specifiek.

De VPN-serverconfiguratie die we hebben gebruikt (voor zowel L2TP / IPsec, OpenVPN en WireGuard) is als volgt:

  • QNAP TS-1277: AMD Ryzen 7 2700-processor; RAM-geheugen: 64 GB RAM DDR4; Netwerkconnectiviteit: QNAP QXG-10G2T-107 bij 10 Gbps met Cat7-bekabeling en een D-Link DXS-1210-10TS schakelaar .
  • De VPN-software voor L2TP / IPsec en OpenVPN (met UDP) is QVPN 2 van QNAP
  • In een tweede test met OpenVPN (met UDP) en AES-256-GCM hebben we Virtualization Station met Debian gebruikt.
  • iperf3 handmatig geïnstalleerd in QTS en ook in gevirtualiseerde Debian.

WireGuard VPN: installatie en configuratie van VPN-server en clients | ITIGIC (3)

De VPN-clientconfiguratie die we hebben gebruikt (voor zowel L2TP / IPsec, OpenVPN en WireGuard) is als volgt:

  • PC met AMD Ryzen 7 3800x-processor; RAM-geheugen: 32 GB RAM DDR4 3200 MHz; Netwerkconnectiviteit: ASUS XG-C100C op 10 Gbps met CAT7-bekabeling en een D-Link DXS-1210-10TS schakelaar voor de verbinding van beide apparaten . Besturingssysteem gebruikt in de tests: Windows 10 1909.
  • Windows 10 L2TP / IPsec-client
  • Nieuwste versie van OpenVPN (2.4.8)
  • iperf3 in Windows 10.

De prestaties verkregen in de tests zijn als volgt:

WireGuard VPN: installatie en configuratie van VPN-server en clients | ITIGIC (4)

Zoals u kunt zien, is de echte snelheid van WireGuard twee keer die van L2TP / IPsec of OpenVPN, dus we kunnen zeggen dat deze VPN echt snel is.

We hopen dat deze installatie-tutorial je zal helpen, en je kunt gemakkelijk WireGuard-servers en -clients inzetten om overal veilig en veilig verbinding te maken met ons thuis, bedrijf of internet.

WireGuard VPN: installatie en configuratie van VPN-server en clients | ITIGIC (2024)
Top Articles
Latest Posts
Article information

Author: Kieth Sipes

Last Updated:

Views: 5744

Rating: 4.7 / 5 (67 voted)

Reviews: 90% of readers found this page helpful

Author information

Name: Kieth Sipes

Birthday: 2001-04-14

Address: Suite 492 62479 Champlin Loop, South Catrice, MS 57271

Phone: +9663362133320

Job: District Sales Analyst

Hobby: Digital arts, Dance, Ghost hunting, Worldbuilding, Kayaking, Table tennis, 3D printing

Introduction: My name is Kieth Sipes, I am a zany, rich, courageous, powerful, faithful, jolly, excited person who loves writing and wants to share my knowledge and understanding with you.