footer-logofooter-logo
Een flexibele router/VPN-backbone bouwen met VyOS, van scratch tot VPS-editieTerug

Een flexibele router/VPN-backbone bouwen met VyOS, van scratch tot VPS-editie

Netwerken kan in het begin intimiderend aanvoelen, maar met de juiste aanpak maak je van een simpele virtuele server een volwaardige routing-backbone die van je thuislab tot een cloud-VPS reikt. Deze gids laat zien hoe je zo'n topologie bouwt met VyOS. Aan het eind heb je een thuisrouter, een publieke VPS-router, een beveiligde tunnel ertussen, en routing voor meerdere interne subnetten.

01 december 2025

door Lachlan Roche

VyOS

Routing

VPN

Loading...

Waarom VyOS

VyOS is een open source, op Debian gebaseerd netwerkbesturingssysteem dat enterprise routing, firewalling en VPN-functies biedt op standaardhardware. Het geeft je de flexibiliteit die traditionele hardware-appliances vaak beperken, en het zorgt ervoor dat je router behandeld kan worden als elk ander versiebeheerd, reproduceerbaar onderdeel van je infrastructuur.


Wat we gaan bouwen

Een compleet routingsysteem dat het volgende omvat:

  • Een VyOS-instantie thuis, ook als die achter NAT of CGNAT zit.
  • Een VyOS-instantie op een VPS met een echt publiek IP.
  • Een tunnel ertussen via WireGuard.
  • Meerdere interne subnetten achter de thuisrouter.
  • Routing van de VPS naar alle interne subnetten.
  • De optie om later uit te breiden naar dynamische routing.

Het resultaat is een stabiel, voorspelbaar pad tussen je cloudomgeving en je thuislab, zonder afhankelijkheid van onbetrouwbare port forwarding of het blootstellen van onnodige oppervlakken.


Adressering en ontwerp

Een praktisch ontwerp ziet er zo uit:

  • Interne thuisnetwerken onder 10.42.0.0/16
  • Individuele subnetten zoals 10.42.0.0/24 en 10.42.1.0/24
  • Een point-to-point WireGuard-tunnel zoals 172.24.32.0/31
  • Een publiek IP op de VPS plus welke gateway de provider ook toewijst
  • Standaardroute op de thuisrouter via de lokale WAN
  • Standaardroute op de VPS via de datacenter-gateway

De topologie is bewust eenvoudig. De tunnel wordt de backbone, en de VPS fungeert als het extern bereikbare controlepunt.


Configuratie van de thuisrouter (VyOS achter NAT)

set interfaces ethernet eth0 address '10.21.21.10/24'
set interfaces ethernet eth0 description 'WAN'

set interfaces ethernet eth1 address '10.42.0.1/24'
set interfaces ethernet eth1 description 'LAB1'

set interfaces ethernet eth2 address '10.42.1.1/24'
set interfaces ethernet eth2 description 'LAB2'

set nat source rule 10 description 'Outgoing NAT'
set nat source rule 10 outbound-interface 'eth0'
set nat source rule 10 source address '10.42.0.0/16'
set nat source rule 10 translation address 'masquerade'

set interfaces wireguard wg0 address '172.24.32.1/31'
set interfaces wireguard wg0 description 'home-to-vps'
set interfaces wireguard wg0 peer VPS allowed-ips '172.24.32.0/31,10.42.0.0/16'
set interfaces wireguard wg0 peer VPS persistent-keepalive '15'
set interfaces wireguard wg0 peer VPS port '8765'
set interfaces wireguard wg0 peer VPS pubkey '<VPS_PUBLIC_KEY>'
set interfaces wireguard wg0 private-key '<HOME_PRIVATE_KEY>'

set protocols static route 0.0.0.0/0 next-hop '10.21.21.1'

set system host-name 'vyos-home-edge'
set service ssh port '22'

commit
save

Configuratie van de VPS-router (VyOS met publiek IP)

set interfaces ethernet eth0 address '<VPS_PUBLIC_IP>/23'

set interfaces wireguard wg0 address '172.24.32.0/31'
set interfaces wireguard wg0 description 'vps-to-home'
set interfaces wireguard wg0 peer Home allowed-ips '172.24.32.0/31,10.42.0.0/16'
set interfaces wireguard wg0 peer Home pubkey '<HOME_PUBLIC_KEY>'
set interfaces wireguard wg0 port '8765'

set protocols static route 0.0.0.0/0 next-hop '<VPS_PROVIDER_GATEWAY>'

set system host-name 'vyos-vps'
set service ssh port '22'

commit
save

Zodra beide kanten geconfigureerd zijn en WireGuard succesvol een handshake uitvoert, heb je een werkende privébackbone tussen je thuislab en de cloud.


WireGuard-sleutels genereren met de ingebouwde PKI-commando's

Je kunt sleutelparen direct aanmaken met het commando generate pki wireguard key-pair. Deze methode geeft in één stap zowel de private als de publieke sleutel terug en voorkomt onnodig handmatig pipen of tussenliggende bestanden bij gebruik van iets als wg genkey

Het commando kan worden uitgevoerd vanuit de operationele modus.

generate pki wireguard key-pair

Een typische output ziet er zo uit:

Private key: 0NLc86fck3qtkBA133fh6K8sGckgQzHR2rBypr+LgHk=
Public key:  H6iVTlr44l6Z+DaGKD3aYr7QZXjG1rpdUYhbm2NjnQQ=

Je plakt de private sleutel direct in de interfaceconfiguratie.

set interfaces wireguard wg0 private-key '0NLc86fck3qtkBA133fh6K8sGckgQzHR2rBypr+LgHk='

De publieke sleutel wordt gedeeld met de peer-router, en het is veilig om die te versturen omdat hij geen gevoelige informatie prijsgeeft.


DHCP-serverconfiguratie voor interne subnetten

Vergeleken met oudere VyOS-versies bevat 1.5 een sterk vernieuwd DHCP-servicemodel, met een verschuiving van de oudere ISC DHCP-implementatie naar een op Kea gebaseerde backend. De configuratiestructuur is overzichtelijker en maakt opties per subnet mogelijk zonder overbodige herhaling. Als je thuisrouter meerdere interne netwerken bedient, kan elke VLAN of fysieke interface zijn eigen DHCP-pool draaien met onafhankelijke lease-ranges, DNS-instellingen en gateway-toewijzingen.

Het onderstaande voorbeeld maakt DHCP-pools voor twee interne netwerken, 10.42.0.0/24 en 10.42.1.0/24, passend bij de eerdere topologie. Elke pool definieert de standaardgateway, DNS-servers en een dynamisch adresbereik. VyOS koppelt een DHCP-pool automatisch aan de interface die het bijbehorende netwerk bevat.

# Enable the DHCP service
set service dhcp-server shared-network-name LAB1 subnet 10.42.0.0/24 default-router '10.42.0.1'
set service dhcp-server shared-network-name LAB1 subnet 10.42.0.0/24 dns-server '10.42.0.1'
set service dhcp-server shared-network-name LAB1 subnet 10.42.0.0/24 lease '86400'
set service dhcp-server shared-network-name LAB1 subnet 10.42.0.0/24 range 1 start '10.42.0.100'
set service dhcp-server shared-network-name LAB1 subnet 10.42.0.0/24 range 1 stop '10.42.0.200'

set service dhcp-server shared-network-name LAB2 subnet 10.42.1.0/24 default-router '10.42.1.1'
set service dhcp-server shared-network-name LAB2 subnet 10.42.1.0/24 dns-server '10.42.1.1'
set service dhcp-server shared-network-name LAB2 subnet 10.42.1.0/24 lease '86400'
set service dhcp-server shared-network-name LAB2 subnet 10.42.1.0/24 range 1 start '10.42.1.100'
set service dhcp-server shared-network-name LAB2 subnet 10.42.1.0/24 range 1 stop '10.42.1.200'

commit
save

Als je aanvullende DHCP-opties nodig hebt, zoals NTP-servers, PXE-bootparameters of domain search-lijsten, staat VyOS 1.5 die toe op subnetniveau. Bijvoorbeeld:

set service dhcp-server shared-network-name LAB1 subnet 10.42.0.0/24 ntp-server '10.42.0.1'
set service dhcp-server shared-network-name LAB1 subnet 10.42.0.0/24 domain-name 'lab.internal'

Ook kunnen statische reserveringen worden geconfigureerd, zodat specifieke MAC-adressen deterministische IP-toewijzingen krijgen. Dit is nuttig voor servers, hypervisors of embedded devices die consistente adressering vereisen.

set service dhcp-server shared-network-name LAB1 subnet 10.42.0.0/24 static-mapping web01 ip-address '10.42.0.10'
set service dhcp-server shared-network-name LAB1 subnet 10.42.0.0/24 static-mapping web01 mac-address 'aa:bb:cc:dd:ee:ff'

VyOS herconfigureert Kea automatisch zodra je wijzigingen commit, en leases worden bijgehouden in de gebruikelijke statusbestanden onder /run/kea. Voor grotere netwerken kun je Kea integreren met een databasebackend, maar voor de meeste thuis- of laboratoriumomgevingen is de ingebouwde configuratie afdoende en betrouwbaar.


Dynamische routing tussen thuis en VPS

Statische routes werken goed voor kleine of vaste netwerken, maar worden een onderhoudslast naarmate je omgeving groeit. Als je verwacht extra subnetten, meer tunneleindpunten of multisite-connectiviteit te introduceren, laat dynamische routing routers automatisch bereikbaarheidsinformatie delen. VyOS 1.5 ondersteunt meerdere dynamische routeringsprotocollen met FRR als backend. In deze topologie zijn de twee meest relevante keuzes BGP en OSPF.

Dynamische routing vervangt je WireGuard-tunnel of de point-to-point-adressering niet. Het automatiseert simpelweg wat je eerder handmatig definieerde. De tunnel draagt nog steeds het verkeer, maar prefixen worden nu geleerd in plaats van statisch geconfigureerd.


BGP gebruiken voor prefix-uitwisseling

BGP is goed geschikt voor situaties waarin je meerdere routeringsdomeinen beheert of waarin netwerken over geografisch verspreide locaties liggen. Een thuisrouter die lab-subnetten aankondigt bij een VPS-router past hier naadloos in. BGP is bovendien protocolagnostisch wat betreft het onderliggende transport, dus het draait probleemloos over WireGuard.

Het onderstaande voorbeeld gebruikt private autonome systeemnummers. Elke router gebruikt een loopback als BGP-routeridentificatie. De thuisrouter origineert de interne subnetten onder 10.42.0.0/16, en de VPS leert deze automatisch.

Configuratie van de thuisrouter

set interfaces loopback lo address '10.255.255.1/32'

set protocols bgp 65010 neighbor 172.24.32.0 remote-as '65020'
set protocols bgp 65010 neighbor 172.24.32.0 update-source 'wg0'

set protocols bgp 65010 network '10.42.0.0/24'
set protocols bgp 65010 network '10.42.1.0/24'

set protocols bgp 65010 parameters router-id '10.255.255.1'

commit
save

Configuratie van de VPS-router

set interfaces loopback lo address '10.255.255.2/32'

set protocols bgp 65020 neighbor 172.24.32.1 remote-as '65010'
set protocols bgp 65020 neighbor 172.24.32.1 update-source 'wg0'

set protocols bgp 65020 parameters router-id '10.255.255.2'

commit
save

Na het committen installeert elke router geleerde prefixen in zijn routeringstabel. Elk nieuw subnet dat aan de thuiskant wordt toegevoegd, kan simpelweg aangekondigd worden door nog een network-statement toe te voegen in BGP, zonder de VPS-configuratie aan te raken.


Route-filtering en toekomstige uitbreiding

Zelfs in private routeringsdomeinen is het goede praktijk om te bepalen welke prefixen worden uitgewisseld. VyOS ondersteunt route maps, prefix lists en communities voor het filteren of taggen van routes. Voor een topologie met twee locaties is filtering optioneel, maar zodra er extra routers of tussenliggende hops bijkomen, bieden deze tools stabiliteit en controle.

Prefix lists kunnen bijvoorbeeld worden gebruikt om te voorkomen dat interne ranges die je niet over de tunnel wilt blootstellen, per ongeluk worden aangekondigd.


OSPF gebruiken voor eenvoudigere omgevingen met meerdere subnetten

Als beide routers deel uitmaken van één gedeeld routeringsdomein en je automatische neighbor discovery wilt, is OSPF een eenvoudiger alternatief. OSPF vereist dat interfaces bereikbaar zijn op laag 3, wat het geval is bij het WireGuard-linknetwerk. OSPF is goed geschikt voor laboratoriumomgevingen waar eenvoud zwaarder weegt dan strikt routeringsbeleid.

OSPF-configuratie van de thuisrouter

set protocols ospf parameters router-id '10.255.255.1'

set protocols ospf area 0 network '172.24.32.0/31'
set protocols ospf area 0 network '10.42.0.0/24'
set protocols ospf area 0 network '10.42.1.0/24'

commit
save

OSPF-configuratie van de VPS-router

set protocols ospf parameters router-id '10.255.255.2'

set protocols ospf area 0 network '172.24.32.0/31'

commit
save

OSPF ontdekt neighbors via de WireGuard-link en wisselt LSA's uit die elk intern subnet beschrijven. Elk nieuw netwerk dat aan de thuisrouter wordt toegevoegd, wordt geïntegreerd door het simpelweg toe te voegen aan de OSPF-area-configuratie.


Kiezen tussen BGP en OSPF

Beide protocollen realiseren dynamische routing, maar ze lossen enigszins verschillende operationele behoeften op.

  • BGP geeft nauwkeurige controle over wat je aankondigt en accepteert, wat belangrijk wordt zodra het netwerk verder groeit dan twee locaties.
  • OSPF biedt eenvoudige link-state routing binnen een gedeeld domein en vergt vaak minder initiële configuratie.
  • BGP heeft de voorkeur wanneer je VPS fungeert als centraal aggregatiepunt voor meerdere externe locaties.
  • OSPF is ideaal wanneer je automatische discovery wilt met minimale beleidsoverhead.

Deze opties blijven compatibel met de onderliggende WireGuard-topologie, en beide aanpakken maken statische routes per subnet op de VPS overbodig. Als je dat wilt, kan ik voorbeelden toevoegen voor route maps, prefix lists, of het gelijktijdig draaien van beide protocollen in gesegmenteerde VRF's.


Statische routing, de eenvoudige aanpak

Als je voorspelbaarheid verkiest en niet veel wijzigingen in interne subnetten verwacht, zijn statische routes de eenvoudigste methode.

set protocols static route 10.42.0.0/24 next-hop 172.24.32.1
set protocols static route 10.42.1.0/24 next-hop 172.24.32.1
commit
save

Dit zorgt ervoor dat de VPS weet waar het verkeer voor elk intern netwerk naartoe moet.


Dynamische routing voor grotere topologieën

Als je van plan bent meerdere routers toe te voegen of de architectuur op te schalen, wordt dynamische routing zoals BGP nuttig. VyOS kan subnetten aankondigen van je thuisrouter tot aan de VPS, waardoor handmatige route-toevoegingen overbodig worden. Dit is niet vereist voor de eenvoudige opzet, maar wordt waardevol naarmate je topologie groeit.


Waarom deze architectuur goed werkt

Dit model biedt verschillende voordelen:

  • Het omzeilt CGNAT en onbetrouwbare port forwarding door een stabiele tunnel te gebruiken.
  • Al het uitgaande verkeer kan optioneel via de VPS vertrekken, waardoor filtering of monitoring centraal komt te staan.
  • Het ondersteunt naadloos meerdere geïsoleerde thuissubnetten.
  • VyOS geeft je volledige controle zonder je vast te leggen op propriëtaire hardware.
  • Je kunt doorgroeien naar dynamische routing, VRRP, extra VPN-eindpunten of multisite-connectiviteit zonder de basis opnieuw te hoeven ontwerpen.

Aandachtspunten om te onthouden

  • Statische routes moeten handmatig worden bijgewerkt zodra er nieuwe subnetten bijkomen.
  • WireGuard werkt in dit patroon het best wanneer verbindingen vanaf de thuiskant worden opgezet, omdat de VPS een vast publiek eindpunt heeft.
  • Beveiliging is in deze gids bewust minimaal. In productie voeg je firewallbeleid toe, beperk je beheertoegang, en audit je diensten.
  • Privénetwerken gaan nooit over het publieke internet, dus de tunnel moet altijd actief zijn wil routing werken.

Mogelijke volgende stappen

Je kunt deze tutorial uitbreiden tot een completere infrastructuurruggengraat. Enkele voor de hand liggende uitbreidingen zijn:

  • BGP introduceren voor automatische subnetaankondiging.
  • Firewallgroepen, policy-based routing en segmentatie toevoegen.
  • Ondersteuning voor "road warrior"-WireGuard-clients, wat een mesh-VPN-controlplane veel eenvoudiger maakt.
  • Cloud init gebruiken om VyOS-images programmatisch uit te rollen.
  • Redundantie toevoegen met VRRP.

Conclusie

Door VyOS op een thuisrouter te combineren met VyOS op een publieke VPS en ze te verbinden met een tunnel, krijg je een flexibele backbone die werkt ongeacht NAT, ISP-beperkingen of labcomplexiteit. Dit patroon schaalt, is eenvoudig te automatiseren en geeft je volledige controle over hoe je interne en externe netwerken communiceren.

Lachlan Roche

Geschreven door

Lachlan Roche

Network Engineer, Serverside.com

Lachlan is a network engineer at Serverside.com, where he works on the Arista backbone, public IPv4/IPv6 address space and real-time gNMI network telemetry. He also operates his own autonomous system (AS25735) and writes hands-on guides on routing, VPNs and network automation on bare metal.