Communityoplossing

Tailscale-subnetrouter op ZimaOS: TUN was ingebouwd en werd daarna tun.ko in 1.5.0

A September 2025 feature request from a user trying to run a Tailscale Docker subnet router between Mexico and Uruguay. Zima-Jerry explained that TUN was compiled into the kernel rather than present as tun.ko, then changed it to a loadable module in ZimaOS 1.5.0. The original poster retested and confirmed it worked.

De belangrijkste vergissing in deze thread uit september 2025 was het interpreteren van modprobe tun fout als bewijs dat ZimaOS helemaal geen TUN-ondersteuning had. Zima-Jerry corrigeerde die aanname: in de bronbuild was TUN rechtstreeks in de kernel gecompileerd, dus er was geen afzonderlijk tun.ko bestand onder /lib/modules voor modprobe te laden.

De specifieke Docker-subnet-routerworkflow van de gebruiker had echter nog steeds het apparaat-/modulegedrag nodig dat Tailscale verwachtte. Daarom wijzigde IceWhale de verpakking in ZimaOS 1.5.0, zodat TUN een laadbare kernelmodule werd. De oorspronkelijke poster testte dit op 29 september opnieuw en antwoordde dat het nu werkte.

De bronopstelling verbond twee fysieke locaties, Mexico en Uruguay, en moest ervoor zorgen dat lokale apparaten op elke locatie via Tailscale konden communiceren zonder Tailscale op elk eindpunt te installeren.

De gebruiker wilde een Tailscale-subnet-router voor site-to-siteverbindingen

Dat is een subnet-routergebruiksscenario, niet slechts “op afstand toegang krijgen tot het ZimaOS-dashboard”. Een subnet-router moet pakketten doorsturen tussen het tailnet en een ander IP-subnet.

modprobe meldde dat er geen tun-modulebestand was

De gebruiker startte een geprivilegieerde Tailscale-container en zag:

modprobe: FATAL: Module tun not found in directory /lib/modules/6.12.25

Ze vonden ook geen tun.ko bestand en zag geen TUN-vermelding in de uitvoer van controles die modules opsommen.

IceWhale zei dat TUN rechtstreeks in de kernel was gecompileerd

De eerste officiële reactie van Zima-Jerry was expliciet: de TUN-functionaliteit was rechtstreeks in de kernel ingebouwd en zou daarom niet als normaal modulebestand verschijnen in /lib/modules/6.12.25.

Dit is een onderscheid in de Linux-kernel: een functie die ingebouwd is geconfigureerd, is aanwezig zonder te verschijnen in lsmod of laadbaar via modprobe.

Ingebouwde ondersteuning loste de containerworkflow uit de bron niet volledig op

De oorspronkelijke poster antwoordde dat hun container nog steeds in userspace-modus terechtkwam en niet de volledige subnet-routerfunctionaliteit op hostniveau kon bieden die ze wilden. Ze vroegen specifiek of TUN op modulaire wijze beschikbaar kon worden gesteld.

Zima-Jerry zei dat dit in de volgende versie kon worden aangepast.

ZimaOS 1.5.0 maakte van TUN een laadbare module

Op 28 september plaatste Zima-Jerry dat in de nieuwe release 1.5.0, tun.ko was een kernelmodule geworden en vroeg de gebruiker opnieuw te testen.

De oorspronkelijke poster antwoordde de volgende dag: “Bedankt, het werkt nu.”

Dat is een door de bron bevestigde oplossing en de belangrijkste conclusie van de thread.

Tailscale-userspace-netwerken zijn een andere bedrijfsmodus

In de huidige Tailscale-documentatie staat dat containers zonder TUN-apparaat kunnen draaien door userspace-netwerken te gebruiken. In die modus, tailscaled werkt via een netwerkstack/proxy in de gebruikersruimte in plaats van zich te gedragen als een normale Linux-tunnelinterface.

Gebruik Tailscales huidige model voor netwerken in gebruikersruimte wanneer je bepaalt of kernel-TUN daadwerkelijk vereist is.

Het huidige Tailscale kan subnetten routeren in kernelmodus of gebruikersruimtemodus

De huidige documentatie van Tailscale beschrijft nu zowel subnetroutering in kernelmodus als in gebruikersruimte/netstack-modus. Kernelmodus op Linux behoudt normaal pakketdoorstuurgedrag en biedt over het algemeen betere prestaties; de gebruikersruimtemodus kan ook routeren, maar beëindigt en initieert ondersteund verkeer opnieuw in zijn eigen netwerkstack.

Voor Docker documenteert Tailscale momenteel ook dat TS_USERSPACE is standaard ingeschakeld, terwijl de kernelmodus /dev/net/tun en de vereiste mogelijkheden aanmaakt.

Een werkend TUN-apparaat is niet de volledige configuratie van een subnetrouter

Een Linux-subnetrouter heeft ook IP-doorsturing, geadverteerde routes, routegoedkeuring in de Tailscale-beheerconsole en geschikte tailnet-toegangsregels nodig. Een container die succesvol een tailscale0 betekent op zichzelf niet dat externe LAN-apparaten erdoorheen kunnen worden gerouteerd.

Volg de huidige workflow voor Tailscale-subnetrouters nadat de kernel-/apparaatlaag van ZimaOS werkt.

Pas de diagnose “ontbrekende tun.ko” uit 1.4.x niet toe op het huidige ZimaOS

De bron zelf documenteert de versiegrens: het bestand ontbrak vanwege de manier waarop de 1.4.x-kernel was gebouwd, en ZimaOS 1.5.0 wijzigde de TUN-functie in een module. Het huidige ZimaOS is inmiddels veel verder dan die release.

Inspecteer bij een recente fout de huidige containerinstellingen, de beschikbaarheid van het TUN-apparaat, de gebruikersruimte-/kernelmodus, IP-doorsturing en de goedkeuring van routes, in plaats van ervan uit te gaan dat het kernelverpakkingsprobleem uit 2025 is teruggekeerd.

Tailscale-TUN-FAQ

Bewees het mislukken van modprobe tun dat ZimaOS geen TUN-ondersteuning had?

Nee. IceWhale zei dat TUN rechtstreeks in de bronkernel was gecompileerd in plaats van als afzonderlijke module te worden meegeleverd.

Wat is er veranderd in ZimaOS 1.5.0?

Zima-Jerry zei tun.ko werd een laadbare kernelmodule.

Bevestigde de oorspronkelijke poster dat de nieuwe versie werkte?

Ja. Ze hebben opnieuw getest na de wijziging in 1.5.0 en zeiden dat het werkte.