Blog overzicht

Maak van je VPS een VPN met WireGuard

Update (juli 2020):

Sinds het verschijnen van dit artikel heeft Wireguard een aantal mooie ontwikkelingen doorgemaakt. Nadat het al de officiële goedkeuring had van Linus Torvalds is het in december 2019 toegevoegd aan de “net-next”-tree van Linux, waarna het in januari 2020 officieel is toegevoegd aan de mainline-Linuxkernel. Sindsdien zijn er Wireguardversies opgenomen in bijvoorbeeld de testversie van Debian 11, de Generic Kernel Image van Android en in OpenBSD.

De installatiegids is sinds het publiceren van dit artikel ook uitgebreid en bevat nu nog meer platformen waar Wireguard op draait. Veel van deze uitvoeringen zijn inmiddels uit bètastatus. Ook zijn er naast de Wireguardmodules tools toegevoegd aan deze pagina om met die modules te kunnen werken.


In een eerder artikel schreven we over het gebruiken van een VPN-verbinding en de voordelen daarvan. We stipten ook al even kort aan dat het mogelijk is om een VPN op je VPS te installeren. In dit artikel gaan we hier verder op in: wat is het voordeel van een VPN via je eigen VPS en hoe zet je dit op met behulp van het WireGuard-protocol?

Jouw verbinding, jouw data

Je VPS instellen als jouw privé-VPN heeft zo zijn toepassingen. Het is bijvoorbeeld goed te gebruiken om een versleutelde verbinding op te zetten vanuit het buitenland. Hierdoor is het ideaal voor mensen die regelmatig aangewezen zijn op hotel-wifi en openbare netwerken in de trein of in cafés. Die verbindingen zijn zo alsnog veilig te gebruiken, want ze zijn via je VPS versleuteld. Het grootste voordeel is nog wel dat je zelf al jouw verkeer in handen houdt. Je hoeft je dus geen zorgen te maken dat je VPN-provider aan de haal gaat met je gegevens.

Het is echter minder geschikt als je vrij wilt zijn in de keuze van het IP-adres van je VPN-server, omdat je VPS in de meeste gevallen over een vast IP-adres beschikt. Ook is het niet zo kant-en-klaar in te zetten als een VPN-account dat je afneemt bij een VPN-leverancier. Je zult namelijk zelf aan de slag moeten om je server gebruiksklaar te maken en het VPN-protocol in te stellen op je VPS.

WireGuard logo

WireGuard

Tegenwoordig zijn er veel VPN-leveranciers die deze self-hosted functionaliteit aanbieden. Er is er echter één die de afgelopen tijd veel aandacht krijgt: WireGuard. Deze relatief nieuwe speler op de VPN-markt belooft sneller, stabieler en gebruiksvriendelijker te zijn dan gevestigde namen als OpenVPN en IPSec. WireGuard werkt met de laatste stabiele versies van hoogwaardige encryptiealgoritmes. Het is ook vele malen sneller in het opzetten van de verbinding dan zijn concurrenten en lijkt veel stabieler te zijn in het behouden van die connectie. Dit heeft vooral zijn voordelen wanneer je een VPN gebruikt op openbare netwerken en niet zomaar terug wilt vallen naar een publieke verbinding.

Compact, snel, en cross-platform te gebruiken

Daarnaast is het voor een opensourceproject ook vele malen makkelijker te reviewen. Dit is te danken aan de compacte codebase: zo’n 4000 regels code, tegenover de 70.000 regels code in OpenVPN. WireGuard is al te gebruiken op een waslijst aan Linux-distributies. Het is ook beschikbaar voor Windows, macOS, BSD, iOS en Android in handige softwareclients. En laten we vooral niet vergeten dat het al de goedkeuring heeft van Linus Torvalds zelf.

Nog in Alpha

Maar WireGuard heeft ook zo zijn minder goede kanten: het staat om te beginnen nog in de kinderschoenen. Op dit moment geeft het team achter WireGuard zelf ook aan dat er nog geen stabiele 1.0-release beschikbaar is. Alle huidige snapshots moeten niet gezien worden als echte releases. Omdat het nog volop in ontwikkeling is, kan WireGuard daarom nog wel beveiligingsproblemen bevatten. Daarnaast heeft het protocol toegang tot alle server-resources omdat het direct vanuit de Linux-kernel werkt. Hoewel er op dit moment geen securitygevaren bekend zijn, kan die toegang wel problemen opleveren. Dat is iets om in het achterhoofd te houden.

Niet direct geschikt voor grote ondernemingen

Ten slotte is het door het gebruik van vaste IP-adressen niet heel makkelijk inzetbaar voor grote ondernemingen. WireGuard biedt geen ondersteuning voor het dynamisch toewijzen van IP-adressen. Elke client die gebruikt wordt, zal handmatig in de configuratie moeten worden toegevoegd met het bijbehorende IP-adres. Heb jij graag zelf helemaal de touwtjes in handen en wil je weten waar je data naartoe gaat of wat er mee gebeurt? Dan is het opzetten van een VPN op je eigen VPS met WireGuard een leuke uitdaging.

Zelf aan de slag

Inmiddels zijn er op het internet voor bijna elke distributie wel handleidingen te vinden om WireGuard te installeren op je eigen VPS. Wil je zelf aan de slag? Dan is het aan te raden om na het lezen van dit artikel zelf even een handleiding op te zoeken voor jouw Linux-distributie en -versie. Omdat WireGuard nog geen stabiele versie heeft, is de software in de meeste distributies nog niet standaard opgenomen in de package list. Daarom zal deze eerst handmatig toegevoegd moeten worden aan de repository. Kijk voor de juiste installatie voor jouw distributie op de website van WireGuard.

Omdat WireGuard draait als kernelmodule, zul je hem handmatig moeten activeren. Dat doe je als volgt:

modprobe wireguard

Mocht een reboot je voorkeur hebben, voer die dan nu uit. Controleer of je deze stap goed hebt doorlopen met het commando lsmod:

WireGuard is correct geïnstalleerd

Configureer je server

WireGuard heeft een eigen commando om een key pair aan te maken voor de server of client:

wg genkey | sudo tee privatekey | wg pubkey | sudo tee publickey

Met dit key pair kun je beginnen met de configuratie. Maak deze aan op de juiste plek. Meestal is dit /etc/WireGuard/. WireGuard gaat zelf uit van het bestand wg0.conf, maar deze kun je uiteraard hernoemen.

Dit is een voorbeeld van een configuratie van WireGuard

Let op dat er bij de netwerkinterface in dit voorbeeld gewerkt wordt met ens3. Dit kan afhangen van je distributie. Als je gekozen hebt voor een interne IP-reeks zoals de 10.10.0.X-reeks in de voorbeelden in dit artikel, moet je je NAT instellen. Pas verder je firewalls aan zodat de port daadwerkelijk openstaat. Vergeet hem niet open te zetten voor UDP. WireGuard gebruikt zelf standaard port 51820, maar dit is aan te passen in de configuratie.

Als laatste stap laad je WireGuard. Dit doe je met het commando:

wg-quick up wg0

Als je de naam van het configuratiebestand hebt aangepast, verander hier dan 'wg0' in de naam van jouw nieuwe bestand.

Stel je client in

Wanneer je deze stappen hebt doorgelopen, is het tijd om een client in te stellen en de public key van je client toe te voegen aan de configuratie op de server. WireGuard heeft inmiddels ook een aantal softwareclients geproduceerd voor verschillende platformen. Deze maken het gebruiken van je kersverse VPN heel makkelijk, zelfs voor minder technisch onderlegde eindgebruikers. De Windows-client werkt met een configuratievenster die bij het opzetten al automatisch een nieuw key pair aanmaakt. De rest van de configuratie moet aangevuld worden met de gegevens van de VPN-server:

Wireguard op Windows

WireGuard-apps op iOS of Android

De iOS- en Android-apps zijn te downloaden via de App Store of Google Play. Beide apps laten je automatisch een key pair genereren. Ze werken niet met een handmatig aan te passen config, maar met een aantal invoervelden. Hier vul je de public key van de server, het IP-adres van de server en andere van toepassing zijnde data heel makkelijk en snel in.

WireGuard-configuratie in iOS

Als deze velden zijn ingevuld, is het nog een kwestie van de client toevoegen aan de configuratie op de server. Hiervoor heeft WireGuard het volgende commando:

wg set wg0 peer <public key van de client> allowed-ips <IP-adressen van de client>

Als deze is uitgevoerd met de juiste public key en IP-adressen voor elke te gebruiken client, is de VPN op je VPS klaar voor gebruik. Test je verbinding met een tool als myip.nl om zeker te weten dat je IP-adres veranderd is naar dat van je VPS. Of controleer je installatie op de server met het commando ‘wg’. Dit zal een vergelijkbaar resultaat geven als onderstaand screenshot:

en voorbeeld van correct geïnstalleerde WireGuard-software met twee correct ingestelde peers

Nog meer gadgets

WireGuard is relatief makkelijk te installeren en te gebruiken. Daarnaast biedt het nog meer mogelijkheden die (nog) niet standaard ingebouwd zijn. De Android- en iOSapps hebben allebei al de functionaliteit ingebouwd gekregen om QR-codes uit te lezen. Hiermee zet je in één keer een tunnel op. Dit maakt de software voor eindgebruikers op mobiele apparaten zo mogelijk nog eenvoudiger. Wil je hier gebruik van maken, zul je wat tijd moeten steken in het toevoegen van de qrencode-functionaliteit.

Je VPS als DNS

In de voorbeelden in dit artikel zijn we uitgegaan van de DNS van Google. Heb je liever de touwtjes helemaal zelf in handen? Stel dan je VPS ook in als je eigen DNS, bijvoorbeeld met de service Unbound.

Daarnaast is het afwachten welke functionaliteiten het team van WireGuard nog zal gaan toevoegen. De eerste stabiele versie zal hopelijk niet lang op zich laten wachten. Maar laat dat je er vooral niet van weerhouden om WireGuard nu al een kans te geven. Ook in deze bètaversie is WireGuard al een ontzettend sterke VPN en een mooie toevoeging voor op je VPS.


Beoordeel dit artikel

Deel dit artikel

Gerelateerde artikelen

Blog overzicht

Auteur: Stefanie Weber

Houdt er als tech-copywriter van om antwoorden te zoeken op de vraag 'maar, hoe dan?' en dat zo uit te leggen dat zelfs haar moeder het zou snappen. Kan in haar vrije tijd haar handen ook niet stilhouden, dus speelt MMO's of knoeit met verf en kwasten.