TUN モードの仕組みと有効化方法:グローバル通信を確実に制御する

TUN 仮想ネットワークアダプタとシステムプロキシの違いを解説し、TUN モードでなければプロキシを通せないアプリの種類、各プラットフォームで TUN を有効化する際の権限設定と DNS の注意点を説明します。

01

システムプロキシと TUN モードの境界線

SECTION / PROXY VS TUN

システムプロキシ(System Proxy)は OS レベルの設定であり、実質的にはシステムやアプリの実行環境に一組のプロキシアドレス(HTTP_PROXY / HTTPS_PROXY などの環境変数、あるいは Windows の WinINet/WinHTTP 設定項目、macOS のネットワーク環境設定)を書き込むものです。アプリがネットワークリクエストを送る際にこの設定を読み取り、自らトラフィックをプロキシポートへ転送して初めて「プロキシを経由した」ことになります。これは**協調的な**転送方式であり、プロキシが実際に機能するかどうかは対象アプリが協力するかどうかに依存します。

一方 TUN モードは全く異なる仕組みです。Clash Meta(mihomo)で TUN を有効にすると、システム内に仮想ネットワークアダプタが作成され(Windows では Wintun ドライバに依存し、macOS/Linux では utun/tun0 デバイスに対応)、システムのデフォルトルートがこの仮想アダプタへ向けられます。以降、ネットワーク層を通過するすべての IP パケットは——どのプロセスから発生したか、プロキシの存在を知っているかにかかわらず——まず仮想アダプタに捕捉され、その後 Clash コアがルールに基づいて処理します。これは**ネットワーク層での強制的な制御**であり、アプリ側の協力を必要としません。

違いを一言でまとめると、システムプロキシは「経由するかどうかはアプリの意思次第」、TUN モードは「経由するかどうかにかかわらず必ず通過させる」という点にあります。

NOTE / 解説

TUN モードはシステムプロキシの「強化版」として置き換えるものではなく、まったく別の転送経路です。多くのクライアントでは両者を併用できますが、同時に有効化するとルーティングテーブルが互いに競合する場合があるため、トラブルシューティングの手間を減らすには片方だけを使うことを推奨します。

02

TUN が必須となるトラフィックの種類

SECTION / WHO NEEDS TUN

以下のようなケースではシステムプロキシが機能せず、TUN モードでなければカバーできません。

「プロキシを有効にしているのに直接接続されている」というアプリを見つけた場合、たいてい上記のいずれかに該当します。TUN モードを有効にするのが最も直接的な解決策です。

03

各プラットフォームでの有効化方法と権限要件

SECTION / PLATFORM SETUP

TUN モードは仮想ネットワークアダプタの作成やシステムルーティングテーブルの変更を伴うため、いずれのプラットフォームでも高い権限が必要ですが、詳細な手順は異なります。

Windows で仮想ネットワークアダプタを作成するには Wintun ドライバが必要で、主要なクライアント(Clash Verge、Clash for Windows 系派生版)はインストール時または初回の TUN 有効化時に自動でこのドライバをインストールします。有効化の手順:

  1. クライアントを管理者権限で実行する(右クリックで「管理者として実行」を選択するか、設定内で「管理者権限で起動」を有効にする)。
  2. 設定パネルで TUN モードのスイッチを見つけて有効にする。初回有効化時にはドライバのインストールやネットワークアダプタの許可を求めるダイアログが表示されるので、許可を選択する。
  3. システムのファイアウォールが仮想アダプタの送信規則をブロックしている場合は、Windows Defender ファイアウォールで該当するネットワークカテゴリを手動で許可する(通常は初回のダイアログで「プライベートネットワーク」を選択すれば問題ない)。

管理者権限で実行していないことが、Windows で TUN モードを有効化できない最も多い原因です。スイッチを ON にしても自動的に OFF に戻ってしまうのが典型的な症状です。

CAUTION / 注意

TUN モードはクライアントにグローバルなルーティングを制御する権限を与えます。クライアントは必ず公式ルートから入手し、ダウンロード元を確認したうえで使用してください。出所不明のプログラムに管理者権限や CAP_NET_ADMIN を付与しないでください。

04

DNS の処理:fake-ip、ハイジャック、ルーティングループ

SECTION / DNS BEHAVIOR

TUN モードを有効にすると、DNS クエリも仮想アダプタによって捕捉されます。これは TUN モードにおいて最もトラブルが起きやすい部分でもあります。設定ファイルでは通常、DNS ハイジャックと解決ポリシーを明示的に指定する必要があります。

tun:
  enable: true
  stack: system
  dns-hijack:
    - "any:53"
  auto-route: true
  auto-detect-interface: true
dns:
  enable: true
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - 223.5.5.5
    - 1.1.1.1

dns-hijack は、外部への 53 番ポートの DNS リクエストをすべて強制的に捕捉し Clash コアに処理させる設定で、ルールを迂回して海外や汚染された DNS サーバーへ直接アクセスしてしまうことを防ぎます。fake-ip モードは各ドメインに対してプライベートアドレス帯の仮の IP を割り当てる仕組みで、アプリ側にはこの仮 IP が見え、実際の接続が確立される際にコアが本来の宛先へ差し替えます。これにより実際の名前解決結果を待たずにドメイン名でルールを判定できるという利点があります。

よくある問題の切り分け方向:

05

TUN モードが正しく機能しているかを確認する

SECTION / VERIFICATION

TUN モードを有効にした後は、クライアントのスイッチの状態だけで判断せず、以下の順序で確認することを推奨します。

  1. 仮想ネットワークアダプタが存在するか確認する。 Windows では「ネットワーク接続」を開き、「Mihomo」や「Clash」といった名称のアダプタが追加されているか確認します。macOS/Linux では ifconfig または ip addr を実行し、utun / tun0 デバイスが存在するか確認します。
  2. デフォルトルートを確認する。 Windows では route print、macOS/Linux では netstat -rn または ip route を使用し、デフォルトルートが物理アダプタではなく仮想アダプタに向けられていることを確認します。
  3. システムプロキシに依存しないツールでテストする。例えばターミナルでプロキシパラメータを何も指定せずに curl を実行したり、ルール上「プロキシが必要」と判定されるドメインをコマンドラインで Ping し、想定した出口にヒットしているかを確認します。
  4. クライアントの接続ログを確認する。多くのクライアントは「接続」や「ログ」パネルで各接続のインバウンドタイプを表示しており、TUN モードでの接続は通常 HTTP/SOCKS ではなく TUN と表示されます。これによりどの経路が実際に機能しているかを確認できます。

上記の確認をすべて通過しても特定のアプリだけがプロキシを経由しない場合、そのアプリがシステム上で特定のネットワークインターフェースに固定されていたり、独自の DNS を使用している可能性が高く、Clash の設定をさらに調整するのではなく、そのアプリ自体のネットワーク設定を個別に確認する必要があります。

CTA-01

TUN モード対応のクライアントが必要な方へ

Clash Verge や mihomo コアはいずれも TUN モードの切り替えに対応しており、本記事で解説した権限設定と DNS の内容に沿えば設定を完了できます。まだクライアントをインストールしていない場合はダウンロードページから該当プラットフォームのインストーラーを入手できます。基本的なインストール手順を先に確認したい場合はチュートリアルページをご覧ください。

クライアントを入手DL·711