この記事は、ゲームやコマンドラインツール、単体アプリがシステムプロキシを使わない場合に役立ちます。仮想ネットワークアダプターの通信経路から始め、Windowsのv2rayNとAndroidのv2rayNGで有効にする手順、DNS・ルーティング・権限・仮想ネットワークアダプターの競合を切り分ける方法を解説します。
TUNモードとシステムプロキシの本質的な違い
システムプロキシは、OSがアプリに提供するプロキシ設定です。ブラウザーや一部のデスクトップアプリはこの設定を読み取り、HTTPまたはSOCKSリクエストをv2rayNのローカル待ち受けポートへ送ります。ただし、システムプロキシを使うかどうかはアプリ次第です。コマンドラインツール、ゲームランチャー、独自のネットワークスタックを使うソフト、一部のUDPアプリは、この設定を完全に無視することがあります。
TUNモードでは仮想レイヤー3ネットワークアダプターを作成し、対象IPパケットが最初にそこへ入るようシステムルートを変更します。クライアントは捕捉したTCP・UDP通信をXrayコアに渡し、ドメイン、IP、ポート、プロトコルのルールに従って、直接接続・プロキシ・遮断のいずれかへ振り分けます。アプリ側がプロキシプロトコルを理解する必要がないため、通常はシステムプロキシより広い範囲を取り込めます。
「全通信の取り込み」は「すべての接続をプロキシノード経由にする」という意味ではありません。TUNは通信を共通の入口へ送りますが、最終的な出口はルーティングルールが決めます。たとえばLANアドレスは直接接続、日本国内のサイトはGeoSiteやGeoIPのルールで直接接続し、それ以外の通信だけをプロキシノードへ送れます。取り込み方式と振り分け結果は、別々のレイヤーです。
| 比較項目 | システムプロキシ | TUNモード |
|---|---|---|
| 取り込み対象 | プロキシ設定を自動的に読み取るアプリ | システムルートによって仮想ネットワークアダプターへ送られるIP通信 |
| UDPの処理 | アプリとプロキシインターフェースに依存 | コアで一元的に処理できるが、ノードの対応状況に左右される |
| 必要な権限 | 通常は一般ユーザー権限 | Windowsでは通常、管理者権限が必要 |
| 主な用途 | ブラウザー、オフィスソフト、日常的なWebアクセス | ゲーム、ターミナルツール、独自ネットワークスタックのアプリ、通信の一元的な振り分け |
結論:取り込み漏れを確認してからTUNを有効にする
システムプロキシを使わない特定のアプリだけが通信できない場合、TUNで取り込み範囲を補えます。ブラウザーもノード経由でアクセスできない場合は、TUNで隠すのではなく、先にノード、サブスク、コアのログを確認してください。
有効化前に権限・ポート・ルーティングを確認
モードを切り替える前に、通常のシステムプロキシでノードを検証します。利用可能なノードを選び、ブラウザーで対象サイトにアクセスできることを確認し、クライアントのログに接続成功の記録があるか確認してください。これにより「ノードが使えない」問題と「TUN設定の誤り」を切り分けられ、仮想ネットワークアダプター、DNS、ノード状態の間で何度も試行錯誤せずに済みます。
この記事の検証環境はv2rayN 7.15.4、v2rayNG 1.10.13、Xrayコアです。マイナーバージョンによってメニュー名は多少異なる場合がありますが、確認順序は変わりません。まずコアの起動、次に仮想ネットワークアダプターの権限、最後にルーティングとDNSを確認します。旧バージョンに該当するスイッチがない場合は、クライアント内の更新機能から先にアップグレードしてください。
ローカルポートを特定の固定値にする必要はありませんが、待ち受けポートの重複は避けてください。この記事ではSOCKS入口を10808、HTTP入口を10809に設定しています。ログに「address already in use」や「ポートが使用中」と表示された場合は、使用中のアプリを終了するか、「設定」→「パラメータ設定」で未使用のポートに変更してからコアを再起動します。
Windowsのテスト環境
- クライアント
- v2rayN 7.15.4
- ローカルSOCKS
- 127.0.0.1:10808
- ローカルHTTP
- 127.0.0.1:10809
- ルーティングポリシー
- LANとローカルアドレスをバイパス
ポートは変更できますが、各待ち受け入口は必ず重複しないようにしてください。
Androidのテスト環境
- クライアント
- v2rayNG 1.10.13
- 動作モード
- VPN
- アプリごとのプロキシ
- 初回テストでは無効
- 振り分けポリシー
- まずはデフォルトルールを使用
最初に端末全体の取り込みを検証し、その後で対象アプリに絞ると、問題を直接切り分けられます。
Windowsのv2rayNでTUNを有効にする
WindowsのTUNでは仮想ネットワークアダプターを作成してルートを書き込むため、起動中のv2rayNをいったん完全に終了し、システムメニューから「管理者として実行」を選びます。一般権限のままスイッチを繰り返し操作すると、コアは起動しているのにルートの書き込みに失敗する、仮想ネットワークアダプターが作成されない、再起動直後に停止するといった現象が起きることがあります。
- 通常のプロキシを検証。v2rayNを起動し、サブスクを更新して、利用可能と確認済みのノードを選択します。まずシステムプロキシモードでWebアクセスをテストし、ログに接続タイムアウト、証明書の時刻エラー、ノードアドレスの名前解決失敗がないか確認します。
- ローカル待ち受けを確認。「設定」→「パラメータ設定」を開き、SOCKSとHTTPのポートが他のアプリと競合していないことを確認します。この記事の例では10808と10809を使用します。変更後はコアを再起動して、新しい待ち受けを反映してください。
- TUN設定を開く。「設定」→「TUNモード設定」に進み、TUNを有効にします。初回テストでは「自動ルート」と「厳密ルート」などのデフォルト項目を維持してください。バージョンによって入口がメイン画面のツールバーにある場合は、現在の画面に表示されるTUNスイッチを優先します。
- TUNを起動。v2rayNが管理者権限で実行されていることを確認してから、TUNモードを有効にします。初回起動時はシステムのネットワーク権限確認が表示されることがあります。許可したら仮想ネットワークアダプターの初期化が完了するまで待ち、その間にスイッチを連続して切り替えないでください。
- ログを確認。リアルタイムログを開き、デバイス作成失敗、ポート競合、ルート追加失敗がないことを確認します。その後、Webページ、コマンドラインのダウンロードツール、これまでシステムプロキシを使わなかったアプリを順番にテストします。
テスト手順
1. 通常のシステムプロキシで対象サイトにアクセスできることを確認
2. 管理者権限でv2rayNを起動
3. TUNと自動ルートを有効化
4. コアのログにエラーがないことを確認
5. TCP、DNS、対象アプリをテスト
6. 最後にカスタム振り分けルールを有効化
有効化後は、他のネットワークツールにデフォルトルートを変更させたり、別のグローバル仮想ネットワークアダプターを作成させたりしないことをおすすめします。2つのプログラムが低メトリックのルートを奪い合うと、接続が不安定になる、一部サイトだけプロキシを迂回する、スリープ復帰後にドメインを解決できないといった症状が出ることがあります。企業内ネットワーク用の接続ツールを併用する場合は、企業側の仮想ネットワークアダプターで処理すべきネットワーク範囲を先に決め、そのプライベートネットワークにはV2Rayのルーティングで直接接続を設定してください。
取り込みが成功したか確認するとき、タスクバーのアイコンだけを見ないでください。より確実なのは、TUNを有効にしたままシステムプロキシを無効にし、以前プロキシを使わなかったアプリをテストする方法です。そのアプリが接続を確立でき、v2rayNのログに対応する宛先アドレスが表示されれば、通信はTUNに入っています。テスト後、日常の用途に応じてシステムプロキシも併用するか決めてください。
Androidのv2rayNGでアプリ通信を取り込む
v2rayNGはシステムが提供するVPNインターフェースを使って仮想ネットワーク経路を構築します。動作はデスクトップのTUNに近く、アプリの通信がまずクライアントへ入り、その後Xrayコアがルーティングと送信を処理します。初回起動時にはシステムの接続許可が表示されます。許可するとステータスバーにネットワーク経路の表示が現れ、通信の取り込みが有効になります。
- ノードをインポートしてテスト。v2rayNGでサブスクを更新し、設定を選んでから遅延テストを実行します。遅延時間は探測リクエストに応答があったことを示すだけなので、実際に起動してWebページへアクセスし、ノードがデータを転送できることを確認してください。
- 動作モードを選択。「設定」→「モード」に進み、VPNモードを選択します。現在のバージョンがメイン画面の起動ボタンでシステム経路を作成する仕様なら、そのデフォルト方式を維持し、ローカルプロキシポートだけを開くモードには切り替えないでください。
- 初回はアプリごとのプロキシを無効にする。「設定」→「アプリごとのプロキシ」に進み、最初は無効のままにして、通常のアプリをすべて同じテスト経路へ入れます。全体の接続が正常だと確認してから、この機能を有効にし、プロキシを使うアプリやバイパスするアプリを選択してください。
- 接続を開始。メイン画面に戻って起動をタップし、システムのネットワーク接続を許可します。接続状態が安定したら、ブラウザー、UDPが必要なアプリ、バックグラウンドの更新処理を順番にテストします。
- 省電力制限を確認。画面ロック後に頻繁に切断される場合は、システムのアプリ管理でv2rayNGのバックグラウンド実行を許可し、バッテリー最適化によってネットワークサービスが停止されていないか確認します。入口は端末によって異なりますが、通常は「設定」→「アプリ」→「v2rayNG」→「バッテリー」にあります。
| アプリごとのプロキシ設定 | 通信の結果 | 適した場面 |
|---|---|---|
| 無効 | 通常のアプリをまとめて仮想ネットワークへ送る | 初回検証、取り込み漏れの切り分け |
| 選択したアプリだけをプロキシ | チェックしたアプリだけがプロキシ経路に入る | 対象が明確で、取り込み範囲を狭めたい場合 |
| 選択したアプリをバイパス | チェックしたアプリは直接接続し、それ以外はルールに従って処理 | ローカルサービスや特定アプリを必ず直接接続したい場合 |
v2rayNGのVPNモードとノードのプロトコルは別の概念です。VMessとVLESSはクライアントとリモートノードの間でプロキシ接続を確立する方法を表し、VPNモードは端末上のアプリ通信がクライアントへ入る方法を表します。VMessやVLESSのノードを変更してもアプリごとのプロキシ範囲は自動的に変わらず、アプリ一覧を変更してもサブスク内のサーバーアドレス、ポート、通信パラメーターは書き換わりません。
DNS・ルーティング・LANアクセス
TUNが通信を正常に捕捉しているのにWebページでドメインを解決できない場合、問題はDNS経路にあることが多いです。名前解決はシステムが行う場合もあれば、アプリが独自に行う場合もあります。DNSリクエストが仮想ネットワークアダプターを迂回している、別の暗号化DNS設定に処理を奪われている、到達不能なサーバーへ誤ってルーティングされていると、IPには接続できてもドメインを開けない状態になります。
切り分けでは、まず既知のIPアドレスのサービスへアクセスして「名前解決の失敗」と「接続の失敗」を分け、次にコアのログに53番ポートへのリクエストがあるか確認します。システムDNS、クライアントDNS、ブラウザーのセキュアDNS、ルーティングルールを同時に変更しないでください。一度に一か所だけ変更し、コアを再起動して再テストすれば、どの段階が反映されたか判断できます。
- LANアドレス:10.0.0.0/8、172.16.0.0/12、192.168.0.0/16は直接接続にして、プリンター、ルーターの管理画面、LANストレージがリモートノードへ送られないようにします。
- ループバックアドレス:127.0.0.0/8はローカルアクセスを維持し、クライアントのローカル待ち受けが再びTUNへ送られて再帰接続になるのを防ぎます。
- ドメインルール:GeoSiteはドメイン集合に基づいてマッチングするため、名前解決前に送信先を決める用途に適しています。カスタムの完全一致ドメインルールは、広いカテゴリのルールより前に配置してください。
- IPルール:GeoIPは対象IPを取得した後の振り分けに使われ、地域別アドレスやプライベートネットワークのマッチングに利用できますが、ドメイン段階のルールを置き換えるものではありません。
- ルールの順序:多くのルーティング設定は上から順に評価し、最初に一致したルールを採用します。具体的なルールを前に置き、範囲の広いフォールバックルールは最後に配置してください。
LANアクセスを例にすると、TUNを有効にした後に192.168.1.1を開けない場合は、まず対象ネットワークに直接接続ルールがあるか確認し、次に厳密ルートがルールに含まれない通信を遮断していないか確認します。端末が社内ネットワークと家庭内ネットワークに同時接続している場合は、両方が同じプライベートネットワーク範囲を使っていないかも確認してください。ネットワーク範囲が重複すると、ドメインルールだけではどのアダプターへ渡すべきか判断できません。
結論:TUNで入口を統一し、ルーティングで出口を決める
「一部のアプリは正常だが、一部のサイトは異常」という場合は、どのルールに一致したかとDNSの経路から確認し、すべての通信を無理にプロキシへ送らないでください。LANとループバックは直接接続として残し、例外だけを具体的なドメインルールで上書きするほうが、単一のグローバル送信より安定しやすくなります。
よくある競合と段階的な修復
TUNのトラブルは「権限とデバイス」「ルーティング」「DNS」「ノード」の4層に分けて対応します。まずログに明確なエラーがないか確認し、クライアントを繰り返し再インストールするのは避けてください。デバイス作成の失敗は権限や仮想ネットワークアダプターの競合が原因であることが多く、リクエストがログに入っているのにタイムアウトする場合は、ノード、プロトコルパラメーター、リモートネットワークの問題である可能性が高いです。
TUNを有効にしたらPC全体がインターネットに接続できなくなった?
まずTUNを無効にして通常のネットワークが復旧することを確認し、管理者としてv2rayNを再起動します。「設定」→「TUNモード設定」では自動ルートを維持し、仮想ネットワークアダプターを作成する他のプログラムを一時停止してから、もう一度テストしてください。
ログにポートが使用中と表示される?
重複して起動しているv2rayNのプロセスを終了し、10808、10809などのローカルポートを他のアプリが待ち受けていないか確認します。その後、「設定」→「パラメータ設定」でポートを変更し、保存してコアを再起動してください。
Webページは開けるのに、ゲームや音声通信が失敗する?
ノードが必要なUDP通信に対応しているか確認し、対象ポートが誤って遮断用の送信先へ送られていないかルーティングルールを確認します。まずデフォルトルートで再テストし、その後カスタムルールを一つずつ戻して、どのルールが影響しているか特定してください。
v2rayNGが画面ロック後数分で切断される?
システムの「設定」→「アプリ」→「v2rayNG」→「バッテリー」に進み、バックグラウンド実行を許可してネットワークサービスを停止する制限を解除します。同時に、ネットワークの変化に応じた自動再接続がクライアントで有効になっているか確認してください。
TUNは有効なのに、LAN機器へアクセスできない?
対象機器が属するプライベートネットワークを直接接続に追加し、そのルールがプロキシのフォールバックルールより前にあることを確認します。複数のネットワークに同時接続している場合は、システムのルーティングテーブルで同じネットワーク範囲のメトリックと出口アダプターを確認してください。
システムのスリープやネットワーク切り替え後に問題が発生した場合は、いったんTUNを停止し、仮想ネットワークアダプターの状態が解放されるまで待ってから再起動します。Wi-Fiから有線、家庭内ネットワークからモバイルホットスポットへ切り替えると、デフォルトゲートウェイとインターフェース番号が変わります。自動ルートの再構築が間に合わないと、古いルートがすでに無効なインターフェースを指し続けることがあります。
それでも復旧しない場合は、最小構成でテストします。ノードを1つ、デフォルトルート、デフォルトDNSだけ残し、アプリごとのプロキシと追加ルールを無効にしてTUNだけを有効にしてください。最小構成で使えることを確認したら、設定を一つずつ戻します。これにより、原因がノード設定、DNS、カスタムルート、別のネットワークプログラムのどれかを明確にできます。
TUNを使うべき場合とシステムプロキシを維持する場合
TUNは、通信を一元的に取り込みたい場合、UDPを処理したい場合、システムプロキシに従わないアプリを使う場合に適しています。ただし、仮想ネットワークアダプター、ルーティング、DNSという3つの管理対象が増えます。ブラウザーと一般的なデスクトップソフトだけでプロキシを使うなら、システムプロキシのほうが構成はシンプルで、問題もローカルポートとアプリ設定から切り分けやすくなります。
- ブラウザーとオフィスソフトがシステムプロキシに従う:システムプロキシを優先。
- コマンドラインツール、ゲーム、単体アプリがシステムプロキシを迂回する:TUNを使用。
- ドメイン、IP、ポートで通信を一元的に振り分ける:TUNを使用し、LANの直接接続を維持。
- 企業の仮想ネットワークアダプターを常時稼働させる必要がある:ネットワーク範囲とルーティングの優先順位を先に設計し、TUNを併用するか決める。
- 一時的なトラブル対応:まずシステムプロキシに戻してノードを検証し、その後TUN、DNS、カスタムルールを段階的に復元。
正しい有効化手順は、まずノードを検証し、次に仮想ネットワークアダプターを作成し、その後ログとDNSを確認して、最後に振り分けルールを追加することです。取り込みの入口、ルールのマッチング、プロキシへの送信を分けて確認すれば、TUNモードの大半のトラブルは具体的な箇所まで絞り込めます。「接続済みなのにアクセスできない」という曖昧な状態のまま悩む必要はありません。