Det viktigaste misstaget i denna tråd från september 2025 var att tolka modprobe tun misslyckandet som bevis för att ZimaOS helt saknade TUN-stöd. Zima-Jerry rättade denna uppfattning: i källbygget var TUN direkt inbyggt i kärnan, så det fanns ingen separat tun.ko fil under /lib/modules för modprobe att ladda.
Den specifika Docker-arbetsflödet för en router mellan delnät behövde dock fortfarande det enhets-/modulbeteende som Tailscale förväntade sig. IceWhale ändrade därför paketeringen i ZimaOS 1.5.0 så att TUN blev en laddningsbar kärnmodul. Den ursprungliga skribenten testade igen den 29 september och svarade att det nu fungerade.
Användaren ville ha en Tailscale-router mellan delnät på två platser
Källans design kopplade samman två fysiska platser, Mexiko och Uruguay, och ville att lokala enheter på varje plats skulle kunna kommunicera via Tailscale utan att installera Tailscale på varje slutpunkt.
Detta är ett användningsfall för en router mellan delnät, inte bara ”fjärråtkomst till ZimaOS-instrumentpanelen”. En router mellan delnät måste vidarebefordra paket mellan tailnet och ett annat IP-delnät.
modprobe rapporterade att ingen tun-modulfil hittades
Användaren körde en privilegierad Tailscale-container och såg:
modprobe: FATAL: Module tun not found in directory /lib/modules/6.12.25
De hittade inte heller tun.ko filen och såg ingen TUN-post i resultatet från kontrollerna som listar moduler.
IceWhale sade att TUN var direkt kompilerat i kärnan
Zima-Jerrys första officiella svar var tydligt: TUN-funktionaliteten var direkt inbyggd i kärnan och skulle därför inte visas som en vanlig modulfil i /lib/modules/6.12.25.
Detta är en skillnad i Linux-kärnan: en funktion som är inbyggd är tillgänglig utan att visas i lsmod eller genom att kunna laddas med modprobe.
Det inbyggda stödet löste inte arbetsflödet för källcontainern helt
Den ursprungliga skribenten svarade att containern fortfarande gick över till användarutrymmesläge och inte kunde erbjuda den fullständiga funktionen som nätverksrouter mellan delnät på värdnivå som de ville ha. De frågade specifikt om TUN kunde exponeras på ett modulärt sätt.
Zima-Jerry sade att detta kunde justeras i nästa version.
ZimaOS 1.5.0 ändrade TUN till en laddningsbar modul
Den 28 september skrev Zima-Jerry att den nya versionen 1.5.0, tun.ko hade blivit en kärnmodul och bad användaren att testa igen.
Den ursprungliga skribenten svarade nästa dag: ”Tack, nu fungerar det.”
Detta är en källbekräftad lösning och trådens viktigaste slutsats.
Tailscales nätverk i användarutrymmet är ett annat driftläge
I aktuell Tailscale-dokumentation förklaras att containrar kan köras utan en TUN-enhet genom att använda användarutrymmesnätverk. I det läget, tailscaled fungerar via en nätverksstack/proxy i användarutrymmet i stället för att fungera som ett normalt Linux-tunnelgränssnitt.
Använd Tailscales aktuella modell för nätverk i användarutrymmet när du avgör om TUN i kärnan verkligen krävs.
Aktuella Tailscale kan routa undernät i kärn- eller användarutrymmesläge
Tailscales aktuella dokumentation beskriver nu både undernätsroutning i kärnläge och i användarutrymmes-/netstackläge. Kärnläge i Linux bevarar det normala beteendet för paketvidarebefordran och ger i allmänhet bättre prestanda; användarutrymmesläge kan också routa trafik, men avslutar och återskapar stödd trafik i sin egen nätverksstack.
För Docker dokumenterar aktuella Tailscale också att TS_USERSPACE är aktiverat som standard, medan kärnläget kräver /dev/net/tun och de nödvändiga funktionerna.
En fungerande TUN-enhet är inte hela konfigurationen för en undernätsrouter
En Linux-undernätsrouter behöver också IP-vidarebefordran, annonserade rutter, ruttgodkännande i Tailscales administratörskonsol och lämpliga åtkomstregler för tailnet. Att en container lyckas skapa tailscale0 betyder inte i sig att fjärrenheter i det lokala nätverket kan routas genom den.
Följ det aktuella arbetsflödet för Tailscales undernätsrouter när ZimaOS kärn- och enhetslager fungerar.
Tillämpa inte diagnosen ”tun.ko saknas” från 1.4.x på aktuella ZimaOS
Källan dokumenterar själv versionsgränsen: filen saknades på grund av hur kärnan i 1.4.x byggdes, och ZimaOS 1.5.0 ändrade TUN-funktionen till en modul. Aktuella ZimaOS har kommit långt efter den versionen.
Vid ett modernt fel bör du granska de aktuella containerinställningarna, TUN-enhetens tillgänglighet, användarutrymmes-/kärnläge, IP-vidarebefordran och godkännande av rutter i stället för att anta att paketeringsproblemet med kärnan från 2025 har återkommit.
Tailscales TUN-FAQ
Bevisade det faktum att modprobe tun misslyckades att ZimaOS saknade TUN-stöd?
Nej. IceWhale sade att TUN kompilerades direkt in i källkärnan i stället för att levereras som en separat modul.
Vad ändrades i ZimaOS 1.5.0?
Zima-Jerry sade tun.ko blev en laddningsbar kärnmodul.
Bekräftade det ursprungliga inlägget att den nya versionen fungerade?
Ja. De testade igen efter ändringen i 1.5.0 och sade att det fungerade.
