Handleiding

WireGuard

Versleutelde tunnels met sleutels die je browser maakt en een kant-en-klare client-configuratie.

WireGuard is de eenvoudigste manier om versleuteld bij je eigen netwerk te komen: één interface, een sleutelpaar per kant, en een lijst peers die binnen mogen komen. Het werkt voor een telefoon of laptop onderweg en voor een vaste verbinding tussen twee routers.

Waar het staat

In de wizard heeft de rol VPN-gateway een eigen VPN-stap, met het publieke adres, WireGuard, IKEv2 en L2TP. Heb je een andere rol gekozen, dan zet je VPN erbij in de stap Combineren. In geavanceerd staat alles onder VPN, met WireGuard als eerste groep. Een tunnel tussen twee routers kun je ook op het netwerkbord tekenen; dan wordt hij aan beide kanten tegelijk ingevuld.

Publiek adres of hostnaam

Bovenaan het VPN-onderdeel staat publiek adres of hostnaam van deze router. Dat veld verandert niets aan de router zelf; het wordt gebruikt in de client-configuraties die je meekrijgt. Laat je het leeg, dan staat er een plaatshouder in die configuraties en zegt de controle dat erbij.

Heb je geen vast IP-adres, zet dan IP Cloud DDNS aan bij Beheertoegang en gebruik de naam op sn.mynetname.net die de router daarvan krijgt.

De interface

Je kunt maximaal vier WireGuard-interfaces aanmaken. Per interface vul je in:

  • Naam — bijvoorbeeld wg-rw. Die naam komt terug in de firewall, de routes en de controles.
  • UDP-poort — standaard 13231. Die poort wordt vanzelf toegelaten in de firewall, alleen die ene poort en alleen UDP.
  • Adres van de router in de tunnel — bijvoorbeeld 10.10.10.1/24. Dit is een eigen netwerkje voor de tunnel, niet je LAN. Kies iets dat je nergens anders gebruikt, ook niet op de plekken waar je vandaan verbindt.
  • Tunnel telt als LAN — zet de interface in de LAN-interfacelijst. Daarmee mag je over de tunnel bij het beheer en bij de DNS van de router. Zet je dit uit, dan komt tunnelverkeer binnen als verkeer van buiten en moet je zelf regels maken.

Sleutels

Bij elk sleutelveld staat een knop om een sleutelpaar te maken. Dat gebeurt in je browser en blijft daar; er gaat niets naar een server. De private key van de router komt in het script, de public key in de configuratie van de client.

Maak je geen sleutelpaar, dan verzint RouterOS er zelf een bij het uitvoeren van het script. De router werkt dan wel, maar de client-configuraties missen de public key, en daar waarschuwt de controle voor. Behandel het script verder als een wachtwoord: er staat een private key in.

Peers

Onder de interface staat de lijst peers. Elke peer is één telefoon, één laptop of één andere router, en je kiest per peer de soort:

  • Road-warrior client — de tool maakt ook het sleutelpaar van de client en levert daarna een complete configuratie voor dat apparaat.
  • Site-to-site — je plakt de public key van de andere router erin, met eventueel het endpoint en de netwerken die daarachter zitten.

Het tunneladres van de peer is het adres dat die peer in de tunnel krijgt, als /32: 10.10.10.2/32, 10.10.10.3/32, enzovoort. Elk adres mag maar één keer voorkomen, want daarmee bepaalt de router welk verkeer bij welke peer hoort.

Endpoint laat je leeg als de peer zelf belt, zoals een telefoon of een router met een wisselend adres. Vul je het in als host:poort, dan probeert deze router de verbinding op te zetten. Bij twee routers is het genoeg als één kant het endpoint van de ander kent.

Netwerken achter de peer is de lijst subnetten aan de overkant, gescheiden door komma's. Die komen bij de toegestane adressen te staan, en de tool zet er routes bij, in de vorm /ip route add dst-address=192.168.2.0/24 gateway=wg1.

Keepalive, standaard 25 seconden, stuurt af en toe een leeg pakketje zodat het gaatje in de NAT-tabel van de provider openblijft. Voor een kant achter NAT is dat nodig; een kant met een vast adres kan zonder.

Al het verkeer of alleen je eigen netwerk

Bij een client-peer staat al het verkeer door de VPN. Aan betekent AllowedIPs = 0.0.0.0/0, ::/0 in de clientconfiguratie: ook het gewone internetverkeer van dat apparaat gaat via je router naar buiten. Prettig op een onbetrouwbaar wifi-netwerk, maar je zit dan vast aan de uploadsnelheid van je verbinding thuis. Uit betekent alleen het tunnelnetwerk en je LAN; de rest gaat rechtstreeks.

Wat het script bevat

  • /interface wireguard add name=wg-rw listen-port=13231 private-key=...
  • /ip address add address=10.10.10.1/24 interface=wg-rw
  • per peer een regel onder /interface wireguard peers met de public key, de toegestane adressen en de keepalive
  • routes naar de netwerken achter een site-peer
  • een regel in de input-chain van de firewall voor jouw UDP-poort, en de interface in de LAN-lijst als je dat aan hebt staan

De client-configuratie

Onder het script staat per client-peer een eigen blok, met een kopieerknop en een downloadknop voor een .conf-bestand. Daarin staan de private key van de client, het adres in de tunnel, de DNS-server (het tunneladres van de router, zodat namen van thuis werken), de public key van de router, de toegestane adressen, het endpoint met de poort en de keepalive.

Elk apparaat krijgt een eigen configuratie. Twee telefoons dezelfde geven werkt niet: ze delen dan één adres en één sleutel.

MTU

De configurator zet geen MTU op de WireGuard-interface, dus RouterOS gebruikt 1420. Dat past op een gewone verbinding. Loopt je internet over PPPoE en verbinden peers via IPv6, dan past het net niet en meldt de controle dat: zet mtu=1412 op de interface en MTU = 1412 in de clientconfiguratie. Die twee aanpassingen doe je met de hand, de tool doet ze niet voor je.

Wat er misgaat

  • Geen handshake. Kijk op de router met /interface wireguard peers print of er ooit een handshake was. Blijft die leeg, dan komt het verkeer niet aan: verkeerde hostnaam, verkeerde poort, of een router ervoor die UDP niet doorstuurt.
  • Wel een handshake, niets bereikbaar. Dan klopt de verdeling van de adressen niet. Het adres van de client moet aan de routerkant bij die peer staan, en aan de clientkant moet je LAN in de toegestane adressen zitten.
  • Test niet vanaf je eigen netwerk. Van binnenuit naar je eigen publieke adres verbinden gaat meestal mis. Zet de wifi van je telefoon uit en probeer het over mobiele data.
  • Botsende adressen. Het tunnelnetwerk en je LAN mogen niet overlappen met het netwerk waar je op dat moment zit. Een hotel op 192.168.88.0/24 is geen uitzondering.
  • De MikroTik staat achter een andere router. Stuur daar de UDP-poort door naar de MikroTik. Zie Poorten doorsturen.

Verder lezen

Recept: thuis of kantoor bereiken van onderweg loopt het van begin tot eind door. Voor apparaten zonder WireGuard-client is er VPN voor losse gebruikers, en voor vaste verbindingen tussen locaties Tunnels tussen locaties.

Meteen proberen? Open de configurator · Iets onduidelijk of iets dat hier hoort te staan? Laat het ons weten