コミュニティソリューション

ZimaOSのTailscaleサブネットルーター:TUNは組み込み機能でしたが、1.5.0でtun.koになりました

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.

2025年9月のこのスレッドでの主な誤りは、次の解釈でした。 modprobe tun 失敗したことを、ZimaOSにはTUNサポートがまったくない証拠と解釈していました。Zima-Jerryはその前提を訂正しました。ソースビルドではTUNはカーネルに直接コンパイルされていたため、個別の tun.ko ファイルが /lib/modulesmodprobe ロードするために。

しかし、ユーザーが指定したDockerサブネットルーターのワークフローでは、Tailscaleが想定するデバイスおよびモジュールの動作が依然として必要でした。そのためIceWhaleは、ZimaOS 1.5.0でTUNがロード可能なカーネルモジュールになるようパッケージ構成を変更しました。元の投稿者は9月29日に再テストし、動作するようになったと返信しました。

ユーザーは拠点間Tailscaleサブネットルーターを必要としていました

ソースに記載された設計では、メキシコとウルグアイの2つの物理拠点を接続し、各拠点のすべてのエンドポイントにTailscaleをインストールせずに、各拠点のローカルデバイスがTailscale経由で通信できるようにすることを目指していました。

これは単なる「ZimaOSダッシュボードへのリモートアクセス」ではなく、サブネットルーターの用途です。サブネットルーターは、tailnetと別のIPサブネットの間でパケットを転送する必要があります。

modprobeでtunモジュールファイルが見つからないと報告された

ユーザーは特権付きのTailscaleコンテナを実行し、次の結果を確認しました。

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

また、 tun.ko ファイルを確認しましたが、モジュール一覧の確認結果にTUNのエントリはありませんでした。

IceWhaleはTUNがカーネルに直接コンパイルされていると説明しました

Zima-Jerryの最初の公式回答は明確でした。TUN機能はカーネルに直接組み込まれているため、通常のモジュールファイルとしては表示されません /lib/modules/6.12.25.

これはLinuxカーネルの違いです。組み込みとして構成された機能は、次の一覧に表示されなくても利用できます lsmod またはロード可能であること modprobe.

組み込みサポートだけでは、ソースに記載されたコンテナのワークフローを完全には解決できませんでした

元の投稿者は、コンテナが依然としてユーザー空間モードになり、必要としていたホストと同等のサブネットルーター動作を提供できないと返信しました。特に、TUNをモジュール方式で公開できるかどうかを尋ねました。

Zima-Jerryは、これは次のバージョンで調整できると述べました。

ZimaOS 1.5.0でTUNがロード可能なモジュールに変更された

9月28日、Zima-Jerryは新しい1.5.0リリースで、 tun.ko カーネルモジュールになったため、ユーザーに再テストを依頼しました。

元の投稿者は翌日、「ありがとうございます。これで動作しました」と返信しました。

これはソースで確認された解決策であり、このスレッドで最も重要な結論です。

Tailscaleのユーザー空間ネットワークは別の動作モードです

現在のTailscaleドキュメントでは、ユーザー空間ネットワークを使用すれば、TUNデバイスなしでコンテナを実行できると説明されています。そのモードでは、 tailscaled 通常のLinuxトンネルインターフェースとして動作するのではなく、ユーザー空間のネットワークスタック/プロキシを介して動作します。

カーネルTUNが実際に必要かどうかを判断する際は、Tailscaleの現在のユーザー空間ネットワークモデルを使用してください。

現在のTailscaleはカーネルモードまたはユーザー空間モードでサブネットをルーティングできます

Tailscaleの現在のドキュメントでは、カーネルモードとユーザー空間/netstackモードの両方によるサブネットルーティングについて説明しています。Linuxのカーネルモードでは通常のパケット転送動作が維持され、一般にパフォーマンスも向上します。ユーザー空間モードでもルーティングできますが、独自のネットワークスタック内で対応するトラフィックを終端して再生成します。

Dockerの場合、現在のTailscaleのドキュメントにも記載されています。 TS_USERSPACE はデフォルトで有効ですが、カーネルモードでは /dev/net/tun 必要なケイパビリティ。

動作するTUNデバイスだけではサブネットルーターの設定全体を満たしません

Linuxのサブネットルーターには、IPフォワーディング、広告するルート、Tailscale管理コンソールでのルート承認、適切なtailnetアクセスルールも必要です。コンテナが正常に作成しても tailscale0 それだけでは、リモートLANデバイスがその経由でルーティングできることを意味しません。

ZimaOSのカーネル/デバイス層が機能した後は、現在のTailscaleサブネットルーターの手順に従ってください。

1.4.xの「tun.koがない」という診断を現在のZimaOSに適用しないでください

ソース自体がバージョンの境界を示しています。このファイルが存在しなかったのは1.4.xのカーネルのビルド方法が原因であり、ZimaOS 1.5.0ではTUN機能がモジュールに変更されました。現在のZimaOSはそのリリースをはるかに超えています。

現在の障害については、2025年のカーネルパッケージ問題が再発したと決めつけるのではなく、現在のコンテナ設定、TUNデバイスの利用可能性、ユーザー空間モード/カーネルモード、IPフォワーディング、ルートの承認を確認してください。

Tailscale TUN FAQ

modprobe tunの失敗は、ZimaOSにTUNサポートがないことの証明になりましたか?

いいえ。IceWhaleによると、TUNは独立したモジュールとして提供されるのではなく、ソースカーネルに直接組み込まれました。

ZimaOS 1.5.0では何が変更されましたか?

Zima-Jerryの発言 tun.ko ロード可能なカーネルモジュールになりました。

元の投稿者は、新しいバージョンが動作したことを確認しましたか?

はい。1.5.0への変更後に再テストし、動作していると述べました。