Een WireGuard VPN op VPS is een praktische manier om een eigen VPN-server te bouwen met een vast publiek IP-adres en volledige controle over de configuratie. In plaats van een account bij een commerciële VPN-aanbieder te gebruiken, draait de VPN op een virtuele server die je zelf beheert.
Dat kan interessant zijn wanneer je onderweg veilig met servers wilt verbinden, één vast IP-adres nodig hebt voor beheer of internetverkeer via een eigen server wilt laten lopen.
WireGuard is hiervoor bijzonder geschikt. Het protocol is relatief eenvoudig opgebouwd en gebruikt voor iedere deelnemer een eigen publieke en private sleutel. Ubuntu ondersteunt WireGuard rechtstreeks en documenteert configuraties voor onder meer verbindingen tussen één apparaat en een netwerk, site-to-siteverbindingen en situaties waarbij al het internetverkeer via de VPN loopt.
In deze handleiding bouwen we een complete WireGuard-server op een Ubuntu-VPS. Daarbij leggen we niet alleen uit welke commando’s nodig zijn, maar vooral waarom bepaalde instellingen nodig zijn.
Wat is een WireGuard VPN op VPS?
Een VPS, oftewel Virtual Private Server, is een virtuele server in een datacenter. Zo’n server heeft meestal een permanent publiek IP-adres en blijft dag en nacht bereikbaar.
Door WireGuard op die server te installeren maak je van de VPS een VPN-endpoint.
Je laptop of telefoon maakt vervolgens eerst een versleutelde verbinding met deze server. Vanaf daar kan verkeer verder naar internet of naar andere systemen worden gestuurd.
Bij een volledige VPN-tunnel ziet de route er vereenvoudigd als volgt uit:
Laptop → versleutelde WireGuard-tunnel → VPS → internet
Websites waarmee je verbinding maakt zien vervolgens het publieke IP-adres van de VPS.
Dat maakt een eigen VPN op een VPS bijvoorbeeld handig wanneer je vanaf verschillende internetverbindingen steeds hetzelfde uitgaande IP-adres wilt gebruiken.
Waarom WireGuard en geen willekeurige VPN-software?
WireGuard probeert veel van de complexiteit van oudere VPN-oplossingen weg te nemen.
Iedere peer heeft een private sleutel en bijbehorende publieke sleutel. De private sleutel blijft geheim op het apparaat zelf. De publieke sleutel wordt gedeeld met de andere kant van de tunnel.
Ubuntu vergelijkt dit concept met SSH-authenticatie op basis van sleutels. Een peer kent de publieke sleutel van de andere peer en kan daarmee verkeer versleutelen en controleren.
WireGuard creëert bovendien gewoon een netwerkinterface binnen Linux.
Na configuratie krijg je bijvoorbeeld:
wg0
met een intern IP-adres.
Routing, firewalls en IP-forwarding worden vervolgens met normale Linux-netwerkfuncties geregeld.
Dat maakt WireGuard relatief overzichtelijk voor een eigen VPN server.
Wanneer is een VPN op VPS interessant?
Een eigen VPS-VPN is niet alleen bedoeld om je openbare IP-adres te veranderen.
Voor zakelijke omgevingen kan een vaste VPN-uitgang bijvoorbeeld erg praktisch zijn.
Stel dat een DirectAdmin-server alleen toegang tot het beheerpaneel mag toestaan vanaf:
203.0.113.50
Wanneer dat het vaste IP-adres van je VPN is, hoeven medewerkers niet vanuit ieder thuis-, mobiel of kantoor-IP afzonderlijk toegang te krijgen.
Zij verbinden eerst met de VPN.
De beheeromgeving ziet daarna altijd hetzelfde vertrouwde IP-adres.
Hetzelfde principe kan worden toegepast op SSH, databases, interne dashboards en andere beheerinterfaces.
Zo hoef je bepaalde technische diensten niet voor ieder willekeurig internetadres open te stellen.
Is een eigen VPN hetzelfde als anoniem internetten?
Nee.
Een eigen VPN verandert vooral het punt waar je verkeer het openbare internet op gaat.
Je internetprovider ziet dat je een verbinding met je VPS maakt. De website die je bezoekt ziet vervolgens het IP-adres van je VPS.
Maar wanneer je bijvoorbeeld bij Google, Microsoft of een webshop inlogt, weet die dienst nog steeds welk account je gebruikt.
Ook cookies en andere herkenningstechnieken verdwijnen niet door WireGuard.
Daarnaast staat de VPS bij een hostingprovider.
Een private VPN server geeft je dus vooral controle over je netwerkverbinding en server. Het is geen garantie op anonimiteit.
Welke VPS heb je nodig voor WireGuard?
Voor enkele gebruikers vraagt WireGuard relatief weinig opslagruimte.
Een VPN-server hoeft immers niet duizenden mediabestanden of een grote website te bewaren.
Voor een eenvoudige persoonlijke of kleine zakelijke VPN zijn daarom vooral netwerkprestaties belangrijk.
Een VPS met bijvoorbeeld 1 tot 2 vCPU’s en 1 tot 2 GB RAM kan voor een beperkt aantal gebruikers vaak al ruim voldoende zijn. De werkelijke eisen hangen echter af van snelheid, aantal gelijktijdige gebruikers en andere software die op dezelfde VPS draait.
Let daarnaast op de netwerkpoort en hoeveelheid inbegrepen dataverkeer.
Wanneer al je internetverkeer via de VPN loopt, telt dat verkeer immers ook mee op de VPS.
Een verbinding die maandelijks slechts 1 TB verkeer toestaat kan bij intensief gebruik eerder een beperking vormen dan de processor.
Welke locatie kies je voor een VPN-server?
Afstand heeft invloed op latency.
Wanneer je in Nederland zit en een VPN-server in Nederland gebruikt, kan de extra netwerkafstand klein blijven.
Plaats je dezelfde server bijvoorbeeld in Azië terwijl je voornamelijk Nederlandse websites bezoekt, dan moet ieder verzoek een veel langere route afleggen.
Dat kan de verbinding merkbaar trager maken.
Gebruik je de VPN vooral voor Nederlands serverbeheer, dan is een Nederlands of nabijgelegen Europees datacenter meestal logisch.
Wil je juist een VPN gebruiken om een buitenlandse kantoorlocatie te bereiken, dan kan een andere locatie beter passen.
Kies de serverlocatie dus op basis van het daadwerkelijke gebruik en niet alleen op basis van de laagste VPS-prijs.
WireGuard installeren op Ubuntu 24.04
In deze handleiding gebruiken we Ubuntu 24.04.
We nemen als voorbeeld:
VPN-netwerk: 10.20.0.0/24
VPN-server: 10.20.0.1
eerste client: 10.20.0.2
WireGuard-poort: 51820/UDP
Deze adressen zijn interne VPN-adressen. Ze staan los van het publieke IP-adres van de VPS.
Werk eerst Ubuntu bij:
sudo apt update
sudo apt upgrade -y
Installeer vervolgens WireGuard:
sudo apt install wireguard -y
Ubuntu levert WireGuard via de normale pakketbronnen en gebruikt hetzelfde pakket in de officiële serverdocumentatie.
Eerst de netwerkinterface van de VPS controleren
Voordat we NAT instellen moeten we weten welke netwerkinterface de VPS gebruikt voor internet.
Voer uit:
ip route
Je krijgt bijvoorbeeld:
default via 203.0.113.1 dev ens3
Hier is:
ens3
de externe netwerkinterface.
Op een andere VPS kan deze bijvoorbeeld heten:
eth0
of:
enp1s0
Schrijf de naam op.
Later moet de NAT-configuratie namelijk verwijzen naar de echte netwerkinterface. Een verkeerde naam kan ervoor zorgen dat de VPN wel een handshake maakt, maar geen internettoegang heeft.
WireGuard sleutels genereren
Iedere WireGuard-peer krijgt een private en publieke sleutel.
Maak eerst de configuratiemap beveiligd:
sudo mkdir -p /etc/wireguard
sudo chmod 700 /etc/wireguard
Ga naar die directory:
cd /etc/wireguard
Stel vervolgens een beperkende umask in:
umask 077
Maak de private sleutel:
wg genkey | sudo tee server_private.key
Maak daarna de publieke sleutel:
sudo cat server_private.key | wg pubkey | sudo tee server_public.key
Bekijk de publieke sleutel met:
sudo cat server_public.key
De private sleutel kun je bekijken met:
sudo cat server_private.key
De private sleutel hoort geheim te blijven.
De publieke sleutel is juist bedoeld om aan clients te geven.
Waarom iedere WireGuard-client een eigen sleutel krijgt
Gebruik niet één gedeelde sleutel voor al je apparaten.
Stel dat je een laptop, telefoon en tablet hebt.
Geef ieder apparaat zijn eigen identiteit binnen WireGuard.
Bijvoorbeeld:
10.20.0.2 → laptop10.20.0.3 → telefoon10.20.0.4 → tablet
Raak je vervolgens de telefoon kwijt, dan hoef je alleen die ene publieke sleutel uit de serverconfiguratie te verwijderen.
De laptop en tablet blijven gewoon werken.
Dat maakt gebruikers- en apparaatbeheer veel veiliger en overzichtelijker.
IP forwarding activeren op de VPN server
De VPN-server ontvangt straks pakketten via wg0.
Wanneer clients ook internet via de VPS moeten gebruiken, moet Linux die pakketten kunnen doorsturen naar de openbare netwerkinterface.
Daarvoor is IP forwarding nodig.
Controleer de huidige waarde:
sysctl net.ipv4.ip_forward
Staat hier:
net.ipv4.ip_forward = 0
dan is forwarding uitgeschakeld.
Maak:
sudo nano /etc/sysctl.d/99-wireguard.conf
Plaats daarin:
net.ipv4.ip_forward=1
Activeer vervolgens de instellingen:
sudo sysctl --system
Controleer opnieuw:
sysctl net.ipv4.ip_forward
Nu moet de waarde 1 zijn.
Ubuntu gebruikt dezelfde instelling bij WireGuard-configuraties waarin verkeer tussen netwerkinterfaces moet worden gerouteerd.
De WireGuard server configureren
Maak nu:
sudo nano /etc/wireguard/wg0.conf
Een eenvoudige serverconfiguratie kan er als volgt uitzien:
[Interface]
Address = 10.20.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE
Vervang:
SERVER_PRIVATE_KEY
door de werkelijke private key.
Vervang ook ens3 wanneer jouw publieke interface anders heet.
Bescherm daarna de configuratie:
sudo chmod 600 /etc/wireguard/wg0.conf
De Ubuntu-documentatie benadrukt eveneens dat WireGuard-configuratiebestanden met private keys alleen voor root leesbaar moeten zijn.
Waarom is NAT nodig?
Stel dat je laptop binnen de VPN het adres:
10.20.0.2
heeft.
Dat is een privé-IP-adres.
Een normale internetserver kan geen antwoord rechtstreeks naar dat adres terugsturen.
Daarom vertaalt de VPS het verkeer met Network Address Translation.
De regel:
MASQUERADE
zorgt ervoor dat internetverkeer naar buiten gaat alsof het afkomstig is van het publieke IP-adres van de VPS.
Een website ziet dus niet:
10.20.0.2
maar bijvoorbeeld:
203.0.113.50
Dit is wat een full-tunnel VPN met vast IP adres mogelijk maakt.
Firewall instellen voor WireGuard
WireGuard gebruikt UDP.
In dit voorbeeld luisteren we op:
51820/UDP
Gebruik je UFW, zorg dan eerst dat SSH toegestaan blijft.
sudo ufw allow OpenSSH
Sta vervolgens WireGuard toe:
sudo ufw allow 51820/udp
Controleer:
sudo ufw status
Heeft de VPS-provider daarnaast een aparte netwerkfirewall in het klantenpaneel, dan moet daar eveneens UDP 51820 worden toegestaan.
Een serverfirewall en providerfirewall zijn twee verschillende lagen.
Het komt regelmatig voor dat WireGuard correct draait maar geen handshake krijgt omdat één van beide firewalls de poort nog blokkeert.
Eerste WireGuard client aanmaken
De private sleutel van een client maak je idealiter op het clientapparaat zelf.
Op Linux kan dat bijvoorbeeld:
umask 077
wg genkey > client1_private.key
wg pubkey < client1_private.key > client1_public.key
De private key blijft op de client.
De publieke sleutel mag naar de server.
Open daarna op de VPS:
sudo nano /etc/wireguard/wg0.conf
Voeg toe:
[Peer]
PublicKey = PUBLIC_KEY_CLIENT1
AllowedIPs = 10.20.0.2/32
AllowedIPs heeft bij WireGuard meer betekenis dan de naam misschien doet vermoeden.
Het fungeert zowel bij routing als bij het bepalen welk VPN-adres bij een bepaalde peer hoort. Ubuntu omschrijft AllowedIPs als zowel routinginformatie bij uitgaand verkeer als een vorm van toegangscontrole bij inkomend verkeer.
WireGuard client configureren
De client krijgt bijvoorbeeld:
[Interface]
PrivateKey = PRIVATE_KEY_CLIENT1
Address = 10.20.0.2/32
DNS = 1.1.1.1
[Peer]
PublicKey = PUBLIC_KEY_SERVER
Endpoint = 203.0.113.50:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
Vervang het voorbeeld-IP door het publieke IP van je VPS.
Gebruik je een domeinnaam, dan kan dat ook:
vpn.jouwdomein.nl:51820
Door:
AllowedIPs = 0.0.0.0/0
wordt al het IPv4-verkeer via de VPN gestuurd.
Ubuntu gebruikt hetzelfde principe in de documentatie voor WireGuard als standaardgateway: 0.0.0.0/0 betekent alle IPv4-adressen.
Full tunnel of split tunnel gebruiken?
Niet iedere VPN hoeft al het internetverkeer over te nemen.
Wanneer je uitsluitend enkele interne servers via WireGuard wilt bereiken, is een split tunnel vaak praktischer.
Stel dat je alleen toegang wilt tot:
10.20.0.0/24
Dan kun je gebruiken:
AllowedIPs = 10.20.0.0/24
Je normale websites blijven dan via je gewone internetverbinding lopen.
Alleen verkeer naar het VPN-netwerk gebruikt WireGuard.
Dat kan bijvoorbeeld handig zijn voor serverbeheer.
Gebruik je juist de VPN om altijd via het vaste VPS-IP naar internet te gaan? Dan gebruik je een full tunnel.
De juiste configuratie hangt dus af van het doel.
Een eigen domeinnaam voor WireGuard gebruiken
Een domeinnaam is niet verplicht.
Toch kan een subdomein het beheer eenvoudiger maken.
Bijvoorbeeld:
vpn.sanumvoorbeeld.nl
Maak een A-record dat naar het publieke IPv4-adres van de VPS verwijst.
De client gebruikt vervolgens:
Endpoint = vpn.sanumvoorbeeld.nl:51820
Verhuis je later de VPN naar een andere VPS, dan hoef je alleen het DNS-record aan te passen.
De clientconfiguraties kunnen hetzelfde blijven.
Houd wel rekening met DNS-caching wanneer het IP-adres verandert.
Daar sluit het onderwerp direct aan op DNS propagation en servermigraties.
WireGuard starten en automatisch laten opstarten
Wanneer de configuratie klaar is, start je de interface:
sudo wg-quick up wg0
Controleer vervolgens:
sudo wg show
Wanneer alles correct werkt, zie je de interface, poort en peers.
Wil je dat WireGuard na iedere reboot automatisch start:
sudo systemctl enable wg-quick@wg0
Je kunt hem ook meteen via systemd starten:
sudo systemctl enable --now wg-quick@wg0
Controleer daarna:
sudo systemctl status wg-quick@wg0
Hoe controleer je of de WireGuard VPN werkt?
Verbind eerst de client.
Controleer daarna op de server:
sudo wg show
Bij de peer hoort uiteindelijk iets te verschijnen als:
latest handshake
Wanneer daar een recent tijdstip staat, hebben server en client elkaar cryptografisch bereikt.
Test vervolgens het interne VPN-adres:
ping 10.20.0.1
Bij een full tunnel controleer je daarna welk publiek IP-adres de client gebruikt.
Dat hoort het publieke IP-adres van de VPS te zijn.
Werkt de handshake maar internet niet, dan is meestal niet WireGuard zelf het probleem. Routing, forwarding of NAT verdient dan aandacht.
WireGuard handshake werkt niet
Wanneer geen handshake ontstaat, moet je vrij systematisch controleren.
Begin bij de server:
sudo wg show
Controleer daarna of WireGuard echt luistert:
sudo ss -lunp | grep 51820
Controleer vervolgens de firewall.
Kijk ook of het endpoint van de client naar het juiste IP-adres en de juiste UDP-poort wijst.
Daarna controleer je de keys.
Een publieke sleutel van peer A moet aan de andere kant bij peer A zijn toegevoegd. Wanneer keys tussen meerdere apparaten door elkaar zijn geraakt, ontstaat geen geldige handshake.
Ubuntu adviseert bij WireGuard-problemen eveneens om als eerste keys, AllowedIPs, routes en IP forwarding te controleren.
Handshake werkt wel, maar internet niet
Dit is een andere foutcategorie.
Wanneer wg show een recente handshake laat zien, werkt de WireGuard-tunnel zelf.
Controleer vervolgens:
sysctl net.ipv4.ip_forward
Dat moet 1 zijn.
Kijk daarna naar de externe interface:
ip route
Wanneer de interface bijvoorbeeld eth0 heet maar in de PostUp-regel ens3 staat, wordt NAT via de verkeerde interface uitgevoerd.
Controleer tenslotte of firewallregels forwarding toestaan.
Dit is een goed voorbeeld waarom je bij VPN-problemen eerst moet bepalen welk onderdeel niet werkt.
Geen handshake en geen internet zijn twee totaal verschillende problemen.
WireGuard configuratie aanpassen zonder serverreboot
Na het toevoegen van een nieuwe peer hoef je de volledige VPS niet opnieuw op te starten.
Je kunt WireGuard bijvoorbeeld herladen door:
sudo wg-quick down wg0
sudo wg-quick up wg0
Bij een productieomgeving moet je wel bedenken dat bestaande tunnels hierdoor kort worden onderbroken.
Er bestaan ook methodes om configuraties dynamisch toe te passen zonder volledige interface-down/up, maar voor een kleine eigen VPN is herstarten meestal overzichtelijk.
Controleer na iedere wijziging opnieuw:
sudo wg show
Zo weet je direct welke configuratie actief is.
Meer gebruikers aan WireGuard toevoegen
Voor een tweede gebruiker maak je opnieuw een aparte keypair.
De serverconfiguratie krijgt bijvoorbeeld:
[Peer]
PublicKey = PUBLIC_KEY_LAPTOP
AllowedIPs = 10.20.0.2/32
[Peer]
PublicKey = PUBLIC_KEY_TELEFOON
AllowedIPs = 10.20.0.3/32
[Peer]
PublicKey = PUBLIC_KEY_TABLET
AllowedIPs = 10.20.0.4/32
Gebruik nooit hetzelfde VPN-IP voor twee gelijktijdige peers.
WireGuard moet immers weten naar welke peer verkeer voor een bepaald adres gestuurd moet worden.
Voor tientallen gebruikers wordt handmatig beheer uiteindelijk minder praktisch.
Dan kan aanvullende automatisering of een beheerlaag interessant worden.
WireGuard op Windows, Android en iPhone
De server hoeft Linux te draaien, maar clients hoeven dat niet.
WireGuard is cross-platform. Ubuntu omschrijft het eveneens als een moderne VPN-implementatie die op verschillende platforms gebruikt kan worden.
Op mobiele apparaten wordt een configuratie vaak geïmporteerd als bestand of via een QR-code.
Voor iedere telefoon blijft hetzelfde principe gelden:
de telefoon krijgt zijn eigen private key;
de server krijgt alleen de publieke key;
de telefoon krijgt een uniek VPN-IP.
Zo blijft het beheer per apparaat gescheiden.
DNS via de WireGuard VPN
In het clientvoorbeeld staat:
DNS = 1.1.1.1
Daarmee geef je aan welke DNS-resolver de client tijdens gebruik van de VPN moet gebruiken.
Je kunt ook een eigen DNS-server op de VPS draaien.
Dat kan bijvoorbeeld met Unbound of BIND.
Ubuntu documenteert bij full-tunnel WireGuard expliciet dat een eigen resolver op de VPN-gateway gebruikt kan worden.
Dat wordt vooral interessant wanneer je interne hostnamen wilt gebruiken of DNS-verkeer eveneens volledig onder eigen beheer wilt houden.
Voor een simpele VPN is een externe resolver echter gemakkelijker te beheren.
DNS leaks bij een VPN
Een full-tunnel VPN kan al het IP-verkeer naar de VPS sturen, terwijl DNS onder bepaalde configuraties toch via een andere resolver loopt.
Dat wordt vaak een DNS leak genoemd.
Het resultaat is dat je verkeer wel via de VPS gaat, maar DNS-verzoeken bijvoorbeeld nog naar een resolver van het lokale netwerk worden gestuurd.
Daarom is het verstandig bij een full-tunnelopstelling zowel het publieke IP-adres als de gebruikte DNS-resolver te controleren.
WireGuard zelf bepaalt niet automatisch hoe ieder besturingssysteem DNS afhandelt.
De clientconfiguratie en OS-integratie spelen daarbij een rol.
IPv6 bij WireGuard VPN
Tot nu toe hebben we alleen IPv4 via de tunnel gestuurd.
Wanneer de client tegelijkertijd een normale IPv6-verbinding heeft, kan IPv6-verkeer buiten de IPv4-VPN blijven gaan.
Wil je een echte dual-stack full tunnel, dan moet de VPN ook een intern IPv6-bereik krijgen en moet IPv6-forwarding en routing correct worden ingesteld.
Voeg daarom niet blind:
::/0
toe aan de client wanneer de serverzijde daar niet op voorbereid is.
Voor een eerste installatie is alleen IPv4 overzichtelijker.
Wil je daarna IPv6 ondersteunen, bouw dit bewust als tweede netwerklaag op.
WireGuard VPN beveiligen
WireGuard zelf gebruikt moderne cryptografie, maar de totale beveiliging hangt ook van Ubuntu en de VPS af.
Een slecht onderhouden VPN-server kan alsnog risico’s opleveren.
Installeer daarom regelmatig beveiligingsupdates.
Beveilig SSH bij voorkeur met keys en beperk beheertoegang waar mogelijk.
Zorg daarnaast dat de WireGuard private keys niet leesbaar zijn voor normale gebruikers.
Ook de clients verdienen aandacht.
Wanneer een laptop wordt gestolen, verwijder je de betreffende public key direct van de server.
Daarmee wordt alleen dat apparaat afgesloten.
Moet WireGuard op dezelfde VPS als websites staan?
Technisch kan dat.
Een VPS waarop Plesk of DirectAdmin draait kan eveneens WireGuard gebruiken.
Toch is het verstandig na te denken over scheiding van functies.
Wanneer je VPN vooral bedoeld is om beheerinterfaces te beschermen, kan een afzonderlijke kleine VPS juist aantrekkelijk zijn.
Valt de webserver uit, dan blijft je beheer-VPN mogelijk gewoon beschikbaar.
Daarnaast voorkom je dat fouten in firewall- of routingconfiguratie van de VPN direct allerlei productie-websites raken.
Voor een kleine omgeving kan één server echter voldoende zijn.
De juiste keuze hangt af van hoe kritisch de infrastructuur is.
VPN gebruiken om DirectAdmin, Plesk en SSH af te schermen
Dit is een van de interessantste zakelijke toepassingen.
Stel dat DirectAdmin draait op:
server.example.nl:2222
Normaal is die poort wereldwijd bereikbaar.
Met een VPN kun je firewallregels zo instellen dat poort 2222 alleen bereikbaar is vanuit:
10.20.0.0/24
of uitsluitend vanaf het publieke VPN-IP.
Gebruikers moeten vervolgens eerst WireGuard activeren voordat het controlepaneel reageert.
Hetzelfde kan worden gedaan met SSH.
Daarmee verklein je het aanvalsoppervlak van beheerinterfaces aanzienlijk.
Let wel op dat je altijd een herstelroute behoudt via bijvoorbeeld een providerconsole. Een foutieve firewallregel mag je niet permanent buiten je eigen server sluiten.
Hoe snel is een WireGuard VPN?
De uiteindelijke snelheid wordt bepaald door meerdere factoren.
Stel dat je thuis 1 Gbit/s glasvezel hebt, maar de VPS een netwerkpoort van maximaal 100 Mbit/s.
Dan kan de VPN nooit structureel 1 Gbit/s leveren.
Ook CPU-prestaties, afstand tot het datacenter en netwerkroute spelen mee.
WireGuard zelf is ontworpen als een lichte moderne VPN-techniek, maar infrastructuur blijft bepalend.
Meet daarom niet alleen de snelheid zonder VPN.
Vergelijk:
je normale verbinding;
latency naar de VPS;
snelheid met WireGuard actief;
CPU-gebruik op de VPS tijdens de test.
Zo kun je zien waar de werkelijke beperking ontstaat.
WireGuard VPN traag: eerst de oorzaak vinden
Een trage VPN kan bijvoorbeeld ontstaan door een ver weg gelegen VPS.
Ook de server kan tegen een CPU- of netwerkgrens lopen.
Daarnaast kan MTU een rol spelen.
Wanneer pakketten te groot zijn voor een deel van de netwerkroute, kunnen fragmentatie of verbindingsproblemen ontstaan.
Verander MTU echter niet willekeurig omdat een online tutorial één bepaalde waarde noemt.
Begin eerst met het controleren van latency, packet loss en serverbelasting.
Net als bij WordPress-performance geldt ook hier: meten voordat je optimaliseert.
Wat is PersistentKeepalive?
Bij mobiele clients en apparaten achter NAT zie je vaak:
PersistentKeepalive = 25
WireGuard werkt met UDP en heeft geen traditionele permanente TCP-verbinding.
Wanneer een peer achter NAT langere tijd geen verkeer verstuurt, kan de mapping in router of firewall verdwijnen.
PersistentKeepalive laat de client periodiek een klein pakket versturen zodat deze mapping actief blijft.
Dat is vooral nuttig voor telefoons, laptops en andere clients die achter wisselende routers zitten.
Het is niet noodzakelijk om dit zonder reden aan beide zijden overal in te stellen.
Gebruik het vooral bij peers die achter NAT bereikbaar moeten blijven.
Een WireGuard VPN back-uppen
WireGuard gebruikt relatief weinig configuratiebestanden, maar deze zijn wel kritisch.
Op de server bevindt de belangrijkste configuratie zich bijvoorbeeld in:
/etc/wireguard/
Maak hiervan een versleutelde en goed beveiligde back-up.
Hier staan namelijk private sleutels in.
Plaats die back-up nooit in een openbare Git-repository of onbeveiligde downloadmap.
De server hoeft overigens geen kopie van iedere client-private-key te bewaren.
Idealiter kent de server alleen de publieke keys van clients.
Dat beperkt de gevolgen wanneer de VPN-server ooit gecompromitteerd raakt.
VPN op VPS en server failover
Een enkele VPN-VPS is zelf een single point of failure.
Wanneer het datacenter of de VPS uitvalt, kunnen clients niet meer via die server verbinden.
Voor persoonlijk gebruik is dat vaak acceptabel.
Voor bedrijfskritisch serverbeheer kun je een tweede VPN-endpoint overwegen.
Bijvoorbeeld:
VPN 1 → Nederlands datacenter A
VPN 2 → Nederlands datacenter B
Medewerkers krijgen dan twee configuraties.
Wanneer VPN 1 niet bereikbaar is, kunnen zij handmatig VPN 2 activeren.
Voor grotere infrastructuren kun je dit verder automatiseren.
Hier raakt het VPN-onderwerp direct aan server failover en high availability.
WireGuard VPN op VPS versus commerciële VPN
Een commerciële VPN-dienst en een eigen VPS-VPN lossen verschillende problemen op.
Een commerciële provider biedt meestal veel exitlocaties en eenvoudig te gebruiken apps.
Een eigen VPS geeft daarentegen veel meer controle over IP-adres, firewall en routing.
Bovendien gebruik je niet automatisch hetzelfde exit-IP met duizenden onbekende klanten van een VPN-provider.
Daar staat tegenover dat je zelf verantwoordelijk bent voor onderhoud.
Wanneer Ubuntu beveiligingsupdates nodig heeft, moet jij of je serverbeheerder die uitvoeren.
Voor professioneel serverbeheer kan die extra controle juist de belangrijkste reden zijn om voor een eigen VPN te kiezen.
Wanneer is WireGuard op een VPS de juiste keuze?
Een WireGuard VPN op VPS is vooral interessant wanneer je een concreet technisch doel hebt.
Een eigen vast IP-adres voor serverbeheer is daar een goed voorbeeld van.
Ook veilige toegang vanaf openbare of wisselende netwerken kan een reden zijn.
Daarnaast kan de VPS dienen als centrale verbinding tussen verschillende apparaten of servers.
Wil je alleen af en toe met één klik een VPN-locatie in twintig verschillende landen kiezen? Dan is een commerciële VPN meestal eenvoudiger.
Zelfhosting is vooral aantrekkelijk wanneer controle, beheer en integratie met je eigen infrastructuur belangrijk zijn.
WireGuard VPN op VPS laten inrichten door Sanum
Sanum kan een WireGuard VPN op VPS inrichten als onderdeel van VPS-, hosting- en serverbeheer.
Daarbij kan niet alleen WireGuard zelf worden geïnstalleerd. Ook routing, firewall, DNS en toegang tot bestaande servers moeten correct worden afgestemd.
Een VPN kan bijvoorbeeld worden gebruikt om Plesk, DirectAdmin, SSH of andere beheerinterfaces alleen bereikbaar te maken voor geautoriseerde VPN-gebruikers.
Voor iedere medewerker of apparaat kan een afzonderlijke WireGuard-key worden aangemaakt.
Ook kan worden bekeken of full tunnel of split tunnel het beste past bij de toepassing.
Bij zakelijk gebruik kunnen daarnaast back-ups, monitoring, IPv6 en een secundair VPN-endpoint worden meegenomen.
Wil je een eigen WireGuard VPN op een VPS laten installeren? Sanum kan de VPS, WireGuard-configuratie, firewall, routing en toegang tot bestaande serverdiensten volledig inrichten.
Veelgestelde vragen over WireGuard VPN op VPS
Kan WireGuard op iedere VPS worden geïnstalleerd?
Op een normale Linux-VPS met voldoende rechten kan WireGuard doorgaans worden gebruikt. Controleer wel welke kernel, virtualisatietechniek en netwerkbeperkingen de provider toepast.
Welke Ubuntu-versie kan ik gebruiken voor WireGuard?
WireGuard wordt rechtstreeks ondersteund op recente Ubuntu-versies. Voor een nieuwe installatie is een actuele LTS-versie zoals Ubuntu 24.04 een logische keuze.
Heb ik een dure VPS nodig voor WireGuard?
Voor enkele gebruikers meestal niet. Netwerksnelheid en dataverkeer zijn vaak belangrijker dan veel opslagruimte. Bij veel gelijktijdige gebruikers of zeer hoge snelheden neemt de benodigde capaciteit toe.
Welke poort gebruikt WireGuard?
WireGuard gebruikt UDP. Poort 51820 wordt veel gebruikt als standaardvoorbeeld, maar je kunt een andere UDP-poort configureren.
Heb ik een domeinnaam nodig voor mijn VPN?
Nee. Clients kunnen rechtstreeks naar het publieke IP-adres van de VPS verbinden. Een hostname maakt migraties en beheer vaak wel eenvoudiger.
Wat betekent AllowedIPs in WireGuard?
AllowedIPs bepaalt onder andere welk verkeer naar een peer wordt gerouteerd en welke adressen bij inkomend verkeer bij die peer horen. Het heeft dus zowel een routing- als toegangscontrolefunctie.
Wat betekent 0.0.0.0/0 in een WireGuard-configuratie?
Dit vertegenwoordigt alle IPv4-adressen. Wanneer het bij een client onder de VPN-peer staat, kan al het IPv4-verkeer via die VPN worden gerouteerd.
Kan ik alleen serververkeer via WireGuard laten lopen?
Ja. Gebruik daarvoor split tunneling en plaats alleen de gewenste interne netwerken of server-IP’s in AllowedIPs.
Waarom heeft WireGuard IP forwarding nodig?
Wanneer een VPN-server verkeer van clients naar andere netwerken of internet moet doorsturen, moet Linux routing tussen netwerkinterfaces toestaan. Daarvoor wordt IP forwarding gebruikt.
Waarom krijg ik wel een WireGuard handshake maar geen internet?
Dan werkt de WireGuard-tunnel waarschijnlijk, maar is er meestal een probleem met forwarding, NAT, firewall of routing. Controleer ook of de externe interface in de NAT-regel correct is.
Waarom krijg ik helemaal geen handshake?
Controleer publieke keys, endpoint, UDP-poort en firewalls. Ubuntu adviseert daarnaast AllowedIPs, routes en de WireGuard-interface te controleren.
Kan ik meerdere gebruikers op één WireGuard VPN zetten?
Ja. Geef iedere gebruiker of ieder apparaat een aparte keypair en een uniek VPN-IP-adres.
Kan WireGuard naast Plesk of DirectAdmin draaien?
Ja. WireGuard werkt op serverniveau en kan naast een hostingpaneel worden gebruikt. Firewall- en routingregels moeten wel goed op de bestaande serveromgeving worden afgestemd.
Kan ik DirectAdmin alleen via WireGuard toegankelijk maken?
Ja. Een firewall kan toegang tot de DirectAdmin-poort beperken tot het VPN-netwerk of een vertrouwd VPN-IP. Zorg wel voor een alternatieve herstelmogelijkheid via de providerconsole.
Is een eigen WireGuard VPN anoniem?
Niet volledig. De VPN verandert het uitgaande IP en versleutelt het verkeer naar de VPS, maar accounts, cookies en andere identificatiemethoden blijven bestaan.
Kan WireGuard ook IPv6 gebruiken?
Ja. WireGuard kan IPv6 routeren. Hiervoor moeten zowel client als server echter correct met IPv6-adressen, forwarding en routing worden geconfigureerd.
Wat is beter: full tunnel of split tunnel?
Full tunnel is geschikt wanneer al het internetverkeer via het VPN-IP moet gaan. Split tunnel is meestal efficiënter wanneer je de VPN alleen gebruikt voor toegang tot specifieke interne servers of netwerken.
Kan ik twee WireGuard VPN-servers gebruiken voor failover?
Ja. Voor eenvoudige omgevingen kun je clients twee VPN-profielen geven. Bij uitgebreidere zakelijke infrastructuur kan een redundantere architectuur worden ontworpen.