Handleiding

Tunnels tussen locaties

GRE, IPIP, EoIP en VXLAN: twee netwerken aan elkaar, gerouteerd of als hetzelfde laag-2-netwerk.

Naast WireGuard kent RouterOS een handvol eenvoudige tunnels. Ze verpakken verkeer van de ene router in pakketjes naar de andere, zonder onderhandeling over sleutels. Dat maakt ze voorspelbaar en snel, en het betekent ook dat ze uit zichzelf niets versleutelen.

Gerouteerd of laag 2

  • GRE en IPIP zijn gerouteerd: de tunnel is een puntverbinding met een adres aan elke kant, en je stuurt er netwerken doorheen met routes. Dit is bijna altijd wat je wilt.
  • EoIP en VXLAN dragen hele ethernetframes: beide kanten zitten daarmee in hetzelfde laag-2-netwerk, inclusief broadcasts, ARP en alles wat daar fout gaat. Neem dit alleen als iets echt op één netwerk moet staan.

Waar het staat

In geavanceerd, onder VPN, staat de groep Tunnels. Je voegt per tunnel een regel toe en vult die aan één kant in; de andere router configureer je apart, met de adressen omgedraaid.

Werk je met een site, dan kun je het ook tekenen. Rechtsklik op een router op het netwerkbord, kies Tunnel naar en het type. De tunnel wordt dan vanuit één record aan beide kanten ingevuld: virtuele poorten met een naam, een transfernetwerk (een /30 uit 10.255.255.0), sleutels of een IPsec-geheim, en routes. Zie ook Voorbeeld: twee locaties met een tunnel.

De velden

  • Naam — de interfacenaam op deze router.
  • Type — GRE, EoIP, IPIP of VXLAN.
  • Remote adres — het publieke IP-adres van de andere kant. Dit veld wil een IP-adres, geen hostnaam. Verandert dat adres regelmatig, neem dan WireGuard, want dat kan wel met een naam werken.
  • Tunneladres — het adres van deze router in de tunnel, bijvoorbeeld 10.255.255.1/30. Laat het leeg bij EoIP of VXLAN in de bridge: die tunnel heeft geen eigen adres nodig.
  • Tunnel-id / VNI — alleen bij EoIP en VXLAN, en verplicht. Beide kanten moeten hetzelfde nummer hebben, en twee tunnels tussen dezelfde routers moeten verschillende nummers hebben. Bij VXLAN heet dit de VNI.
  • IPsec-secret — vul je die in, dan versleutelt RouterOS de tunnel met IPsec. Beschikbaar bij GRE, EoIP en IPIP, niet bij VXLAN.
  • In de LAN-bridge — alleen bij EoIP en VXLAN: de tunnel wordt een poort van je bridge, en daarmee is de overkant onderdeel van hetzelfde netwerk.
  • Routes via de tunnel — alleen bij GRE en IPIP: de netwerken aan de overkant, gescheiden door komma's. Daar maakt de tool routes van.

Versleuteling

Een tunnel zonder IPsec-secret is onversleuteld. Alles wat erdoorheen gaat is onderweg te lezen. De controles melden dat per tunnel. Loopt de verbinding over internet, vul dan een secret in of gebruik WireGuard.

VXLAN heeft in de tool geen veld voor IPsec. Wil je VXLAN versleuteld, dan zet je dat er met de hand bij, of je laat het door een andere tunnel lopen. Bij GRE zet het script allow-fast-path=no zodra er een secret staat, omdat fast path en IPsec niet samengaan.

Wat het script bevat

  • de interface: /interface gre, /interface ipip, /interface eoip met tunnel-id, of /interface vxlan met vni en poort 4789, plus een vtep met het adres van de overkant
  • het tunneladres onder /ip address, of de interface als bridge-poort als je hem in de bridge zet
  • routes naar de netwerken achter een GRE- of IPIP-tunnel
  • firewallregels die alleen vanaf het remote adres binnenkomen: protocol GRE, IPIP of UDP 4789, en bij een IPsec-secret ook UDP 500 en 4500 en ESP

MTU

Dit is het onderdeel waar de meeste avonden in verdwijnen. Een tunnel zet een extra kop op elk pakket, dus er past minder in.

  • EoIP in een bridge krijgt van de tool mtu=1500. Automatisch zou RouterOS op 1458 uitkomen, en dan valt elk volledig ethernetframe in de bridge buiten de boot. Met 1500 wordt het buitenste pakket onderweg opgeknipt en komen hele frames aan.
  • VXLAN houdt 1500 aan en doet er 50 bytes bovenop, dus de weg naar de overkant moet 1550 bytes kunnen dragen. Over gewoon internet is dat 1500. De controle waarschuwt daarvoor zolang de MTU op de poorten geen 1550 of meer is. Los het op met een grotere MTU op het pad (jumbo frames bij Bridge en poorten), of zet de MTU van de apparaten achter de tunnel op 1450.
  • GRE en IPIP hebben dit probleem minder, maar TCP-verbindingen die halverwege blijven hangen wijzen bijna altijd op een MTU die niet past.

Op het bord

Klik je een getekende tunnel aan, dan staan er nog een paar keuzes:

  • Transfernetwerk (/30) voor gerouteerde tunnels; de twee routers krijgen het eerste en het tweede adres.
  • Routes naar de andere locatie, of BGP over deze tunnel. Met BGP leren de routers elkaars netwerken zelf; dan moet elke router een AS-nummer hebben en is een BGP-wachtwoord aan te raden. Zie BGP.
  • VLANs over de tunnel bij EoIP en VXLAN: alle VLANs die beide routers dragen, of een selectie. De tunnel wordt dan een trunk.
  • Bij WireGuard staan hier de sleutels, bij GRE, IPIP en EoIP een vinkje Versleutelen met IPsec.

De controles van de site kijken mee: beide routers moeten een publiek adres hebben, GRE, IPIP en EoIP hebben daar een IP-adres voor nodig en geen DNS-naam, een gerouteerde tunnel naar een apparaat dat niet routeert heeft geen zin, en twee locaties met dezelfde adresreeks leveren routes op die elkaar in de weg zitten.

Wat er misgaat

  • De tunnel komt niet op. Beide kanten moeten ingesteld zijn, en het remote adres moet echt bereikbaar zijn. Sommige providers laten protocol GRE of IPIP niet door, en achter NAT werken ze slecht. WireGuard heeft daar minder last van.
  • De tunnel staat op, maar er komt niets doorheen. Bij GRE en IPIP ontbreken meestal de routes aan één kant; bij EoIP en VXLAN staat het tunnel-id of de VNI aan de twee kanten niet gelijk.
  • Grote bestanden lopen vast, pings doen het wel. Dat is de MTU.
  • Alles is traag en de log staat vol. Bij een laag-2-tunnel deel je ook de broadcasts. Overweeg alsnog een gerouteerde tunnel.

Verder lezen

WireGuard voor de versleutelde variant, Voorbeeld: twee locaties met een tunnel voor de hele aanpak, en Statische routes voor wat er met die routes gebeurt.

Meteen proberen? Open de configurator