TUNモードとは?仮想NICプロキシの仕組み

TUN(Tunnel、トンネル)はOSカーネルが提供する仮想ネットワークデバイスです。Clash Verge RevでTUNモードを有効にすると、システムはローカルに仮想NIC(MihomoコアはこれをWindows/LinuxではMihomo、macOSではutunと命名します)を作成し、全アウトバウンドトラフィックがこの仮想NICを経由してClashコアに転送されるようOSにルーティングルールを注入します。

従来のHTTPプロキシやSOCKS5プロキシと異なり、TUNモードはネットワーク層(OSI第3層)で動作します。アプリがOSのプロキシ設定を「遵守」するかどうかに依存しません。パケットがマシンを離れる瞬間に仮想NICがそれを傍受し、Clashのルールエンジンで振り分けます。

ⓘ 主なメリット
プロキシ設定をサポートしないネイティブアプリ(一部のゲームクライアント、CLIツール、UDPサービスなど)に対しても有効です。ネットワーク層でトラフィックが統一的に傍受されるため、アプリがプロキシを認識するかどうかは関係ありません。

TUNモード vs システムプロキシ:主な違い

TUNモードを有効にする前に、通常のシステムプロキシ(HTTP/SOCKS)との本質的な違いを理解する必要があります。システムプロキシを有効にしても一部のトラフィックが「漏れる」ユーザーが多いのは、システムプロキシの制限が根本原因です。

比較項目 システムプロキシ(HTTP/SOCKS) TUNモード
動作レイヤー アプリケーション層(第7層) ネットワーク層(第3層)
TCPトラフィック プロキシ設定に従うアプリのみ 全て捕捉、例外なし
UDPトラフィック 通常サポートなし 完全サポート(ゲーム/DNS/リアルタイム通信)
ネイティブアプリの回避 プロキシを回避するアプリのトラフィックが漏れる 回避不可、全トラフィックを一元処理
設定の複雑さ シンプル、追加権限不要 管理者/root権限が必要、初回は認証が必要

簡単に言えば:たまに特定サイトにアクセスするだけならシステムプロキシで十分です。しかし、DNSクエリ・ゲームUDPパケット・IDEプラグイン・Gitクライアントなど全トラフィックをClashで一元管理したい場合はTUNモードが必要です。

TUNモードを有効にする前の準備

バージョン確認

TUNモードはMihomoコアが提供します。Clash Verge Rev 1.7.x以降には完全なTUN実装が内蔵されています。最新バージョンを使用することで最良の互換性とパフォーマンスが得られます。古いバージョンやClash Premiumのレガシー版はTUNサポートが不安定なため、問題が発生した場合はまずコアをアップグレードしてください。

システム権限

  • Windows:Clash Verge Revを管理者として実行する必要があります。アイコンを右クリックして「管理者として実行」を選択するか、設定で「管理者として起動」を有効にしてください。
  • macOS:TUNモードを初めて有効にする際、システムがNetwork Extensionのインストール許可を求めるダイアログを表示します。パスワードを入力して確認してください(この操作は一度だけです)。
  • LinuxCAP_NET_ADMINケーパビリティまたはroot権限が必要です。

設定ファイルのバックアップ

システムレベルのネットワーク設定を変更する前に、Clash Verge Revの設定管理画面から現在のconfig.yamlをエクスポートしてバックアップすることを強くお勧めします。TUNモードはシステムルーティングテーブルを変更するため、設定ミスが一時的なネットワーク障害を引き起こす可能性があります。バックアップがあれば素早くロールバックできます。

Clash Verge RevでTUNモードを有効にする方法

準備が完了したら、次の手順に従ってください:

  1. Clash Verge Revを開き、「設定」ページに移動——左サイドバーの歯車アイコンをクリックするか、ショートカットCtrl/Cmd + ,を使用します。
  2. 「TUNモード」スイッチを見つける——「システムプロキシ」セクションの下に通常「TUNモード」の専用トグルがあります。有効にしてください。
  3. システム権限ダイアログを確認——macOSではNetwork Extensionのインストールを許可するためパスワードを入力してください。WindowsではUACプロンプトが表示されたら「はい」をクリックします。
  4. 仮想NICの作成を確認——Windowsの「ネットワーク接続」にClash Mihomoという仮想アダプターが表示されるはずです。macOSではターミナルでifconfig | grep utunを実行すると新しいutunインターフェースが確認できます。
  5. プロキシルーティングが正常か確認——海外サイトと国内サイトに同時にアクセスして、両方が正常にアクセスでき、互いに遅延に影響しないことを確認します。
⚠ 注意
TUNモードを有効にした後、システムプロキシを無効にすることで二重プロキシによるオーバーヘッドを削減できます。両方が同時に有効な場合、一部のトラフィックが二度プロキシ処理され、不要な遅延が発生する可能性があります。

DNSハイジャックとリーク防止の設定

TUNモードでは、DNS設定が成否を左右します。DNSクエリがClashをバイパスしてISPのDNSサーバーに直接届く場合、ISPはドメイン名のクエリ記録を残すことができます。また、取得したIPが汚染されていない海外IPであっても、GEOIPルールが誤って直接接続と判断して接続に失敗することがあります。

推奨DNS設定ブロック

config.yamlのDNSセクションの推奨設定は以下の通りです:

dns:
  enable: true
  listen: 0.0.0.0:1053
  ipv6: false              # Disable IPv6 DNS to prevent direct leaks
  enhanced-mode: fake-ip   # Recommended: fake-ip prevents real DNS from leaking
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - '*.lan'
    - 'localhost.ptlogin2.qq.com'
  default-nameserver:
    - 114.114.114.114       # Bootstrap DNS for resolving nameservers below
    - 8.8.8.8
  nameserver:
    - https://doh.pub/dns-query          # Domestic encrypted DNS
    - https://dns.alidns.com/dns-query
  fallback:
    - https://8.8.8.8/dns-query          # Fallback for overseas domains
    - https://1.1.1.1/dns-query
  fallback-filter:
    geoip: true
    geoip-code: CN
    ipcidr:
      - 240.0.0.0/4

fake-ipモード vs redir-hostモード

fake-ipモード(推奨):Clashは実際のDNS解決を行わず、リクエストされた各ドメインに対してfake-ip-rangeからの偽のIPを返します。アプリがその偽のIPに接続を試みると、Clashがそれを傍受し、ルールに基づいてプロキシか直接接続かを決定し、プロキシノードで実際のDNS解決を行います。ISPには明文のDNSクエリが一切見えません。

redir-hostモード:ClashはまずDNS解決を行い、実際のIPを取得してからルールマッチングを実行します。このモードではDNSクエリが暗号化チャンネルを通らない場合にリークリスクがあります。TUNモード単体での使用は推奨しません。

IPv6直接接続問題とルーティング最適化

TUNモードを有効にしても一部の海外サイトへのアクセスが異常なユーザーが多く、原因は多くの場合IPv6トラフィックがTUNに傍受されていないことです。現代の家庭用ブロードバンドやモバイルネットワークではIPv6が広く展開されており、ブラウザがIPv6アドレスを優先してターゲットサイトにアクセスするが、ClashのTUNルーティングルールがIPv4のみをカバーしている場合、そのIPv6トラフィックはプロキシをバイパスして直接接続されます。

クイックソリューション

  • DNS設定でIPv6を無効化ipv6: falseを設定してClashがAAAAレコードを解決しないようにします。ブラウザは自動的にIPv4にフォールバックします。
  • システムレベルでIPv6を無効化(より徹底的):WindowsではNICプロパティでIPv6のチェックを外します。macOSではアクティブなNICに対してnetworksetup -setv6off Wi-Fiを実行します。
  • TUNのIPv6ルーティングを設定:IPv6機能を維持する必要がある場合、ClashのTUN設定でinet6-addressを有効にし、IPv6のデフォルトルートも仮想NICを指すようにします。
💡 ヒント
ほとんどのプロキシ使用シナリオでは、IPv6を無効にするのが最もシンプルで効果的な解決策です。IPv6の主な利点はアドレス空間とP2P通信にあります。プロキシを通じて海外サービスにアクセスする場合、IPv4で十分です。

トラブルシューティングガイド

問題1:TUN有効化後にローカルネットワーク(LAN)にアクセスできない

TUNルーティングルールがLANサブネットを誤って上書きすることがあります。修正方法:ルールセットの最上部にLAN IPレンジの直接接続ルールを明示的に追加します:

rules:
  - IP-CIDR,192.168.0.0/16,DIRECT
  - IP-CIDR,10.0.0.0/8,DIRECT
  - IP-CIDR,172.16.0.0/12,DIRECT
  # ... other rules follow

問題2:ブラウザが「ERR_NAME_NOT_RESOLVED」を表示する

これは通常DNSがClashに正しくルーティングされていないことを意味します。確認手順:dns.enable: trueを確認し、DNSリスニングポートがファイアウォールでブロックされていないか確認します。fake-ipモードを使用している場合、enhanced-mode: fake-ipが有効になっているか確認します(Clash Verge Revの接続パネルでfake-ipアドレスが確認できます)。

問題3:WindowsでTUN仮想NICを作成できない

WinTunドライバーが正しくインストールされていない可能性があります。Clash Verge Revの設定で「サービスインストール」を見つけ、「サービスをアンインストール」してから「サービスをインストール」し、管理者権限でClash Verge Revを再起動します。

問題4:macOSのシステムアップグレード後にTUNモードが動作しない

大規模なOSアップデートによりNetwork Extension認証がリセットされることがあります。「システム設定 → プライバシーとセキュリティ」に移動し、Clash関連のシステム拡張エントリーを見つけて「許可」をクリックして再認証します。

問題5:TUN有効化後にゲームの遅延が増加する

TUNがゲームのUDPトラフィックを傍受した後、ルールセットがゲームサーバーのIPを誤って「プロキシ」と判断すると遅延が増加します。修正:GEOIP,CN,DIRECTを使用して国内サーバーを直接接続し、ゲームプラットフォームのドメインやIPレンジに個別の直接接続ルールを追加します。

使いやすいClashクライアントを選ぶ

TUNモードの強力な機能は、適切に設計され継続的にメンテナンスされているクライアントでのみ十分に発揮されます。Clash Verge Revはコミュニティで最も活発にメンテナンスされているデスクトップクライアントの一つですが、唯一の選択肢ではありません。iOS非対応、AndroidのUI設定が初心者に不親切、メンテナンス停止時の互換性問題など、独自の制限もあります。

全プラットフォーム対応、信頼性の高いメンテナンス、ほとんどのユーザーに適したClashクライアントをお探しなら、私たちが提供するバージョンの使用をご検討ください。Mihomoコアを基盤としたワンクリックTUNモードスイッチ内蔵で、YAMLの手動編集なしに本記事の全操作が完了できます。ビジュアルなサブスクリプション管理でノードの更新がより直感的になり、DNSリーク問題が検出された際はUIで直接通知と修正提案が表示されます。

Windows、macOS、Android、iOS、Linux全プラットフォームに対応バージョンがあり、同期更新されます。本記事で学んだTUNモードのテクニックは全て私たちのクライアントでシームレスに実践できます。

Clashクライアントを無料ダウンロード →