c’t 08-09/2026
Vibe coding voor developers
Cover van
Cover voor Netmaker als P2P-VPN-coördinator installeren en configureren

Netmaker als P2P-VPN-coördinator installeren en configureren

WireGuard heeft zich binnen een paar jaar gevestigd als VPN-protocol. Het configureren van verbindingen met tekstbestanden wordt bij kleine groepen VPN-gebruikers echter al een gedoe. We laten je zien hoe je met Netmaker je WireGuard-netwerk onder controle houdt.

Van WireGuard naar centraal VPN-beheer met Netmaker

WireGuard bestaat nog maar acht jaar, maar in die tijd heeft het VPN-protocol dankzij de overzichtelijke configuratie met korte tekstbestanden die voor beheerders makkelijk te begrijpen zijn, zich razendsnel populair weten te maken in de VPN-wereld.

WireGuard is gratis en de apps voor pc’s en mobiele apparaten zijn net zo overzichtelijk als het configureren. De meeste gangbare routers ondersteunen die nieuwe VPN-technologie. Daardoor vergeet je al snel het gedoe met de talloze instellingsopties van IPsec en OpenVPN.

Bij kleine netwerken met weinig VPN-verbindingen is WireGuard snel opgezet, maar vanaf een stuk of vijf apparaten (peers) wordt het handmatig beheren van de configuratiebestanden nogal een gedoe. Dat geldt des te meer als er meerdere locatieverbindingen (site-to-site-VPN’s) of zelfs een overkoepelend meshnetwerk bijkomen, waarin iedereen met iedereen moet kunnen communiceren.

Dan is het moment aangebroken voor een peer-to-peer VPN-systeem zoals Netmaker, dat op WireGuard gebaseerd is [1]. De software dekt de toepassingen voor toegang op afstand, beheer en site-VPN’s af, en eventueel ook volledig gemeshte netwerken.

Qua kosten volgt Netmaker een gangbaar licentiemodel: de community-editie is gratis te gebruiken, zakelijke klanten krijgen ondersteuning tegen betaling.

We laten je hier zien hoe je de community-variant op je eigen infrastructuur kunt installeren, naar keuze lokaal of bij een cloudprovider.

Lees dit artikel verder

Lees over tech-trends en achtergronden, nieuwe apparatuur, software en toepassingen voor professioneel gebruik. Met c’t heb je altijd de juiste tech-informatie. Word abonnee en lees onbeperkt alle artikelen.
Bekijk abonnementen Al abonnee? Log in

In de community-versie laat Netmaker een aantal coole functies achterwege. Daar hoort bijvoorbeeld de clientauthenticatie via een identiteitsprovider bij, die gebruikmaakt van gebruikersaccounts bij Microsoft of Google.

Ook ontbreekt de toegangscontrole van de Pro-versie, waarmee je precies kunt bepalen wat er in en uit het Netmaker-netwerk mag stromen. Ook hoge beschikbaarheid via redundante gateways of Egress-routes kost extra.

Verder krijgen alle lokaal aangemaakte accounts beheerdersrechten – wat voor- en nadelen heeft. Als je die beperkingen niet wilt accepteren, kun je de betaalde versie na registratie zeven dagen lang uitproberen voordat je moet beslissen of je het abonnement wel of niet neemt.

Afhankelijk van het tarief en het model (server in de cloud of on-premises) kost een netwerk met tien verbindingen bijvoorbeeld tussen de 20 en 80 dollar per maand.

Architectuur

Netmaker bestaat in de kern uit een besturingsserver, een beheerinterface, een database en de WireGuard-server. Instellingen pas je via een browser aan en alle wijzigingen komen in de database terecht, van waaruit de server de WireGuard-kernelmodule aanstuurt. Daar komen nog een DNS-server voor de interne naamomzetting en een messagebroker bij.

Netmaker-architectuur

De Netmaker-server beheert de configuratie van alle VPN-verbindingen centraal, authenticeert clients en stuurt hun individuele instellingen door. (Afbeelding Mike Bunjes / c’t, WireGuard-logo: Jason A. Donenfeld)

Het concept doet denken aan software defined networking, want Netmaker scheidt de dataplane – oftewel de WireGuard-verbindingen die gegevens vervoeren – van de controlplane. De Netmaker-server of coördinator stuurt de configuratie via een apart kanaal naar zijn ‘klanten’, waarop de Netmaker-client-app draait.

Als het VPN bijvoorbeeld een nieuwe IP-route nodig heeft, hoeft je die als beheerder alleen maar via de browser aan te maken. Via de controlplane gaat de wijziging naar alle clients, zonder dat iemand daar handmatig in de configuratie hoeft in te grijpen.

Om de Netmaker-wereld onder de knie te krijgen, helpt wat kennis van de terminologie. Een node is een gewone deelnemer. Dat kan een laptop zijn met de standaard WireGuard-client, hoewel de Netmaker-client door zijn verbinding met de controlplane voordeliger is.

Gateways zijn nodes met een statisch IP-adres zonder adresomzetting, bijvoorbeeld een rootserver met openbare IPv4/IPv6-adressen. Ze maken een VPN-verbinding mogelijk voor andere apparaten. Op een gateway moet de Netmaker-client draaien, omdat die voortdurend in contact staat met de coördinator. Wat het besturingssysteem betreft, is er maar één keuze: Linux.

Als het gehele Netmaker-VPN verbinding moet maken met het lokale netwerk op een locatie, komt de Egress in beeld, in de documentatie ook wel Egress Node genoemd. Die fungeert als router en voert de route naar het lokale netwerk via de controlplane in de routingtabellen van de andere Netmaker-nodes in.

Eventueel komt daar Network Address Translation (NAT) bij, zodat LAN-hosts zonder Netmaker-app kunnen reageren op verzoeken vanuit het VPN.

Installeren

Netmaker biedt zijn software aan als Docker-container en als binaire bestanden voor diverse Unix-achtige besturingssystemen. Om snel aan de slag te kunnen, bieden de ontwikkelaars een installatiescript dat alle benodigde softwarecomponenten downloadt, vragen stelt over de geplande omgeving en uiteindelijk de containers start.

Als platform is een virtuele machine bij een cloudprovider of in een eigen datacenter geschikt. De vereisten om te beginnen zijn laag, dus bijvoorbeeld een gratis virtuele machine uit het Free Tier AWS-aanbod van Amazon is voldoende. De Netmaker-documentatie gaat momenteel nog uit van Ubuntu 24.04.

Als de cloudprovider een firewall voor de Netmaker-VM zet, moet je een paar poorten openzetten. Volg daarvoor de documentatie van je cloudprovider. De poortlijst staat in de korte handleiding voor de serverinstallatie van Netmaker (zie de link bij dit artikel).

Maak tot slot drie DNS-vermeldingen aan: een DNS-naam is essentieel voor de TLS-certificaten die de HTTPS-verbindingen beveiligen, waarmee de clients hun configuratie van de coördinator ophalen. Netmaker heeft telkens een DNS-vermelding nodig voor dashboard, api en broker. Die verwijzen allemaal naar het IPv4- en IPv6-adres van de zojuist geïnstalleerde Netmaker-VM.

Als je geen eigen DNS-domein hebt, krijg je een generieke naam die bestaat uit het IPv4-adres en eindigt op het domein nip.io. Daarmee is bijvoorbeeld nm.192-0-2-161.nip.io, hoewel misschien niet erg fraai, gratis te gebruiken.

Tijd om aan de slag te gaan met het installeren van de software. Voer in een virtuele Linux-machine de volgende drie commando’s uit met rootrechten:

wget https://raw.githubusercontent.com/gravitl/netmaker/master/scripts /nm-quick.sh
chmod +x nm-quick.sh
./nm-quick.sh -c

Het eerste commando downloadt het script om een Netmaker-server op te zetten, het tweede maakt het uitvoerbaar en het derde start het. Het script vraagt de belangrijkste parameters op, installeert de software en start de server.

Vervolgens kun je de server bereiken via https://dashboard.nm.192-0-2- 161.nip.io. Daar stel je eerst een wachtwoord in en negeer je het registratieverzoek dat in een nieuw tabblad op de voorgrond verschijnt.

Instellen

Vervolgens stel je door op Create Network te klikken een IP-netwerk in waaruit de toekomstige clients hun adressen halen. Het IPv4-bereik mag niet overlappen met dat van de subnetten die later worden aangesloten. Auto-fill stelt subnetten voor uit het voor CG-NAT bij internetproviders gereserveerde bereik 100.64.0.0/10.

Bij IPv6 maakt Netmaker gebruik van fd3c::/16 uit het ULA-blok. Als Auto Join is ingeschakeld, hoef je als beheerder niet elke nieuwe client afzonderlijk via de browser te autoriseren. Vervolgens maak je het eerste knooppunt aan, waarbij Netmaker onderscheid maakt tussen Device en Config files.

Op een Device draait de Netclient-software, terwijl Config files worden aangemaakt voor VPN-deelnemers die de WireGuard-app moeten gebruiken. Voor hen genereert Netmaker de configuratie als tekst en QR-code. Je hoeft die alleen maar in de client-app te zetten.

Toekomstige wijzigingen in de configuratie, zoals nieuwe subnetten of routes, vereisen opnieuw handmatig werk, waardoor de Netmaker-app Netclient de betere keuze is.

In het ideale geval kunnen nodes dankzij UDP-hole-punching elkaar ook over NAT-grenzen van routers heen rechtstreeks via WireGuard bereiken. Als dat niet lukt, is er een gateway nodig – daarover straks meer.

Clients aan boord halen

Als client volstaat voor alle ondersteunde besturingssystemen de commandlinetool netclient (zie de link). Het gaat iets soepeler met de Netclient- of WireGuard-app. Beide maken via het WireGuard-protocol verbinding met het Netmaker-netwerk, maar alleen Netclient – dat voorbehouden is aan betalende klanten – ontvangt automatisch de configuratie en alle toekomstige wijzigingen.

Het extra gemak is echter minimaal, omdat de app alleen VPN-profielen aanmaakt en het tot stand brengen van de verbinding met het Netmaker-netwerk aan de smartphone overlaat. Als je in de gratis modus niet zonder gebruikersinterface wilt zitten, kies je voor de WireGuard-client.

Een nieuwe client verschijnt in het Netmaker-dashboard bij All Devices. Klik op Connect device en kies de Netclient-methode. De coördinator wil dan weten in welk Netmaker-netwerk de nieuwe client moet worden ondergebracht, om een passend IP-adres te reserveren.

De client-set-up vereist op commandline opdrachtregel slechts twee commando’s, in het volgende voorbeeld voor Windows:

netclient.exe join -t eyJzZXJ2ZXI…
netclient.exe daemon

Het koppelen werkt op dezelfde manier onder macOS en Linux. De afgekorte voorbeeldsleutel achter join is een gecodeerde JSON-string die de client koppelt aan de eigen Netmaker-instantie.

Als Auto Join voor het netwerk is uitgeschakeld, moet je elke nieuwe deelnemer bij de kolom Networks toelaten. Bij grotere installaties wil je niet meerdere apparaten per gebruiker handmatig moeten configureren. Daarom krijgt elke medewerker onder User Management een persoonlijke toegang. Na het inloggen kun je zijn apparaten toevoegen, de gegenereerde configuraties overzetten of de weergegeven QR-codes scannen. Dat bespaart je als dashboardbeheerder veel werk, maar vanwege de hierboven genoemde algemene beheerdersrechten in de gratis Netmaker-versie kunnen gewone gebruikers ook gateways verwijderen of routes invoeren.

Omgaan met NAT

In het ideale geval kunnen de Netmaker-deelnemers elkaar rechtstreeks bereiken. De overgrote meerderheid van de netwerken heeft voor IPv4 echter adresomzetting (NAT) nodig, wat directe communicatie tussen de peers onmogelijk maakt.

Als de Netclient merkt dat er een NAT-router in het spel is, past hij een trucje toe: met behulp van Session Traversal Utilities for NAT (STUN) bepaalt hij het openbare adres van zijn NAT-router en meldt dit aan de Netmaker-server. In ruil daarvoor geeft de server het openbare adres van de tegenpartij door. Dan weten beide Netclients het openbare IP-adres en het poortnummer van hun gesprekspartner.

Vervolgens volgt UDP-hole-punching: elke client stuurt een UDP-pakket naar het IP-adres van de tegenpartij en registreert zich daarmee in de sessietabel van zijn NAT-router. Beide routers schakelen voor die sessie over op de doorlaatmodus en sturen de UDP-pakketten door.

Helaas werken niet alle NAT-routers daaraan mee. Als de communicatie daardoor mislukt, is een omweg via een gateway nodig. Als je tussendoor een verkeersanalysator zoals Wireshark start, zie je ook zonder VPN-verkeer veel communicatiepogingen. Dat is normaal gedrag, want de eindapparaten vragen op de achtergrond continu hun openbare IP-adressen op en melden wijzigingen aan de Netmaker-server.

Tussenstations

Netmaker-clients met een statisch IP-adres kunnen als gateway fungeren en communicatie voor andere clients mogelijk maken. Netmaker vereist daarvoor een Linux-computer. De gateway moet een statische poort gebruiken die door de host-firewall wordt vrijgegeven, bijvoorbeeld 51821.

Als je de Relay-functie activeert, werkt ook de Netmaker-server als gateway. Het aansluiten op het Netmaker-netwerk verloopt net als bij de andere nodes. In het dashboard maak je bij het gedeelte Gateways via Create Gateway een nieuwe gateway aan en selecteer je de node die je wilt doorsturen.

Het selectievakje Set as an Internet Gateway maakt van het apparaat een anonimiserende exit-node die het dataverkeer van andere clients via zijn internetverbinding leidt. Die moet ook in de upstream snel genoeg zijn, want het clientverkeer gaat er in beide richtingen overheen.

Er is dan wel een gateway, maar die heeft nog geen nodes. Wijs er via Add connected device een paar deelnemers aan toe. Op de achtergrond geeft de Netmaker-server alle betrokkenen de opdracht om hun WireGuard-configuratie zo aan te passen dat de communicatie vanaf dat moment via de nieuwe gateway verloopt.

Netclient activeert de forwarding-functie in de Linux-kernel en past de regels van de hostfirewall dienovereenkomstig aan. Bij uitgebreide regelsets verloopt die stap echter niet altijd vlekkeloos en moet er mogelijk handmatig worden bijgestuurd.

Egress

Tot nu toe kunnen alle leden van het Netmaker-netwerk elkaar bereiken, maar LAN-hosts zonder Netmaker-software kunnen geen VPN-deelnemers bereiken. De brug wordt gevormd door knooppunten met Egress-functionaliteit. Ze fungeren als router tussen het LAN en het Netmaker-netwerk.

Ga in het dashboard naar het gedeelte Egress en klik op Add route. Het nieuwe Egress-knooppunt moet eerst weten voor welk aangesloten IP-netwerk het verantwoordelijk moet zijn. Dat leert de Netmaker-client niet automatisch, maar wordt alleen handmatig ingevoerd als externe route. Zo kunnen er geen kritieke netwerkdelen onbedoeld in het Netmaker-netwerk terechtkomen.

Kies vervolgens uit de lijst met knooppunten een deelnemer die een van de netwerktools iptables of nftables heeft. Kort daarna kennen alle aangesloten Netclients de nieuwe route.

Met Enable NAT for egress traffic kan de Egress-router het bronadres van pakketten die uit het VPN komen achter zijn eigen adres verbergen. Zo heeft de tegenpartij geen route terug naar het bronnetwerk nodig – handig voor apparaten die geen statische routes accepteren, zoals printers.

Een Egress-gateway hoeft geen dure 19-inch-appliance te zijn. Voor kleine kantoren volstaat wellicht een Raspberry Pi of een minirouter met OpenWrt. Van hun datasnelheid mag je echter geen wonderen verwachten, meestal zit je rond de 300 Mbit/s.

Naam in plaats van adres

Je kunt in dit stadium elkaar al via het IP-adres bereiken, maar mensen onthouden namen makkelijker. De clients gebruiken de Netmaker-coördinator als voorkeurs-DNS-server, maar die kan alleen de namen van zijn eigen clients omzetten – en dan nog alleen als ze eindigen op nm.internal.

Het Netmaker-dashboard toont alle bekende vermeldingen in het DNS-menu. Daar kun je A-records aanmaken voor LAN-deelnemers die via Edge Nodes zijn aangesloten, maar dan alleen met het achtervoegsel nm.internal.

Als je correcte naamresolutie nodig hebt om certificaatwaarschuwingen in de browser te voorkomen, kun je het standaarddomein in het variabelenbestand netmaker.env overschrijven naar je eigen domein.

Een eigen DNS-server biedt meer vrijheid. Als je er een hebt, kun je die onder Nameservers toevoegen als Custom DNS. Die kan bereikbaar zijn via het Netmaker-netwerk of het openbare internet.

Vooruitblik

Geheel in de stijl van moderne architecturen biedt Netmaker een programmeerinterface (API) waarmee alle configuratiefuncties uitgevoerd kunnen worden. Ambitieuze gebruikers kunnen daar een eigen interface mee bouwen, maar het belangrijkste voordeel ligt in de automatisering.

De API is uitstekend gedocumenteerd en voorzien van voorbeelden voor talloze programmeertalen. Uit de API kun je diverse statistieken halen en die bijvoorbeeld via Grafana visualiseren. Ook het monitoren van de gateways via Icinga of Zabbix is mogelijk.

Literatuur

[1] Markus Stubbig en Noud van Kruysbergen, Peer-to-peer VPN-systemen vergeleken, c’t 8-9/2026, p.56

Markus Stubbig en Noud van Kruysbergen

Inspiratie in je mailbox

Blijf bij op IT-gebied en verbreed je expertise. Ontvang elke week artikelen over de laatste tech-ontwikkelingen, toepassingen, nieuwe hard- en software én ontvang tips en aanbiedingen.

Loginmenu afsluiten