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のルールエンジンで振り分けます。
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のインストール許可を求めるダイアログを表示します。パスワードを入力して確認してください(この操作は一度だけです)。
- Linux:
CAP_NET_ADMINケーパビリティまたはroot権限が必要です。
設定ファイルのバックアップ
システムレベルのネットワーク設定を変更する前に、Clash Verge Revの設定管理画面から現在のconfig.yamlをエクスポートしてバックアップすることを強くお勧めします。TUNモードはシステムルーティングテーブルを変更するため、設定ミスが一時的なネットワーク障害を引き起こす可能性があります。バックアップがあれば素早くロールバックできます。
Clash Verge RevでTUNモードを有効にする方法
準備が完了したら、次の手順に従ってください:
-
Clash Verge Revを開き、「設定」ページに移動——左サイドバーの歯車アイコンをクリックするか、ショートカット
Ctrl/Cmd + ,を使用します。 - 「TUNモード」スイッチを見つける——「システムプロキシ」セクションの下に通常「TUNモード」の専用トグルがあります。有効にしてください。
- システム権限ダイアログを確認——macOSではNetwork Extensionのインストールを許可するためパスワードを入力してください。WindowsではUACプロンプトが表示されたら「はい」をクリックします。
-
仮想NICの作成を確認——Windowsの「ネットワーク接続」に
Clash Mihomoという仮想アダプターが表示されるはずです。macOSではターミナルでifconfig | grep utunを実行すると新しいutunインターフェースが確認できます。 - プロキシルーティングが正常か確認——海外サイトと国内サイトに同時にアクセスして、両方が正常にアクセスでき、互いに遅延に影響しないことを確認します。
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を指すようにします。
トラブルシューティングガイド
問題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モードのテクニックは全て私たちのクライアントでシームレスに実践できます。