v2rayNのTUNモード設定方法|仮想NICで全通信を処理する仕組みと手順

仮想NICとシステムルーティングテーブルをもとに、TUNモードとシステムプロキシの違いを解説。v2rayNでのTUN有効化、管理者権限、DNS設定の手順も紹介します。

この記事の概要

サーバー設定をインポート済みで、ブラウザーは接続できるものの、ターミナルやほかのアプリがシステムプロキシを使わない場合に役立ちます。ここではWindowsを中心に、「ノードの確認、管理者として起動、TUNの有効化、ルーティングとDNSの確認」の順で手順を説明し、無効化後の復旧方法も紹介します。TUNで変わるのは通信を取り込む範囲であり、プロキシ経由にするかどうかはルールで決まります。

TUNとシステムプロキシの違い:入口が異なってもルールによる振り分けは行われる

システムプロキシは、127.0.0.1:10808のようなローカルのプロキシアドレスをアプリに提供します。アプリがこの設定を参照すると、プロキシの入口にリクエストを送ります。ブラウザーは通常システムプロキシを利用できますが、コマンドラインのプログラムでは環境変数や個別のプロキシオプションが必要な場合があります。そのため、「ブラウザーはつながるのにターミナルはつながらない」からといって、ノードの障害とは限りません。

TUNはレイヤー3の仮想ネットワークインターフェースです。条件に合うIPパケットはシステムルーティングによってこのインターフェースに送られ、TUNを管理するコンポーネントが接続を処理して出力先を選びます。アプリ側でHTTPやSOCKSプロキシを意識する必要はありません。v2rayNは設定・管理用のインターフェースであり、実際の受信、解析、転送は起動されたコアコンポーネントが行います。一般的なバージョンではsing-box関連のコンポーネントがTUNを処理しますが、詳細は使用中のバージョンのログで確認してください。TUNを有効にしても、Xrayがネイティブに仮想NICを作成するわけではありません。

アプリがリクエストを送信 システムルーティングで経路を選択 TUNインターフェースが捕捉 ルールに基づいて振り分け 出力先へ接続
確認項目システムプロキシTUNモード
通信を取り込む入口ローカルのHTTPまたはSOCKS待ち受けポート仮想NICとシステムルーティング
アプリ側の対応アプリがプロキシ設定を参照するか、手動設定が必要通常、アプリ側でプロキシ設定は不要
必要な権限通常は一般ユーザー権限で設定可能インターフェースやルーティングの変更には通常、昇格した権限が必要
UDP通信HTTPシステムプロキシだけでは対応できない取り込み可能。ただし出力先とサーバー側の対応も必要
すべての通信をプロキシ経由にするかアプリの設定とルーティングルールによる取り込み範囲とルーティングルールによる

判断のポイント:TUNが必要なアプリか確認する

プロキシが必要なのがブラウザーだけなら、まずはシステムプロキシを使いましょう。ターミナル、ゲーム、その他のアプリでプロキシを設定できない場合に、TUNを試してください。有効にした後も直接接続のルールは残し、「通信を取り込む」ことを「すべての接続をリモートノード経由にする」ことと混同しないようにしましょう。

有効化前の確認:ノード、権限、ローカルポート

まずv2rayNで、接続できることを確認済みのサーバーを選びます。サブスクリプションはサーバー設定を配布する方法、VMessやVLESSなどはノードで使うプロトコル、TUNはローカルの通信を取り込む入口です。それぞれ役割が異なります。もともと接続できないノードが、TUNに切り替えるだけで使えるようになることはありません。

  1. メイン画面のサーバー一覧から対象のサーバーを選び、右クリックメニューでアクティブサーバーに設定します。次にシステムプロキシを使い、普段安定してアクセスできるHTTPSページを開けることを確認します。
  2. 「設定」→「パラメーター設定」を開き、ローカルの待ち受けポートを記録します。ページ構成や項目名はバージョンによって異なるため、現在の画面に表示されている値を確認してください。以下の10808は例です。
  3. システムルーティングを変更しているほかのVPNや仮想NICツールを、いったん終了します。通常のネットワークアダプターはそのままにし、システムデバイスをまとめて無効化しないでください。
  4. 作業内容を保存し、タスクトレイで動作しているバックグラウンドプロセスも含め、v2rayNを終了します。プログラムを右クリックして「管理者として実行」を選び、システムのアクセス許可を求める画面で確認します。

ローカル接続情報

待ち受けアドレス
127.0.0.1
ポートの例
10808(実際の設定値を確認)
確認方法
まずシステムプロキシでHTTPS接続をテスト
LAN接続
ローカルのTUNでは有効化不要

TUNを有効にするために、待ち受けアドレスをすべてのネットワークインターフェースに変更しないでください。

TUN起動時の設定記録

実行権限
Windowsの管理者権限
初期ルーティング
現在使えている振り分け設定を維持
初期MTU
使用中のバージョンのデフォルト値を維持
ログで確認する項目
インターフェースの作成、ルートの追加、DNSエラー

まず再現可能な基準状態を作り、その後ネットワーク設定を一つずつ変更します。

管理者として起動してもコンポーネント不足のメッセージが表示される場合は、インストールパッケージが正しく展開されているか、コアファイルがセキュリティソフトによって隔離されていないか、ログに記載されたファイルパスが存在するかを確認してください。出所不明のダウンロードサイトから、名前の似たドライバーファイルを追加しないでください。再インストールが必要な場合は、当サイトのダウンロードページからOSに合ったパッケージを選んでください。

TUNを有効にする:通信を取り込む入口は一度に一つずつ変更

v2rayNは世代によって画面の構成が異なります。よくある設定場所は、メインウィンドウ下部の「TUNを有効にする」スイッチと、「設定」→「パラメーター設定」内のTUN設定です。使用中のバージョンでTUN設定が独立したメニューになっている場合は、同じ名前の項目を開いてください。別バージョンの画面を参考に、存在しない項目を変更しないようにしましょう。

  1. アクティブサーバーを確認します。テスト時に別の接続が使われないよう、メイン画面で選択されているサーバーとログの出力設定を確認してください。
  2. システムプロキシを解除します。システムプロキシのメニューから「システムプロキシを解除」を選び、ブラウザーに手動で設定したプロキシも一時的に無効にします。これにより、古いローカルプロキシではなくTUNをテストできます。
  3. TUNのデフォルト設定を維持します。初回はプロトコルスタック、MTU、ルーティングモード、DNSを同時に変更しないでください。デフォルト設定のほうが、使用中のバージョンの設定生成ロジックと整合しやすくなります。
  4. 「TUNを有効にする」をオンにします。コアの起動を待ち、仮想インターフェースの作成やルートの追加に関するログが出るか確認します。すぐに終了する場合は、スイッチを何度も切り替えず、最初のエラーから対処してください。
  5. 新しい接続を開始します。開いているウェブページのタブやターミナルの接続をいったん閉じ、改めてアクセスします。確立済みの長時間接続は、設定の切り替え後すぐに経路が変わるとは限りません。

リモートノードのアドレスまでTUNに戻して送らないようにしてください。管理プログラムは通常、インターフェースのバインドやバイパスルートでループを防ぎますが、複数のネットワークツールを同時に使うと、この仕組みが崩れることがあります。同じノードアドレスへの接続がログに繰り返し記録され、タイムアウトや異常な通信量を伴う場合は、まずTUNを無効にしてルーティングの競合を調べてください。

DNSの設定:名前解決の失敗と接続の失敗を切り分ける

DNSはドメイン名をIPアドレスに変換し、その後ルーティングによって接続経路が決まります。TUNで通信を取り込む場合、DNSリクエストにも利用可能な経路が必要です。リモートDNSへの接続にプロキシが必要で、そのプロキシノードのドメイン名も同じリモートDNSでしか解決できない場合、起動時に依存関係の循環が起きることがあります。

「設定」→「DNS設定」、または使用中のバージョンの「パラメーター設定」にあるDNS項目を開き、まず現在の値を記録してから、直接接続とリモート名前解決に関する設定を確認します。項目はコアやバージョンによって異なります。独立したコア向けのJSON設定を、GUIの任意の入力欄に貼り付けないでください。初回はそのバージョンで用意されているデフォルト設定を使いましょう。

# Windows PowerShell:ネットワークアダプターの状態とDNS設定を確認
Get-NetAdapter | Format-Table Name, InterfaceDescription, Status
Get-DnsClientServerAddress -AddressFamily IPv4

# システムの名前解決経路を確認。調査対象のドメイン名に置き換える
Resolve-DnsName example.com

# DNS設定の変更後にWindowsのDNSキャッシュをクリア
ipconfig /flushdns

Resolve-DnsNameはシステムの名前解決経路を確認するコマンドで、ブラウザー内蔵のリゾルバーの結果を示すものではありません。キャッシュを消去した後は、新しい接続を開始し、必要に応じてテスト対象のアプリを再起動してください。名前解決はできてもHTTPS接続がタイムアウトする場合は、DNSを何度も変更せず、ノード、ルーティング、ファイアウォールを調べましょう。

通信の取り込みを検証:インターフェース、ルーティング、アプリを照合

スイッチがオンになっただけでは十分ではありません。有効化前後のネットワークインターフェースとルーティングを比較し、プロキシを設定していないターミナルからリクエストを送信して、最後にv2rayNのログを確認します。仮想インターフェース名やインターフェース番号は、バージョンや環境によって異なります。特定の名前だけを探さないでください。

# Windows PowerShell:IPv4ルートとインターフェース番号を確認
Get-NetRoute -AddressFamily IPv4 |
  Sort-Object InterfaceIndex, DestinationPrefix |
  Format-Table DestinationPrefix, NextHop, InterfaceIndex, RouteMetric

# 現在のターミナルがプロキシ環境変数を引き継いでいるか確認
Get-ChildItem Env: | Where-Object Name -Match 'proxy'

# curlの明示的なプロキシを使わず、新しいHTTPS接続をテスト
curl.exe --noproxy "*" --connect-timeout 10 --max-time 20 -I https://example.com/

ここでの--noproxy "*"は、curlがアプリケーション層のプロキシ設定を使わないようにするオプションであり、OSのTUNルーティングを迂回するものではありません。テスト対象のドメインに直接接続するルールが適用されている場合、コマンドが成功しても、現在の経路が使えることを示すだけで、リモートノードを経由した証明にはなりません。プロキシ経由の通信をテストするときは、実際にアクセスが必要で、プロキシルールが適用される宛先を選び、接続ログで出力先を確認してください。

確認できた現象まず確認すること次の手順
新しいインターフェースがなく、起動ログに権限エラーがあるTUNの作成に失敗していますバックグラウンドプロセスを終了し、管理者として再起動する
インターフェースはあるが、対象の接続に関するログがないルーティングが通信を取り込んでいないか、ルールで対象が除外されているインターフェースのルート、除外ネットワーク、ほかのVPNを確認する
ドメイン名の解決に失敗するが、ノードには接続できるDNS設定または名前解決経路に問題があるリゾルバー、ドメインルール、ブラウザーのセキュアDNSを確認する
ウェブページは開くが、UDPを使うアプリが失敗するUDPの出力機能またはルールが合っていないノードとサーバー側のUDP対応を確認し、次にファイアウォールを調べる
小さなリクエストは通るが、大きなファイルの転送が止まるMTUまたは経路の互換性に問題がある可能性現在の値を記録し、MTUだけを小さくしてテストする

判断のポイント:ウェブページが開くかだけでなく、ログで出力先を確認する

テスト時は対象ドメイン、テスト時刻、ログに表示された出力先を記録します。接続できても直接接続ルールに一致した場合と、プロキシルールに一致した場合では結果が異なります。速度や安定性を検討する前に、実際の経路を確認してください。

MTUが原因と思われる場合は、元の値を記録したうえで、TUN設定のMTUだけを1400に変更して比較テストし、TUNを再起動します。この値はトラブルシューティングの目安であり、すべてのネットワークに最適とは限りません。改善しなければ元の値に戻してください。DNS、プロトコルスタック、ノードを同時に変更すると、どの変更が影響したのか判断できません。

よくある質問と無効化後のネットワーク復旧

TUNを有効にしてもスイッチがすぐオフに戻るのはなぜ?

まずログを開き、今回の起動で最初に表示されたエラーを探します。権限不足の場合は、v2rayNのプロセスをすべて終了して管理者として起動してください。コンポーネントが見つからない場合は、インストール先と隔離履歴を確認します。設定の解析に失敗した場合は、直前に変更したTUN設定を元に戻してください。エラーを確認せず、何度もスイッチを押すだけでは解決しません。

TUNを有効にした場合も、システムプロキシを有効にする必要がありますか?

初回の検証では、2種類の入口が混在しないようシステムプロキシを解除してください。TUNが正常に通信を取り込めていれば、一般的なアプリではローカルプロキシの設定は通常不要です。アプリ単位でプロキシを指定する必要がある場合は別途設定できますが、テスト時はどの入口を使っているかを区別してください。

ウェブページは開くのに、社内ネットワークやプリンターに接続できない場合は?

現在の振り分け設定で、LAN内の宛先が直接接続になっているか確認します。よく使われるプライベートIPv4ネットワークには、10.0.0.0/8、172.16.0.0/12、192.168.0.0/16があります。社内ドメインでは内部DNSが必要な場合もあります。実際のアドレスと社内ネットワークの要件を確認してからルールを追加し、社内ネットワーク全体を安易にリモート経由にしないでください。

IPv4は正常なのに、一部のサイトで読み込みが止まります。IPv6が原因ですか?

同じ宛先に対してcurl.exe -4 -I https://example.com/とcurl.exe -6 -I https://example.com/を実行して比較し、IPv6のルーティングとDNSの応答も確認します。IPv6経路に問題がある場合は、TUNの取り込み範囲、名前解決の設定、実際のネットワークの対応状況を一致させてください。一度読み込みが止まっただけで、システムのIPv6を恒久的に無効化しないようにしましょう。

v2rayNを終了した後もインターネットに接続できません。どうすれば復旧できますか?

v2rayNを再度起動し、まず「TUNを有効にする」をオフにしてから、システムプロキシを解除し、通常の手順で終了します。Windowsの「設定」→「ネットワークとインターネット」→「プロキシ」を開き、手動プロキシのアドレスが残っていないか確認してください。それでも復旧しない場合は、現在のネットワークに再接続するか、システムを再起動します。すべてのネットワークアダプターやデフォルトルートを削除しないでください。

通常の終了時は「TUNをオフにしてからプログラムを終了」の順に操作すると、管理プログラムが一時インターフェースやルートを削除しやすくなります。スリープからの復帰、Wi-Fiの切り替え、社内VPNへの接続後にだけ問題が起きる場合は、発生条件を記録してからTUNを再起動し、再テストしてください。ネットワークの切り替えで物理的な出口が変わると、古いインターフェースのバインドや接続を再確立する必要があります。

クライアントとプラットフォームの選択

お使いのOSに合ったv2rayNのインストールパッケージを選びます。インストール後、ノードとシステムプロキシが使えることを確認してから、この記事の手順でTUNを有効にしてください。初めてのサブスクリプションのインポートやサーバーの選択については、使い方ガイドを参照できます。

v2rayNをダウンロードOSに合ったクライアントを選択