v2rayNのTUNモード設定方法|仮想NICで全通信をルーティングする方法

v2rayNのTUNモードで仮想NICが通信を処理する仕組みと設定手順を解説。システムプロキシを使わないアプリへの対応や、権限エラーの解決方法も紹介します。

この記事の概要

ブラウザーは接続できるのに、ゲームやコマンドラインツールが直接通信してしまう場合は、まずアプリがシステムプロキシに対応しているか確認し、必要に応じてTUNを有効にしましょう。この記事ではWindows版v2rayNを使い、権限の準備、仮想NICの有効化、ルーティングの確認、問題発生時の復旧手順を説明します。「通信を取り込む」ことと「すべてをプロキシ経由にする」ことの違いを押さえ、スイッチの表示だけで判断せず、ログとシステムコマンドで設定を確認します。

システムプロキシ・TUN・グローバルルーティングの違い

システムプロキシは、OSにプロキシのアドレスを登録し、その設定に対応したアプリがローカルのプロキシポートへ接続する仕組みです。すべてのプログラムの通信が自動的に切り替わるわけではありません。環境変数を参照するコマンドラインツールや、ソケットを直接使うゲーム、独自のプロキシ設定を使うアプリもあります。ブラウザーでアクセスできても、確認できるのはブラウザーの通信経路が基本的に使えるということだけです。

TUNはネットワーク層に仮想NICを用意し、ルーティングと組み合わせて条件に合うIP通信を処理経路へ送ります。アプリ側でHTTPプロキシやSOCKSプロキシを意識する必要はありませんが、通信が取り込まれるかどうかはルート、インターフェースのバインド、アドレスファミリー、除外設定などに左右されます。取り込まれた後も、ルールによって直結・プロキシ・ブロックのいずれかに振り分けられます。

設定動作するレイヤー保証されないこと
システムプロキシ対応アプリをローカルのプロキシポートに接続するゲーム、UDP、すべてのコマンドライン通信を取り込めるとは限らない
TUNモード仮想NICとシステムルートを通じてIP通信を受け取るすべての通信が最終的にリモートノード経由になるとは限らない
グローバルプロキシルーティングルールで許可された通信をプロキシ経由で送信するTUNの代わりにはならず、使用できないノードも修復できない
ルールによる振り分けドメイン名やIPアドレスなどの条件に応じて送信先を選ぶ中国本土のすべてのアドレスやLAN内アドレスがルールで網羅されているとは限らない

まず通信の取り込み方法を選び、その後に送信ルールを選ぶ

ブラウザーだけでプロキシを使うなら、まずシステムプロキシを利用します。プロキシ設定を参照しないアプリも処理したい場合は、TUNを試してください。それらのアプリをノード経由で通信させるには、現在のルーティングポリシーも確認が必要です。「TUNを有効にする」だけで「すべてプロキシ経由」になるわけではありません。

権限・ノード・復旧用設定を準備する

まずシステムプロキシモードで選択中のノードに接続できることを確認し、その後でTUNを設定します。VMessとVLESSはノードで使うプロトコル、サブスクリプションURLはノード設定の取得と更新に使うもので、いずれも仮想NICを作成する機能ではありません。ノードが使えない状態で通信の取り込み方法を切り替えても、原因の切り分けが難しくなるだけです。

v2rayNはGUIクライアントで、実際の通信処理は呼び出されたコアが担います。TUNの実装やコアの組み合わせはバージョンによって変わり、一般的な構成ではsing-boxが関係する場合があります。「ノードがXrayを使う」ことを「TUNも必ず同じコアだけで処理される」と解釈しないでください。問題の切り分けでは、起動ログに記録されたプロセス、設定、エラーを確認します。

v2rayNのTUNモードを順番に有効化する

以下では一般的な中国語版デスクトップUIを例に説明します。v2rayNはリリースによって項目の位置が変わることがあります。「Tunモード設定」「TUN設定」などの項目が見つかった場合は、バージョンの説明も確認してください。項目が見当たらないからといって、仮想NICを手動で新規作成する必要があるとは限りません。

  1. ノードを確認

    メイン画面で登録済みのノードを選び、アクティブサーバーに設定します。システムプロキシ経由で、アクセスできることが分かっているHTTPSサイトを開いてください。この時点で失敗する場合は、ノードのアドレス、ポート、認証情報、端末の時刻を先に確認します。

  2. 管理者権限で起動

    通知領域からv2rayNを完全に終了し、プログラムを右クリックして「管理者として実行」を選び、システムの許可確認に応答します。ウィンドウを閉じるだけで再起動すると、権限を昇格していない古いプロセスが残ったままになることがあります。

  3. 設定を確認

    「設定」→「パラメーター設定」を開き、ローカルの待受設定を確認します。このタブがあるバージョンでは「Tunモード設定」も開いてください。最初はクライアントの初期値を使い、プロトコルスタック、MTU、DNSポリシーを同時に変更しないようにします。

  4. ルーティングを選択

    メイン画面下部のルーティング選択欄で、現在のプリセットを確認します。通常の利用では既存のルールによる振り分けを選びます。送信経路を比較する場合は一時的にグローバルプロキシのプリセットを使い、元の設定を記録しておいてください。

  5. 通信の取り込みを有効化

    メイン画面下部の「Tunを有効化」スイッチをオンにし、ログに仮想NICの作成、インターフェースの起動、ルート設定のエラーがないか確認します。TUNだけを検証するには、「システムプロキシ」を「システムプロキシをクリア」に切り替えます。ブラウザーが従来の経路で接続して判断を誤るのを防げます。

  6. アプリを確認

    まずブラウザーをテストし、次にシステムプロキシを使わなかった対象アプリをテストします。ログに記録された接続先と実際の送信経路を確認してください。ネットワークに接続できなくなった場合は、まず「Tunを有効化」をオフにし、以前のシステムプロキシ設定に戻します。

「システムプロキシをクリア」は検証時の変数を減らすための操作で、両機能を常に併用できないという意味ではありません。安定動作を確認した後は、アプリに応じてシステムプロキシを残すか決めてください。ただし、コア自身の通信を再びプロキシの入口に戻すと、接続がループする場合があります。

ポート・ルート・ログで通信の取り込みを確認

以下の3つの数値は、トラブルシューティングでよく確認する項目であり、そのまま設定に入力する値ではありません。特にローカルプロキシのポートは、「設定」→「パラメーター設定」に表示される実際の待受ポートを使ってください。例の10808と異なる場合は、実際の値に置き換えます。

10808
ローカルプロキシの待受ポート例
53
一般的なDNSサービスのポート
443
一般的なHTTPS接続先のポート

PowerShellで以下の読み取り専用コマンドを実行し、TUNの有効化前後でインターフェースとルートを比較します。TUNはより具体的なルートを使って通信を取り込む場合があり、既存のデフォルトルートが置き換わるとは限りません。そのため、デフォルトゲートウェイだけを確認しても不十分です。ポートが待ち受け状態でも、入口が起動したことしか分からず、ノードが使用可能とは限りません。

# ネットワークインターフェースを表示し、TUN有効化前後を比較する
Get-NetAdapter -IncludeHidden

# IPv4とIPv6のルートを表示する
route print -4
route print -6

# ローカルの待受ポートが10808の場合に限り使用する
Get-NetTCPConnection -State Listen -LocalPort 10808

# curlのユーザー設定を読み込まず、明示的なHTTP/SOCKSプロキシも使わない
curl.exe -q --noproxy "*" --connect-timeout 10 -I https://example.com

最後のコマンドは、アプリケーション層のプロキシを明示的に指定していない通信の確認に使えます。TUNをオフにして一度実行し、次にオンにして実行しながら、クライアントのログも確認してください。HTTP応答が返れば接続が進んだことは分かりますが、応答だけでプロキシ経由と断定することはできません。接続先がもともと直結可能な場合もあるため、ログで送信先の選択を確認します。

DNS・UDP・LAN接続の問題を解決

TUNがパケットを受信できても、ドメイン名が正しく名前解決されるとは限りません。従来のDNSはUDPまたはTCPの53番ポートを使うことが多い一方、ブラウザーが暗号化DNSを使うこともあります。「ドメイン名でアクセスできないが、既存の接続は続く」場合は、すべてのノードをすぐに切り替えるのではなく、まず名前解決の経路を確認してください。

「設定」→「パラメーター設定」を開き、現在のバージョンにあるDNS関連のタブを確認します。直接接続での名前解決、プロキシ経由の名前解決、TUNのDNS処理設定を区別してください。ドメイン名の処理とルールによる振り分けは連動します。現在アクセスできないDNSサーバーにすべてのDNS通信を送ると、直結とプロキシの両方でタイムアウトすることがあります。

症状優先して確認する項目具体的な操作
ドメイン名で接続できないDNSサーバーへの接続、名前解決の経路、ログResolve-DnsName example.comを実行しながらログを確認します。DNS設定を一度に一つだけ変更して再試行してください。
Webページは開くが、音声通話ができないUDP対応、ノード側のサービス、ファイアウォールのポリシー対象アプリのUDP接続ログを調べ、使用中のノードと通信経路が転送に対応しているか確認します。
プリンターや共有フォルダーに接続できないLAN内のアドレスが誤ってプロキシ経由になっていないか実際のLANセグメントがルーティング設定で直結になっているか確認し、ローカルのファイアウォールも調べます。
一部の接続先が直結のままIPv6ルート、アプリのインターフェースバインド、ルールの除外設定IPv4とIPv6のルートテーブルを比較し、対象接続で適用されたルールを確認します。

起動失敗の原因を調べ、ネットワークを復旧

トラブルシューティングは「権限とインターフェース → コアの起動 → ノード接続 → DNSとルールによる振り分け」の順に進めます。後から続く多数のタイムアウトより、ログで最初に確認できる明確なエラーが手がかりになります。ログを共有する前に、サブスクリプションURL、ノードの認証情報などの機密情報を必ず隠してください。

TUNを有効にすると権限不足と表示される場合は?

まず通知領域からクライアントを終了し、「管理者として実行」で起動します。それでも失敗する場合は、セキュリティソフトや組織のポリシーによって仮想インターフェースの作成やルートの書き込みが禁止されていないか確認してください。原因を探るために、セキュリティ機能をすべて無効にするのは避けましょう。

スイッチはオンなのに、ログにコアの起動失敗が表示される場合は?

プログラムのフォルダーに必要なファイルがそろっているか確認し、コア起動時に最初に出たエラーを調べます。アドレスやポートが使用中と表示された場合は、Get-NetTCPConnection -State Listenを実行してプロセスを確認してください。見覚えのないシステムプロセスを終了しないでください。

有効化後、すべてのWebサイトがタイムアウトする場合は?

まずTUNをオフにして元のシステムプロキシ設定に戻し、同じノードで接続を確認します。元のモードでも失敗するなら、先にノードを修復します。TUNでのみ失敗する場合は、ルートの競合とDNSを確認してください。初期のプロトコルスタック設定を基準にし、一度に変更する項目は一つにします。

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

プログラムが異常終了した場合は、同じ権限で再起動し、まずTUNをオフにしてから「システムプロキシをクリア」を選び、通常の方法で終了します。それでも復旧しない場合はPCを再起動し、Windowsのプロキシ設定とネットワーク接続を確認してください。すべてのルートを消去するコマンドは実行しないでください。

動作確認後は、日常利用に合ったルールによる振り分けのプリセットに戻し、LAN、ブラウザー、対象アプリをもう一度テストします。システムプロキシで十分ならTUNは無効のままで構いません。必要なときだけ有効にしてください。MTU、DNS、プロトコルスタック、ルートを何度も変更するより、検証済みの設定を残しておくほうが問題を特定しやすくなります。

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