TUN モードとは何か(システムプロキシとの違い)
多くのプロキシクライアントは、まずシステムの HTTP/HTTPS プロキシ設定を書き換えるか、ブラウザ拡張から接続先を差し替えることで動きます。これは手軽ですが、プロキシ設定を参照しないアプリケーションが大量に存在します。代表的なのが Git、npm / yarn / pnpm、コンテナや CLI の各種 SDK、そして多くのゲームクライアントです。これらは独自のソケットを開き、環境変数 HTTP_PROXY が無ければそのまま直結しようとします。
TUN モードは、このギャップを埋めるための仕組みです。OS に仮想ネットワークインターフェース(いわゆる TUN デバイス)を立ち上げ、ルーティングテーブルやファイアウォールのルールを通じて本来インターネットへ向かうはずのパケットを Clash 側へ迂回させます。結果として、アプリが「プロキシを意識していなくても」、TCP だけでなく必要に応じて UDP も同じパイプラインに乗せやすくなるのが大きな利点です。オンラインゲームのマッチングやボイスチャットのような UDP 依存の通信を扱う場面では、この差が如実に出ます。
なぜ Git・npm・ゲームは取りこぼしやすいのか
Git はリモート URL が https:// でも git@(SSH)でも、内部ではそれぞれ別のスタックで通信します。HTTPS 経由の fetch は OS の証明書ストアやプロキシチェーンの影響を受けやすい一方、SSH はポート 22 へ直結しがちで、システムプロキシの外に出ます。チーム開発で「ブラウザは速いのに git pull だけ遅い」「社内規程でプロキシ必須なのに SSH が通らない」といった相談は、この構造差から起きやすいです。
npm 系も同様で、レジストリへの HTTPS 通信は環境変数や .npmrc の proxy 設定が無いと直結します。yarn や pnpm も基本は同じで、CI 用スクリプトやローカルのビルドツールがバックグラウンドで別プロセスを起こすと、気づかないうちに設定の抜けが生じます。さらに Docker のイメージ取得や Go モジュールの取得など、サブコマンドごとに挙動が分岐するツールでは、毎回プロキシ変数をエクスポートする運用は人為ミスが乗りやすく、長期的には TUN の方が安定しがちです。
ゲームについては、ランチャーがブラウザ埋め込みでログイン画面だけプロキシ経由でも、実ゲームの UDP セッションは別ポートで直結する、というパターンが珍しくありません。アンチチートやカーネルレベルのドライバが絡むタイトルでは、過度なフックを嫌う実装もあり、ユーザ空間プロキシとの相性問題が表面化することもあります。TUN は万能ではありませんが、「少なくともルーティング上は Clash の前に立たせる」という意味で、切り分けの第一段として非常に強力です。
TUN が動くとき、OS の内部で何が起きているか
実装の細部はクライアントや OS の世代で異なりますが、共通しているのは仮想アダプタの作成とルートの注入です。Windows では Wintun などのスタックを用いる製品が多く、初回セットアップで管理者権限とドライバの署名確認ダイアログが出るのはこのためです。macOS ではシステム拡張やネットワークフィルタの許可が求められることがあり、Linux では CAP_NET_ADMIN に相当する権限が話題になります。
ユーザーが誤解しやすいのは、「TUN をオンにしたらすべての通信が海外ノードへ丸ごと出る」という図式です。実際には Clash 内部のルールエンジンが最終的な出口を決めます。ローカル帯域や社内イントラネット、マルチキャストなどを除外するためのルールが適切に無いと、意図せず遠回りしたり、逆に直結したまま取りこぼしたりします。したがって TUN はルールセットとセットで設計する機能だと考えるのが安全です。
有効化の現実的な手順(GUI 利用者向け)
具体的なボタン名は製品によりますが、流れはおおむね次のとおりです。(1) クライアントを管理者/ルート相当の権限で起動できる状態にする (2) TUN 用コンポーネントのインストールを実行する (3) 設定プロファイルで tun セクションを有効化する (4) 再起動後に仮想アダプタが生成されているか確認する、の四段です。途中でセキュリティソフトがドライバ挿入を止める場合は、一時的に除外するか、ベンダ推奨の手順に従ってください。
Windows で Clash Verge 系をお使いの方は、当ブログのClash Verge Rev Windows セットアップガイドと併せて読むと、インストールから TUN 有効化までの画面操作を一気通貫で追いやすくなります。Clash for Windows から乗り換えた直後で全体像を押さえたい場合は、Clash Meta 移行ガイドも参照してください。GUI に慣れているほど、「YAML の一行を足したのに効かない」原因が権限不足だった、というオチに遭遇しがちです。
設定ファイル側で押さえるポイント(概念レベル)
厳密なキー名はコアのバージョンで揺れるため、ここでは概念のみ整理します。多くの場合、tun ブロックに スタック方式(gVisor 系やシステムスタックなど)や 自動ルート、DNS ハイジャックに相当するオプションが並びます。初心者ほど「とりあえず自動ルート ON」「DNS もアプリに任せる」を同時に押しがちですが、社内ドメインやストリーミングの挙動が変わるとトラブルに見えるので、段階的に有効化するのがおすすめです。
高度なユーザーは rules 側でプロセス名やドメインを細かく振り分け、ゲームだけ特定のポリシーグループへ、開発ツールは別グループへ、といった運用も可能です。ここで重要なのは、TUN は入口を共通化する装置であり、出口の品質は依然としてノードとルールの設計次第だという点です。
Git を安定してプロキシ側へ乗せる考え方
TUN が有効でルーティングが正しく注入されていれば、HTTPS リモートの Git 通信は多くの場合、追加の環境変数なしで Clash のルールに従います。とはいえ、SSH リモートをそのまま使う場合は、ポートフォワードやプロキシコマンドの別設計が必要になることがあります。チーム方針として「HTTPS リモートに統一する」「SSH は社内踏み台経由に限定する」など、プロトコル単位の方針を決めておくと運用が楽です。
証明書エラーが増えた場合は、企業プロキシの TLS インスペクションと Clash の関係を疑ってください。TUN を通した結果として見えるエラーか、Git 単体の検証パスかを切り分けると原因が絞れます。
npm / パッケージマネージャ周りの実務メモ
レジストリが registry.npmjs.org のような公開ホストであれば、ルール次第で問題なくプロキシ経由にできます。社内の Verdaccio ミラーへ常に向けるポリシーを持っている場合は、そのドメインが意図したポリシーグループに落ちているかをログで確認してください。npm install が途中で固まる症状は、DNS がループしているケースや、IPv6 優先と実経路のミスマッチでも起きます。TUN と DNS 設定はセットで見る癖を付けると早いです。
ゲームクライアントと UDP を扱うときの注意
UDP を含むタイトルでは、ノード側が UDP をサポートしていない、あるいは遅延が跳ね上がる、といった論点が独立して現れます。TUN は「UDP も Clash の入口に載せやすくする」のであって、遅延を消す魔法ではありません。競技志向のユーザーは、ゲーム用と一般ブラウジング用でプロファイルを分ける、ルールでゲームexeを DIRECT に逃がす、などの切り口も検討してください。
一部のアンチチートは仮想アダプタを検知して警告を出すことがあります。その場合はゲーム専用マシンでは TUN を切る、開発用マシンだけ TUN を使う、といった物理または論理の分離が現実的な落としどころになります。
DNS と「国内は直結、海外だけプロキシ」設計
TUN を有効にすると DNS クエリの経路も変わり、fake-ip モードと組み合わせたときの挙動が分かりにくく感じることがあります。基本方針としては、(1) どのドメインをローカル DNS に聞くか (2) どのドメインをリモートで解決するか (3) キャッシュの寿命はどうするか、の三つをYAMLとログで突き合わせます。ストリーミングや銀行アプリで突然弾かれる場合は、まずこの三角を疑うと早いです。
よくあるつまずきと切り分け順序
TUN をオンにしたが効いていない
権限不足、別プロファイルが読み込まれている、競合する VPN がルートを上書きしている、の三点を順に確認してください。特に企業用フルトンネル VPN と併用する場合は、どちらが優先ルートを握るかが争点になります。
遅い/ループしているように見える
DNS の往復が増えている、ノードの地理的遠さ、輻輳したプロトコル変換、などが候補です。同じ条件でシステムプロキシのみに戻して比較すると、ボトルネックが TUN 以前か以降かを切り分けられます。
セキュリティソフトが干渉する
パケットフィルタが仮想アダプタを不正扱いするケースがあります。ベンダの除外リストにクライアント本体とドライバを入れる、あるいは一時的に防御レベルを下げて再現性を確認する、が定石です。
オープンソース情報とインストール入手先
コアや GUI のソースコード、Issue、ライセンスは各プロジェクトの GitHub で追えますが、初回導入で迷わないよう、検証済みの入手導線は当サイトのダウンロードページにまとめています。TUN を初めて触る場合は、まず安定版のクライアントを一つ決め、ルールをシンプルに保ったうえで有効化すると学習コストが下がります。
まとめ
TUN モードは、ブラウザ中心のシステムプロキシ運用から一歩進んで、開発ツールやゲームまで同じルールのもとに載せるための強力な手段です。その代わり権限・DNS・UDP・他 VPN との関係といった周辺知識が伴います。一度通しで理解しておけば、環境変数の打ち忘れに振り回されにくくなり、チーム内の再現性も上がります。
実際に手元で比べると、同じノードでも体感の安定度が変わる場面は少なくありません。細かなプロファイル調整は時間がかかりますが、長く使うほど元が取れるタイプの投資です。準備が整ったら、→ Clash を無料ダウンロードして、TUN を含む新しいクライアント体験を試すところから始めてみてください。