WireGuard is een VPN voor algemeen gebruik (Virtual Private Network) dat gebruikmaakt van de modernste cryptografie. In vergelijking met andere populaire VPN-oplossingen, zoals IPsec en OpenVPN, is WireGuard over het algemeen sneller, gemakkelijker te configureren en heeft het een kleinere footprint. Het is platformonafhankelijk en kan bijna overal worden uitgevoerd, inclusief Linux, Windows, Android en macOS.
Wireguard is een peer-to-peer VPN; het maakt geen gebruik van het client-servermodel. Afhankelijk van de configuratie kan een peer fungeren als een traditionele server of client. Het werkt door een netwerkinterface te creëren op elk peer-apparaat dat als een tunnel fungeert. Peers authenticeren elkaar door openbare sleutels uit te wisselen en te valideren, waarbij het SSH-model wordt nagebootst. Openbare sleutels worden toegewezen aan een lijst met IP-adressen die in de tunnel zijn toegestaan. Het VPN-verkeer is ingekapseld in UDP.
In dit artikel wordt uitgelegd hoe u WireGuard installeert en configureert op Debian 10 die als VPN-server zal fungeren. We laten u ook zien hoe u WireGuard kunt configureren als client op Linux, Windows en macOS. Het verkeer van de klant wordt omgeleid via de Debian 10-server.
Deze opstelling kan worden gebruikt als bescherming tegen Man in the Middle-aanvallen, anoniem op internet surfen, geografisch beperkte inhoud omzeilen of uw collega's die thuis werken veilig verbinding laten maken met het bedrijfsnetwerk.
Vereisten #
Om deze handleiding te volgen, heb je een machine nodig waarop Debian 10 is geïnstalleerd. Je hebt ook root of [sudo-toegang](https://linuxize . nodig).com/post/how-to-create-a-sudo-user-on-debian/ om pakketten te installeren en wijzigingen aan te brengen in het systeem.
De WireGuard-server instellen #
We beginnen met het installeren van het WireGuard-pakket op de Debian-machine en stellen het in om als server te fungeren. We zullen het systeem ook configureren om het verkeer van de klanten er doorheen te leiden.
Installeer WireGuard op Debian 10 #
WireGuard is beschikbaar via de backports-repository's van Debian. Om de repository aan uw systeem toe te voegen, voert u het volgende uit:
echo 'deb http://ftp.debian.org/debian buster-backports main' | sudo tee /etc/apt/sources.lijst.d/buster-backports.lijst
Zodra de repository is ingeschakeld, werkt u de apt-cache bij en installeert u de WireGuard-module en -hulpmiddelen:
WireGuard werkt als een kernelmodule.sudo apt update
sudo apt installeer wireguard
WireGuard configureren #
U kunt de WireGuard-interfaces configureren en beheren met de wg
en wg-snel
opdrachtregelprogramma's.
Elk apparaat in het WireGuard VPN-netwerk moet een privé- en openbare sleutel hebben. Voer de volgende opdracht uit om het sleutelpaar te genereren:
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
De bestanden worden gegenereerd in de /etc/wireguard
map. Gebruik de kat
of minder
opdrachten om de inhoud van de bestanden te bekijken. De privésleutel mag nooit met iemand worden gedeeld en moet altijd veilig worden bewaard.
Wireguard ondersteunt ook een vooraf gedeelde sleutel, die een extra laag symmetrische sleutelcryptografie toevoegt. Deze sleutel is optioneel en moet uniek zijn voor elk peer-paar.
De volgende stap is het configureren van het tunnelapparaat dat het VPN-verkeer zal routeren.
Het apparaat kan worden ingesteld vanaf de opdrachtregel met behulp van de ik p
en wg
commando's, of door handmatig het configuratiebestand te maken. We maken de configuratie met een teksteditor.
Open je editor en maak een nieuw bestand aan met de naam wg0.conf
met de volgende inhoud:
sudo nano /etc/wireguard/wg0.conf
/etc/wireguard/wg0.conf[Interface] Adres = 10.0.0.1/24 SaveConfig = true ListenPort = 51820 PrivateKey = SERVER_PRIVATE_KEY PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE PostDown = iptables -D VOORUIT -i %i -j ACCEPTEREN; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE
U kunt de interface een naam geven die u maar wilt. Het wordt echter aanbevolen om iets te gebruiken als wg0
of wgvpn0
.
De instellingen in het interfacegedeelte hebben de volgende betekenis:
Adres - Een door komma's gescheiden lijst met v4- of v6-IP-adressen voor de
wg0
koppel. U kunt een IP-adres uit een bereik dat is gereserveerd voor de particuliere netwerken (10.0.0.0/8, 172.16.0.0/12 of 192.168.0.0/16).ListenPort - De luisterpoort.
PrivateKey - Een persoonlijke sleutel gegenereerd door de
wg genkey
opdracht. (Om de inhoud van het bestandstype te zien:sudo cat /etc/wireguard/privatekey
)SaveConfig - Indien ingesteld op true, wordt de huidige status van de interface bij het afsluiten opgeslagen in het configuratiebestand.
PostUp - Commando of script dat wordt uitgevoerd voordat de interface wordt geopend. In dit voorbeeld gebruiken we iptables om masquerading in te schakelen. Hierdoor kan verkeer de server verlaten, waardoor de VPN-clients toegang hebben tot internet.
Zorg ervoor dat u vervangt
ens3
na-EEN POSTROUTING
overeenkomen met de naam van uw openbare netwerkinterface. U kunt de interface eenvoudig vinden met:ip -o -4 route toon naar standaard | awk 'print $5'
PostDown - Een commando of script dat wordt uitgevoerd voordat de interface wordt uitgeschakeld. De iptables-regels worden verwijderd zodra de interface offline is.
De wg0.conf
en prive sleutel
bestanden mogen niet leesbaar zijn voor normale gebruikers. Gebruik chmod
om de bestandsrechten in te stellen op: 600
:
sudo chmod 600 /etc/wireguard/privatekey,wg0.conf
Als je klaar bent, breng je de wg0
interface up met behulp van de attributen gespecificeerd in het configuratiebestand:
sudo wg-snel op wg0
De uitvoer ziet er ongeveer zo uit:
[#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 adres add 10.0.0.1/24 dev wg0 [#] ip-link set mtu 1420 up dev wg0 [#] iptables -A FORWARD -i wg0 -j ACCEPTEREN; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Om de interfacestatus en configuratie te controleren, voert u het volgende uit:
sudo wg toon wg0
interface: wg0 publieke sleutel: +Vpyku+gjVJuXGR/OXXt6cmBKPdc06Qnm3hpRhMBtxs= private sleutel: (verborgen) luisterpoort: 51820
U kunt de interfacestatus ook controleren met: ip een show wg0
:
ip een show wg0
4: wg0: mtu 1420 qdisc noqueue state ONBEKEND groep standaard qlen 1000 link/geen inet 10.0.0.1/24 bereik globaal wg0 valid_lft forever preferred_lft forever
WireGuard kan worden beheerd met Systemd. Voer de volgende opdracht uit om de WireGuard-interface tijdens het opstarten te openen:
sudo systemctl activeer wg-quick@wg0
Servernetwerken en firewallconfiguratie #
IP-forwarding moet zijn ingeschakeld om NAT te laten werken. Open de /etc/sysctl.conf
bestand en voeg de volgende regel toe of verwijder het commentaar:
sudo nano /etc/sysctl.conf
/etc/sysctl.confnetto-.ipv4.ip_forward=1
Sla het bestand op en pas de wijziging toe:
sudo sysctl -p
netto-.ipv4.ip_forward = 1
Als u UFW gebruikt om uw firewall te beheren, moet u UDP-verkeer op poort openen 51820
:
sudo ufw toestaan 51820/udp
Dat is het. De Debian-peer die als server zal fungeren, is ingesteld.
Installatie van Linux- en macOS-clients #
De installatie-instructies voor alle ondersteunde platforms zijn beschikbaar op https://wireguard.com/install/ . Op Linux-systemen kunt u het pakket installeren met behulp van de distributiepakketbeheerder en op macOS met brouwen
.
Volg na installatie de onderstaande stappen om het clientapparaat te configureren:.
Het proces voor het opzetten van een Linux- en macOS-client is vrijwel hetzelfde als voor de server. Genereer eerst de openbare en privésleutels:
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
Maak het bestand wg0.conf
en voeg de volgende inhoud toe:
sudo nano /etc/wireguard/wg0.conf
/etc/wireguard/wg0.conf[Interface] PrivateKey = CLIENT_PRIVATE_KEY Adres = 10.0.0.2/24 [Peer] PublicKey = SERVER_PUBLIC_KEY Eindpunt = SERVER_IP_ADDRESS:51820 Toegestane IP's = 0.0.0.0/0
De instellingen in het interfacegedeelte hebben dezelfde betekenis als bij het instellen van de server:
- Adres - Een door komma's gescheiden lijst met v4- of v6-IP-adressen voor de
wg0
koppel. - PrivateKey - Om de inhoud van het bestand op de clientcomputer te zien, voert u het volgende uit:
sudo cat /etc/wireguard/privatekey
Het peer-gedeelte bevat de volgende velden:
- PublicKey - Een openbare sleutel van de peer waarmee u verbinding wilt maken. (De inhoud van de server
/etc/wireguard/publickey
het dossier). - Eindpunt - Een IP- of hostnaam van de peer waarmee u verbinding wilt maken, gevolgd door een dubbele punt en vervolgens een poortnummer waarop de externe peer luistert.
- AllowedIPs - Een door komma's gescheiden lijst van v4- of v6-IP-adressen waarvan inkomend verkeer voor de peer is toegestaan en waarnaar uitgaand verkeer voor deze peer wordt geleid. We gebruiken 0.0.0.0/0 omdat we het verkeer routeren en willen dat de server-peer pakketten verzendt met elke bron-IP.
Als u extra clients moet configureren, herhaalt u dezelfde stappen met een ander privé-IP-adres.
Windows-clients instellen #
Download en installeer het Windows msi-pakket van de WireGuard-website .
Na installatie opent u de WireGuard-toepassing en klikt u op "Tunnel toevoegen" -> "Lege tunnel toevoegen..." zoals weergegeven in de onderstaande afbeelding:
Er wordt automatisch een publickey-paar gemaakt en weergegeven op het scherm.
Voer een naam in voor de tunnel en bewerk de configuratie als volgt:
[Interface] PrivateKey = CLIENT_PRIVATE_KEY Adres = 10.0.0.2/24 [Peer] PublicKey = SERVER_PUBLIC_KEY Eindpunt = SERVER_IP_ADDRESS:51820 Toegestane IP's = 0.0.0.0/0
Voeg in de interfacesectie een nieuwe regel toe om het clienttunneladres te definiëren.
Voeg in het peer-gedeelte de volgende velden toe:
- PublicKey - De openbare sleutel van de Debian-server (
/etc/wireguard/publickey
het dossier). - Eindpunt - Het IP-adres van de Debian-server gevolgd door een dubbele punt en WireGuard-poort (51820).
- Toegestane IP's - 0.0.0.0/0
Als u klaar bent, klikt u op de knop "Opslaan".
Voeg de clientpeer toe aan de server #
De laatste stap is het toevoegen van de openbare sleutel en het IP-adres van de client aan de server. Voer hiervoor de volgende opdracht uit op de Debian-server:
sudo wg set wg0 peer CLIENT_PUBLIC_KEY toegestaan-ips 10.0.0.2
Zorg ervoor dat u de CLIENT_PUBLIC_KEY
met de openbare sleutel die u op de clientcomputer hebt gegenereerd (sudo cat /etc/wireguard/publickey
) en pas het IP-adres van de client aan als dit anders is. Windows-gebruikers kunnen de openbare sleutel kopiëren vanuit de WireGuard-toepassing.
Als u klaar bent, gaat u terug naar de clientcomputer en opent u de tunneling-interface.
Linux- en macOS-clients #
Voer de volgende opdracht uit om de interface te openen:
sudo wg-snel op wg0
Nu zou u verbonden moeten zijn met de Debian-server, en het verkeer van uw clientcomputer zou er doorheen moeten worden geleid. U kunt de verbinding controleren met:
sudo wg
interface: wg0 openbare sleutel: gFeK6A16ncnT1FG6fJhOCMPMeY4hZa97cZCNWis7cSo= privésleutel: (verborgen) luisterpoort: 53527 fwmark: 0xca6c peer: r3imyh3MCYggaZACmkx+CxlD6uq8+qCg/.XXX.XXX.XXX:51820 toegestane ips: 0.0.0.0/0 laatste handdruk: 53 seconden geleden overdracht: 3.23 KiB ontvangen, 3.50 KiB verzonden
U kunt ook uw browser openen, "wat is mijn ip" typen en u zou het IP-adres van uw Debian-server moeten zien.
Om de tunneling te stoppen, brengt u de wg0
koppel:
sudo wg-snel naar beneden wg0
Windows-clients #
Als u WireGuard op Windows hebt geïnstalleerd, klikt u op de knop "Activeren". Zodra de peers zijn verbonden, verandert de tunnelstatus in Actief:
Conclusie #
We hebben u laten zien hoe u WireGuard op Debian 10 installeert en configureert als een VPN-server. Met deze instelling kunt u anoniem op internet surfen door uw verkeersgegevens privé te houden.
Als u problemen ondervindt, kunt u een reactie achterlaten.