TUN モードとは?システムプロキシとの違い

Clash にはトラフィックをプロキシに流す方法が 2 つあります:システムプロキシTUN モードです。この違いを理解することが、Clash を正しく活用するための鍵です。

比較項目システムプロキシ(HTTP/SOCKS5)TUN モード(仮想 NIC)
動作レイヤーアプリケーション層(L7)ネットワーク層(L3)
傍受方式アプリが能動的にプロキシアドレスを設定OS カーネルレベルでトラフィックを横取り
カバー範囲プロキシプロトコルに対応したアプリのみ全 TCP/UDP トラフィック、アプリの対応不要
UDP サポート限定的、アプリ実装に依存完全な UDP サポート
必要な権限一般ユーザー権限管理者 / root 権限

システムプロキシは OS レベルで HTTP/SOCKS5 プロキシアドレス(例:127.0.0.1:7890)を設定する仕組みです。ブラウザなどプロキシプロトコルに対応したアプリはリクエストをそのアドレスに送り、Clash が転送します。しかし、ゲームクライアント・CLI ツール・一部の Electron アプリはシステムプロキシ設定を読み取らず、直接接続してしまいます。

TUN モードは OS 内に仮想ネットワークインターフェース(Mihomo TUN)を作成し、ドライバレベルで送信パケットをすべて傍受します。アプリがプロキシプロトコルに対応しているかどうかに関わらず、すべてのトラフィックが強制的に捕捉され、Clash のルールエンジンで処理されます。これこそが真の意味での「グローバル透過プロキシ」です。

TUN モードが必要な場面

以下のシナリオでは TUN モードの有効化を強くお勧めします:

  • ゲームの高速化:Steam・Epic Games・Battle.net などのゲームクライアントは通常システムプロキシを経由しません。TUN を有効にするとゲームトラフィックを直接プロキシできます
  • CLI ツールgit clonenpm installpip installdocker pull などはデフォルトでシステムプロキシを使いません。TUN モードか環境変数の手動設定が必要です
  • UDP プロトコルアプリ:ビデオ通話(Zoom・Teams)・音声チャット(Discord)・DNS クエリなど UDP に依存するトラフィックは、システムプロキシでの UDP サポートが限定的です
  • 非標準アプリ:一部の開発ツール・研究ソフトウェア・VPN クライアントはシステムプロキシ設定を無視します
  • iOS/macOS のフルプロキシ:Stash/Surge と組み合わせると、TUN はシステムアップデートを含む全トラフィックを引き継げます
💡
日常的なブラウジングには TUN 不要:ブラウザだけをプロキシするなら、システムプロキシモードで十分です。リソース消費も少なく済みます。TUN モードは全トラフィックのプロキシが必要な上級ユースケース向けです。

Windows で TUN モードを有効にする(Clash Verge Rev)

前提条件

TUN モードには Clash Verge Rev を管理者として実行する必要があります。タスクバーアイコンを右クリック →「管理者として再起動」、またはスタートメニューのアイコンを右クリック →「管理者として実行」を選択してください。

TUN を初めて起動すると、wintun.dll ドライバ(Windows TUN 仮想 NIC ドライバ)が自動インストールされます。この処理にはインターネット接続が必要で、約 1 MB のファイルがダウンロードされます。インストールは一度だけ行えば以後不要です。

有効化の手順

  1. Clash Verge Rev が管理者として実行されていることを確認する(タイトルバーまたはタスクバーアイコンにシールドマークが表示されます)
  2. 左側ナビゲーションの「設定」をクリック
  3. システム設定」セクションで「TUN モード」のスイッチをオンにする
  4. ドライバのインストールプロンプトが表示された場合は「確認」をクリックし、完了を待つ
  5. 有効化後、タスクマネージャーのネットワークアダプター一覧に「Mihomo」仮想 NIC が表示されます
⚠️
Hyper-V / WSL2 との互換性:TUN モードを有効にすると、Hyper-V や WSL2 上の仮想マシンがインターネットにアクセスできなくなる場合があります。TUN がすべての送信トラフィックを傍受するためです。対処法:TUN 設定で仮想マシンのネットワーク帯域(例:172.16.0.0/12)を除外するか、一時的にシステムプロキシモードに切り替えてください。

macOS で TUN モードを有効にする(Clash Verge Rev)

有効化の手順

  1. Clash Verge Rev の「設定」ページで「TUN モード」を見つけてオンにする
  2. セキュリティの警告が表示されたら「システム環境設定 → プライバシーとセキュリティ」を開く
  3. ページ下部の「システム拡張機能がブロックされました」という表示を見つけ、「許可」をクリック
  4. macOS のパスワードを入力して承認し、Clash Verge Rev に戻って TUN スイッチをオンにする

macOS Sequoia(15)以降では、「システム設定 → VPN とフィルタ」で Mihomo のネットワーク拡張機能を手動で許可する必要があります。

ℹ️
macOS の TUN モードは Network Extension フレームワークを使用して実装されています。macOS のメジャーバージョンアップ後はシステム拡張機能の再承認が必要になる場合があります。

Android の TUN モード(ClashMeta for Android)

Android 版 CMFA の TUN モードはシステムの VpnService API を使用しており、root は不要です。プロキシ起動時に表示される VPN 権限リクエストが TUN モードの認証ダイアログです。

  1. CMFA を起動し、プロファイルが有効になっていることを確認する
  2. メイン画面の起動ボタンをタップ。初回起動時に VPN 権限リクエストが表示される
  3. 「OK」をタップ。Android ステータスバーに鍵アイコンが表示されれば TUN が有効です
  4. 「設定 → 設定を上書き」で TUN の動作モードを調整できます(Mixed / TUN only / System Proxy only)

Android の TUN はデフォルトですべてのアプリのトラフィックを引き継ぐため、追加設定は不要です。銀行アプリなどリスク検知を避けたい特定のアプリは、アプリ一覧から除外できます。

TUN モード YAML 設定の詳細

設定ファイルに tun フィールドを追加することで、TUN モードを細かく制御できます:

tun:
  enable: true
  stack: mixed          # mixed(推奨)/ system / gvisor
  auto-route: true      # ルートを自動追加してトラフィックを TUN に流す
  auto-detect-interface: true  # 出口 NIC を自動検出、複数 NIC 環境では必須
  dns-hijack:
    - any:53            # すべての DNS リクエストを横取り(UDP 53 番ポートを含む)
  strict-route: false   # true にすると TUN 以外のトラフィックを破棄。安全性は上がるが LAN に影響
  mtu: 9000             # 最大転送単位。9000 でフラグメントを減らしスループットを向上

# DNS 設定は TUN と合わせて使用する
dns:
  enable: true
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - 223.5.5.5
    - 119.29.29.29
  fallback:
    - tls://8.8.8.8:853
    - tls://1.1.1.1:853
  fallback-filter:
    geoip: true
    geoip-code: CN

stack パラメータの選択

stack 値説明推奨シナリオ
mixedTCP はシステムスタック、UDP は gVisor。互換性が最高デフォルト推奨、ほとんどの場面
systemすべてシステムネットワークスタックを使用。最高パフォーマンスLinux / macOS の高パフォーマンス環境
gvisorユーザー空間の仮想ネットワークスタック。分離性が高い互換性の問題が発生したときに試す

TUN モードのトラブルシューティング

有効化後にインターネットに接続できない

  1. 管理者として実行されているか(Windows)、またはネットワーク拡張機能が承認済みか(macOS)を確認する
  2. 設定ファイルに GEOIP,CN,DIRECT ルールが含まれているか確認し、国内トラフィックのループを防ぐ
  3. Clash のログを確認し、TUN インターフェースが正常に作成されたか確認する(ログに "inbound started" for tun が表示される)
  4. ウイルス対策ソフトを一時的に無効にする。一部のセキュリティソフトが仮想 NIC ドライバをブロックする場合があります

ゲームのトラフィックがまだ直接接続している

以下の設定がすべて完了していることを確認してください:

  • TUN スイッチがオンで、auto-route: true になっている
  • プロキシモードが「ルール」または「グローバル」に設定されており、「ダイレクト」ではない
  • ゲームサーバーのドメイン/IP に対応するルールがプロキシポリシーを指しており、DIRECT ではない
  • Clash のログでゲームプロセス名を検索し、トラフィックが Clash を経由しているか確認する

DNS ループ / 名前解決の失敗

TUN 有効時、dns-hijack: any:53 はすべての DNS リクエストを Clash に処理させるために傍受します。Clash の DNS 設定に問題がある場合(例:ネームサーバーに到達できない)、DNS 解決が失敗します。

対処法:DNS ネームサーバーを一時的に 223.5.5.5(Alibaba DNS)に変更して基本的な疎通を確認してから調整してください。

TUN 有効化後に速度が低下した

TUN モードはカーネルレベルでパケットを処理するため、約 5〜15% の余分な CPU オーバーヘッドが生じます。大幅な速度低下が見られる場合:

  • stackgvisor から mixed または system に変更する
  • auto-route: true が設定されているか確認する(ルーティングテーブルの競合を防ぐ)
  • 別の VPN ソフトが同時に動作していないか確認する(二重プロキシになっている場合があります)
Clash クライアントをダウンロードして TUN グローバルプロキシを今すぐ体験

まとめ:TUN モード使用のポイント

  • TUN モードはドライバレベルですべてのトラフィックを傍受する。システムプロキシはプロキシプロトコル対応アプリのみをカバー
  • ゲーム・CLI ツール・UDP アプリには TUN が唯一の確実な解決策
  • Windows は管理者権限 + wintun ドライバが必要。macOS はネットワーク拡張機能の承認が必要。Android は VpnService を使用(root 不要)
  • YAML のベストプラクティス:stack: mixed + auto-route: true + dns-hijack: any:53 の組み合わせ
  • 国内の直接接続ルール(GEOIP,CN,DIRECT)を必ず含め、国内トラフィックがプロキシを経由して速度が落ちないようにする

関連記事