TUNモードの有効化方法を詳しく解説:仮想ネットワークアダプターで全トラフィックを取り込む仕組みと設定手順

TUNモードとシステムプロキシの違いを解説。プロキシ設定を使わないアプリの通信を仮想ネットワークアダプターで取り込む仕組みと、v2rayN・v2rayNGの設定手順、注意点を紹介します。

この記事の要点

VMess、VLESS、またはサブスクリプションのノードで接続できるものの、一部のアプリだけプロキシを使わない方に適しています。通信を取り込む仕組みから、v2rayN 7.xとv2rayNG 1.10.xの設定手順、ルーティング、DNS、確認方法、無効化後の復元まで順に説明します。

TUNモードとシステムプロキシの経路の違い

システムプロキシとTUNモードは、異なる層の問題を解決します。システムプロキシは通常、OSにHTTPまたはSOCKSプロキシのアドレスを書き込みます。たとえばv2rayNでは、ローカルHTTPポート10809がよく使われます。ブラウザー、ダウンロードツール、チャットアプリがこの設定を読み取って初めて、通信はクライアントに入ります。システムプロキシを無視するアプリ、常に直接接続するランチャー、一部のコマンドラインツールは、そのままネットワークへ接続する場合があります。

TUNモードでは仮想ネットワークアダプターを作成し、システムルートを変更して、宛先IPへの通信をまず仮想インターフェースへ送ります。クライアントはパケットを読み取り、Xrayまたはv2flyカーネルに渡して、ドメインのスニッフィング、DNS解決、ルーティング分岐を行います。アプリ側でHTTPプロキシを理解したり、127.0.0.1とポート番号を個別に設定したりする必要がないため、複数のプロセスをまとめて取り込みたい場合に適しています。

アプリがリクエストを開始 TUNアダプターが捕捉 宛先ドメインを復元 ルールで振り分け プロキシまたは直接接続

「全トラフィックを取り込む」ことは、「すべての接続をプロキシノード経由にする」ことと同じではありません。TUNはパケットをクライアントへ渡す役割を担い、最終的にプロキシ、直接接続、ブロックのどれを選ぶかはルーティングルールが決めます。たとえばLANアドレス、プリンターのアドレス、日本国内のサイトは直接接続し、プロキシルールに一致した通信だけをVMessまたはVLESSのアウトバウンドへ送れます。取り込み範囲とアウトバウンド方針は別の概念です。

  • システムプロキシ:設定が簡単で、HTTPまたはSOCKSプロキシに対応したデスクトップアプリに適しています。
  • TUNモード:システムプロキシを読み取らないプロセスも対象にでき、TCP、UDP、DNSリクエストをまとめて処理できます。
  • グローバルプロキシ:ルーティング上の判断であり、取り込んだ外部通信を優先的にプロキシ経由にすることを意味します。
  • ルールベースの振り分け:ドメイン、IP、ポート、プロセスなどの条件に応じて、異なるアウトバウンドを選択します。

Windowsでv2rayNのTUNモードを有効にする

以下はv2rayN 7.xを基準にしています。マイナーバージョンによってボタンの位置がメインウィンドウ上部やトレイメニューに変わる場合がありますが、中心となる設定項目はTUN、ルーティング、DNSです。初回の仮想ネットワークアダプター作成には管理者権限が必要です。権限を昇格していない場合、画面上は切り替わったように見えても、ログにはインターフェース作成やルート書き込みの失敗が表示されることがあります。

  1. v2rayNを開き、まずサブスクリプションを更新して、動作確認済みのノードを選択します。
  2. 「設定」→「パラメーター設定」→「TUNモード」を開き、TUNで使用するカーネルとスタックの項目を確認します。
  3. 設定を保存し、クライアントを完全に終了してから、システムの「管理者として実行」で再起動します。
  4. メインウィンドウまたはトレイメニューから「TUNモード」を開きます。ステータスバーに実行中と表示されるまで待ち、ログで仮想インターフェースとルートの初期化が完了したか確認します。
  5. ルーティングモードをルールベースの振り分けに設定し、まずLANは直接接続のままにして、ブラウザーと、これまでシステムプロキシを読み取れなかったアプリをテストします。

v2rayNの基本パラメーター

バージョン基準
7.x
SOCKSポート
10808
HTTPポート
10809
権限
管理者として実行
ルーティング方式
ルールベースの振り分け

ローカルプロキシポートは通常のシステムプロキシに使用します。TUNのパケットは仮想インターフェースが取り込むため、両者を同じ待受入口として扱わないでください。

TUNの推奨初期設定

LAN
直接接続
DNS
TUNで処理
IPv4
優先して確認
UDP
ノードの対応状況に応じる
システムプロキシ
切り替えの重複を避ける

まず変数を最小限にして経路を確認し、その後、カスタムDNS、プロセスルール、より細かなドメイングループを段階的に追加します。

起動後はボタンの色だけでなく、まずログを確認します。正常な流れでは、TUNインターフェースの作成、ルーティングルールの適用、カーネルの起動成功が記録されます。ポートの待受段階で止まる場合は、10808や10809が別のv2rayNプロセスに使用されていないか確認します。インターフェース作成で止まる場合は、管理者権限と残った仮想ネットワークアダプターを重点的に確認してください。

TUNをテストする間は、システムプロキシを一時的に無効にして、通信が本当に仮想ネットワークアダプターから取り込まれているか確認できます。システムプロキシを無効にしてもブラウザーがルールどおりにアクセスでき、LAN機器にも直接接続できるなら、TUNとルーティングルールはおおむね正常です。テスト後は2種類の取り込み方式を頻繁に切り替えないでください。障害調査で、通信がどの入口から入ったのか分かりにくくなります。

7.x
v2rayNの設定基準
10808
一般的なSOCKSポート
10809
一般的なHTTPポート
1枚
仮想ネットワークアダプターを追加

判定基準:システムプロキシを無効にして再確認

システムプロキシを有効にした状態だけでテストしても、TUNが通信を取り込んだ証明にはなりません。システムプロキシを無効にしてTUNだけを残し、ブラウザー、コマンドラインアプリ、LANアドレスを個別にテストすると、結果から原因を特定しやすくなります。

Androidでv2rayNGのVPN取り込みを設定する

v2rayNGはAndroidのシステムVPNサービスを利用して仮想ネットワークインターフェースを作成します。その動作位置はデスクトップのTUNに近いものです。接続をタップすると、システムにVPN許可の確認が表示されます。許可後、取り込み対象となるアプリの通信がv2rayNGに入り、Xrayカーネルがノード設定とルーティングルールに基づいて処理します。

v2rayNG 1.10.xを設定基準とし、まずサブスクリプションをインポートしてノードの遅延テストを完了します。「設定」→「VPN設定」を開き、VPNモード、アプリのプロキシ範囲、LANのバイパス、ローカルDNS関連の項目を確認します。メイン画面に戻ってノードを選択し、接続をタップします。初回起動時はシステムのVPN接続リクエストを許可してください。

  1. 「サブスクリプション設定」で完全なサブスクリプションURLを保存し、更新を実行して利用可能なノードを選択します。
  2. 「設定」→「VPN設定」を開き、VPNによる取り込みを有効にします。
  3. 端末全体を取り込む場合は、特定アプリのみをプロキシする設定を有効にしないでください。範囲を絞る場合は、その後でアプリ一覧を作成します。
  4. LANのバイパスを有効にして、ルーターの管理画面やLANサービスへのアクセスが遠回りにならないようにします。
  5. メイン画面に戻って接続し、ステータスバーにシステムVPNの表示が出たことを確認してから、DNSとWebアクセスをテストします。

v2rayNGで端末全体を取り込む

バージョン基準
1.10.x
実行カーネル
Xray
取り込み方式
システムVPN
アプリの範囲
すべてのアプリ
LAN
バイパス推奨

まず経路全体を確認するのに適しています。安定したことを確認してからアプリの範囲を絞り込みます。

アプリごとに割り当て

入口
VPN設定
モード
アプリプロキシ
選択方式
指定または除外
DNS
カーネルに従う
UDP
ノードの対応が必要

一覧の方向は必ず確認してください。指定アプリと除外アプリでは、結果が正反対になります。

v2flyNGを使用する場合も、取り込み方式はシステムVPNサービスに依存しますが、実行カーネルはv2flyです。サブスクリプション内のVMess、VLESS、トランスポートパラメーターは、クライアントとカーネルの両方が対応している必要があります。TUNまたはVPNによる取り込みは通信の入口を変えるだけで、サーバーアドレス、UUID、トランスポート層、TLSパラメーターを自動的に書き換えるものではありません。

DNS、ルーティング、UDPの設定ポイント

TUNの作成に成功したのにドメインへアクセスできない場合、原因はノードの切断ではなく、DNSリクエストが別の経路から送信されていることがよくあります。アプリが誤ったアドレスを取得すると、その後の接続がプロキシに入っても失敗します。設定時は、ドメイン解決と実際の通信が同じ振り分けロジックに従うようにし、システムDNS、クライアントDNS、ブラウザー独自のDNSが同時に競合しないようにします。

v2rayNでは、「設定」→「パラメーター設定」を開き、DNSとルーティングを確認します。ドメインルールを使う場合は、カーネルが照合できるようドメイン情報を保持します。早い段階でIPだけに変換されると、ドメインベースの振り分けルールに一致しないことがあります。スニッフィングを有効にすると、一部のTCPまたはHTTP通信から宛先ドメインを復元できますが、すべてのDNS問題を解決する代替手段ではありません。

確認対象 正常な状態 異常な状態 対処の方向
DNSリクエスト カーネルがルールに従って解決 名前解決がタイムアウトする、または到達不能なアドレスが返る クライアントのDNS経路を統一
LANアドレス ゲートウェイと機器へ直接アクセス ルーターの管理画面が開かない プライベートアドレスを直接接続に追加
UDP通信 ノードとアウトバウンドの両方が対応 音声通話やリアルタイム接続に失敗 ノードのUDP対応を確認
ドメインルール ログに想定したアウトバウンドが表示される すべてのリクエストがデフォルトルールに入る 順序とスニッフィング結果を確認

ルーティングルールが順番に照合される場合、明確な条件をデフォルトルールより前に置きます。一般的な初期順序は、プライベートIPを直接接続、LANドメインを直接接続、プロキシが必要なドメインをプロキシへ送り、最後にデフォルトルールで未一致のリクエストを処理する形です。ルールが増えるほど、Webページが開くかどうかではなく、ログで実際に一致した項目を確認することが重要です。

UDPを利用できるかどうかは、アプリ、クライアント、実行カーネル、プロトコル設定、サーバー側の対応状況によって決まります。TUNはUDPパケットを捕捉できますが、選択したVMessまたはVLESSノードが完全に転送できるとは限りません。Webページは正常なのにリアルタイム音声やゲーム接続に問題がある場合は、UDPログを個別に確認し、UDP対応が確認済みの別ノードでもテストしてください。

設定の順序:まずDNSを統一し、その後に振り分けを広げる

初めてTUNを有効にするときは、LANの直接接続と1つのデフォルトプロキシルールだけを残します。DNS、TCP、UDPの基本経路を確認してから、ドメイングループ、プロセス条件、カスタムアウトバウンドを追加すると、変数を大幅に減らせます。

よくある障害と復元手順

TUNの障害は「仮想ネットワークアダプターが作成されたか」から確認し、次にルーティング、DNS、カーネル、ノードを調べます。サブスクリプションをすぐに変更すると、本当の原因を見落としがちです。特にクライアントが異常終了した後は、残ったルートによってネットワーク全体が使えなくなることがあります。その場合は、まずTUNを無効にしてクライアントを完全に終了してください。

TUNを有効にした直後にネットワークへ接続できなくなった場合は?

まずTUNを無効にしてv2rayNを終了し、ネットワークアダプターを再度有効にします。その後、管理者としてクライアントを起動し、インターフェース作成またはルート書き込みで失敗していないかログを確認します。接続できない状態で何度も起動を重ねないでください。

ブラウザーは使えるのに、特定のアプリだけ直接接続する場合は?

システムプロキシを無効にしてTUNだけを残し、再試行します。そのアプリが独自のネットワークサービス、固定されたネットワークアダプター、特殊なUDP経路を使っていないか確認してください。Androidでは「設定」→「VPN設定」を開き、アプリが除外されていないことも確認します。

接続は成功するのに、すべてのドメインがタイムアウトする場合は?

まず確実に到達できるIPアドレスへ直接接続をテストし、次にクライアントのDNSログを確認します。ブラウザー独自のDNS設定を無効にしてカーネルに解決を統一し、53番ポートのリクエストが別のネットワークツールに横取りされていないか確認してください。

LANのプリンターやルーターの管理画面を開けない場合は?

ルーティング設定でプライベートアドレス範囲とLANドメインを直接接続にし、LANのバイパスを有効にします。変更後はTUNに再接続し、ゲートウェイアドレスと機器のアドレスを個別にテストします。

クライアントを終了してもネットワークが復元しない場合は?

プロセスが完全に終了したことを確認し、物理ネットワークアダプターを無効にしてから再度有効にします。続いて、システムプロキシが127.0.0.1:10809を指したままになっていないか確認します。必要に応じてシステムを再起動し、残った仮想インターフェースと一時ルートを削除します。

ポートの競合は、主にローカルHTTP、SOCKS、または制御インターフェースに影響します。Windowsでは、まずターミナルで10808と10809の待受プロセスを確認し、古いプロセスを終了するかポートを変更します。ポートを変更した場合はシステムプロキシの設定も更新してください。更新しないと、システムは引き続き古いポートへリクエストを送り、TUNやノードが壊れたように見えます。

netstat -ano | findstr :10808
netstat -ano | findstr :10809
tasklist | findstr <PID>

無効化するときは、まずクライアント内でTUNを停止してからプログラムを終了します。カーネルプロセスを直接終了しないでください。正常に終了すれば、一時ルートが撤回され、仮想インターフェースが解放されます。TUNとシステムプロキシを切り替える場合も、一度無効化してネットワークを確認してから、もう一方のモードを有効にしてください。

  1. TUNまたはAndroidのシステムVPN接続を無効にします。
  2. v2rayN、v2rayNG、またはv2flyNGを完全に終了します。
  3. システムプロキシに127.0.0.1:10809が残っていないことを確認します。
  4. 直接接続、LANゲートウェイ、DNS名前解決をテストします。
  5. クライアントを再起動し、1種類の取り込み方式だけを有効にして再テストします。

TUNが本当に通信を取り込んでいるか確認する

「接続済み」と表示されるだけでは不十分です。完全なテストでは、システムプロキシに対応したアプリ、システムプロキシを読み取らないアプリ、LANアドレス、1つのUDP機能を確認します。4種類の結果から、仮想ネットワークアダプターによる取り込み、ルールベースの振り分け、LANバイパス、UDP転送がそれぞれ正常か判断できます。

  • システムプロキシを無効にしてTUNだけを残し、通常のWebページにアクセスできることを確認します。
  • これまでシステムプロキシを使わなかったアプリを起動し、カーネルログに対応する宛先が表示されるか確認します。
  • ルーターのゲートウェイまたはLAN機器へアクセスし、リクエストが直接接続ルールに一致することを確認します。
  • DNSチェックを実行し、名前解決リクエストとプロキシ通信が想定した経路を使っていることを確認します。
  • リアルタイム音声などのUDP通信をテストし、継続的なタイムアウトが発生しないことを確認します。

最終的な判断材料はログです。v2rayNではメイン画面の実行ログから、インバウンド、宛先アドレス、アウトバウンドのタグを確認できます。v2rayNGではログ画面で接続の確立とルーティング結果を確認できます。宛先リクエストがまったく表示されない場合は、取り込み範囲またはシステムルートの問題です。リクエストは表示されるもののアウトバウンドが誤っている場合は、ルールの問題です。アウトバウンドが正しいのに接続できない場合は、ノードと宛先ネットワークを確認してください。

TUNは「アプリがプロキシ設定に従わない」という入口の問題を解決するのに適しています。設定が安定したら、クライアントのバージョン、サブスクリプションの更新日時、現在のノード、ルーティングモード、DNS設定、ローカルポートを基準として記録しておきます。以後の障害では一度に1つの変数だけを変更し、変更前後のログを記録すると、何度も再インストールするより原因を特定しやすくなります。

クライアントをダウンロード