本文へスキップ

v2rayNのTUNモードとは?全通信を取り込む仕組みと有効化手順

システムプロキシとTUN仮想NICの違いを解説。TUNが必要なアプリ、管理者権限での起動方法、有効化手順、よくある競合の対処法を紹介します。

この記事のポイント

ブラウザーではプロキシを使えるのに、ターミナルやゲームが接続できない場合は、まずアプリがシステムプロキシを参照するか確認し、必要に応じてTUNを有効にします。この記事ではWindows版v2rayN 7.xの一般的な画面を参考に、ノードの確認、管理者としての起動、仮想NICの有効化、DNSとルーティングの確認を順に解説します。メニューはバージョンによって異なるため、実際の表示に合わせてください。読み終えると「通信を取り込む」ことと「プロキシ経由で通信する」ことの違いが分かり、接続できなくなった場合も順を追って復旧できます。

TUNが取り込むのは通信の入口

システムプロキシは、OSにローカルプロキシのアドレスを登録する仕組みです。この設定を参照するアプリは、リクエストをv2rayNのローカル待ち受けポートに送ります。一方、設定を無視するアプリは、接続先サーバーへ直接接続することがあります。そのため、システムプロキシを有効にしても、PC上のすべてのアプリがプロキシ経由になるわけではありません。

TUNはネットワーク層で動作する仮想インターフェースです。有効にすると、連携するルーティング設定に応じて条件に合うIPパケットが仮想NICに送られ、対応するコアで処理されます。アプリごとにHTTPやSOCKSプロキシを設定する必要がないため、個別のプロキシ設定ができない通信アプリの取り込みに適しています。

アプリがデータを送信 システムがルートを選択 TUN仮想NICが受信 ルールに従って経路を判定 直接接続またはプロキシ経由

最後の処理がポイントです。TUNを有効にしても「すべての通信が海外ノード経由になる」わけではありません。TUNはデータをコアに渡す方法を決め、ルーティングルールが送信先を決めます。「中国本土を迂回」などの分岐設定を有効にすると、中国本土の宛先には直接接続できます。プロキシルールに一致した通信は選択中のノードへ送られ、ブロックルールに一致した接続は拒否されます。

TUNが必要なアプリとは

まずアプリ独自のプロキシ設定があるか、次にシステムプロキシに従うかを確認します。ブラウザーは通常、まずシステムプロキシを試すのが適しています。コマンドラインツール、ゲーム、一部のデスクトップアプリは動作が異なります。同じアプリでも、ログイン画面とバックグラウンドのダウンロード機能でネットワークの仕組みが異なる場合があります。

まずはシステムプロキシ

対象
システムプロキシを参照するブラウザーやアプリ
接続方法
ローカルHTTPまたはSOCKSの待ち受け
必要な権限
通常は権限の昇格不要
最初に確認すること
アプリのプロキシ設定と待ち受けポートを確認

Web閲覧だけが目的なら、まずはシンプルな接続方法を使いましょう。

必要ならTUNを検討

対象
システムプロキシを無視し、個別にプロキシを設定できないアプリ
接続方法
仮想NICとシステムルート
必要な権限
Windowsでは通常、管理者権限が必要
最初に確認すること
コア、仮想NIC、ルート、DNSを確認

UDP通信を取り込む場合は、ノードとサーバーが転送に対応しているかも確認してください。

ターミナル用ツールでも、必ずしもTUNが必要とは限りません。HTTP_PROXY、HTTPS_PROXYや独自のプロキシ引数に対応していれば、設定してローカルプロキシに接続できます。TUNが便利なのは、アプリがプロキシに対応していない場合、起動環境を変更できない場合、または複数のアプリをまとめて通信を取り込みたい場合です。

要点:まず接続経路を確認し、取り込む範囲を広げる

Webページは表示できるのに特定のアプリだけ失敗する場合は、まずそのアプリのプロキシ設定を確認します。ローカルプロキシを使えないと分かってからTUNを有効にすれば、単一アプリの問題をPC全体のルーティング調査に広げずに済みます。

TUNを有効にする前にノードと権限を確認

サブスクリプションの更新、ノードの変更、ルーティングの切り替え、TUNの有効化を一度に行わないでください。まずシステムプロキシで正常に接続できる状態を作ります。その後に問題が起きた場合、どの操作で通信経路が変わったか特定しやすくなります。

  1. クライアントのバージョンを確認します。v2rayNの「ヘルプ」関連メニューからバージョン情報を確認してください。この記事では一般的な7.xのメニューを説明します。表示名が異なる場合は、「設定」「パラメーター設定」やメイン画面のTUNスイッチを探してください。古いバージョンの設定画面をそのまま参考にするのは避けましょう。
  2. サブスクリプションのノードを確認します。サブスクリプションを更新し、ノードを選択してアクティブサーバーに設定します。システムプロキシを有効にし、プロキシが必要なWebサイトを実際に開いてください。遅延テストの成功で分かるのは一部の接続性だけです。Webページや対象アプリでの確認に代わるものではありません。
  3. 現在の設定を記録します。アクティブノード、ルーティングモード、ローカル待ち受けポート、DNS設定を控えてください。画面のスクリーンショットを保存しても構いませんが、サブスクリプションURL、ノードの認証情報などの機密情報は事前に隠してください。
  4. ほかのトンネルを終了します。ほかのVPN、透過プロキシ、ネットワーク高速化ツールを一時的に停止します。企業の管理端末では、まずネットワーク管理ルールに従ってください。管理対象のセキュリティサービスを無断で停止しないでください。
  5. 管理者権限で起動します。タスクトレイからv2rayNを完全に終了し、プログラムを右クリックして「管理者として実行」を選び、Windowsの権限確認に応答します。通常権限でメイン画面を開けても、仮想NICの作成やルートの変更が許可されているとは限りません。

手順に沿ってTUNモードを有効にする

管理者として起動したら、先ほど確認したノードとルーティング設定をそのまま使います。ここでは一度に変更する項目を一つに絞ることが大切です。手順の途中で失敗したら、ログを確認するまで次へ進まず、スイッチを続けて操作しないでください。

  1. TUNの設定を確認します。「設定」→「パラメーター設定」を開き、TUN関連の設定項目を探します。バージョンによってはTUN専用の設定画面があります。初回はそのバージョンのデフォルトのスタック、MTU、自動ルーティング関連の設定を使い、ほかの端末の数値をそのまま流用しないでください。
  2. テストの基準としてシステムプロキシを解除します。メイン画面またはタスクトレイの「システムプロキシ」メニューから「システムプロキシを解除」を選びます。TUN単独で動作を確認するための手順です。ブラウザーが引き続きシステムプロキシ経由で接続し、誤判定するのを防ぎます。
  3. TUNを有効にします。メイン画面で「TUNを有効にする」などのスイッチをオンにし、コアの起動が完了するまで待ちます。文言や場所はバージョンによって異なります。仮想インターフェースやルートの初期化成功などがログに表示されているか確認してください。
  4. システムのインターフェースを確認します。Windowsのネットワークアダプター一覧で、新たに追加または有効になった仮想インターフェースを確認します。名前はバージョンや設定によって異なるため、特定の名前に固定されている必要はありません。インターフェースが表示されても、DNSや外向き通信が正常とは限りません。
  5. 2種類のアプリでテストします。まずWebページを開き、次にシステムプロキシを無視していたアプリをテストします。TUNが実際に通信を取り込んでいるか判断できるよう、システムプロキシは解除したままにしてください。

画面にTUNスイッチが見つからない場合は、クライアントのバージョン、プラットフォーム、コアのコンポーネントがそろっているか確認してください。古い解説を見ただけで、出所不明のドライバーファイルを手動で追加しないでください。インストールするバージョンを変更する場合は、クライアントのダウンロードページからOSとプロセッサーに合ったビルドを選んでください。

ポート、ログ、ルートで動作を確認

以下の3つのポート番号は接続関係を理解するための例であり、設定を一律に変更するためのものではありません。10808はローカルプロキシの待ち受けポートでよく使われる例です。実際の番号は「設定」→「パラメーター設定」に表示される値を確認してください。53と443は、それぞれ一般的なDNSとHTTPSの通信で使われます。

10808
ローカルプロキシのポート例。実際の設定を確認
53
従来型DNSでよく使われるUDP/TCPポート
443
HTTPSでよく使われるTCPポート。HTTP/3ではUDPを使用

PowerShellで以下の読み取り専用コマンドを実行し、インターフェース、IPv4ルート、ローカルの待ち受けを確認します。最後のコマンドは、実際の待ち受けポートが10808の場合のみ使用できます。ポートが異なる場合は、設定に表示された番号に置き換えてください。待ち受けポートが存在することから分かるのはローカルサービスが動作中であることだけで、TUNが通信を取り込んでいる証明にはなりません。

Get-NetAdapter | Select-Object Name, InterfaceDescription, Status
Get-NetRoute -AddressFamily IPv4 | Sort-Object RouteMetric
Get-NetTCPConnection -State Listen -LocalPort 10808

DNSとルーティングをあわせて確認

TUNを有効にした後に「Webページの読み込みが終わらない」場合でも、ノードが使えないとは限りません。アプリは通常、まずドメイン名を解決してから接続します。DNS問い合わせが到達できないサーバーへ送られると、プロキシ接続が始まる前に失敗します。逆に、名前解決が正常でも、選択中のプロキシの送信先が使えるとは限りません。

まずは現在のクライアントバージョンに対応したDNS設定を維持してください。変更が必要な場合は、「設定」からDNSの項目を探し、直接接続するドメインとプロキシ経由のドメインで名前解決に使う経路も考慮します。リモートDNSアドレスを適当に入力して終わりにしないでください。そのDNSへの接続がどの経路から送信されるか、起動時にプロキシサーバーのドメイン名を先に解決できるかも確認が必要です。

要点:まず失敗した段階を特定してから設定を変更

ログにドメイン名の名前解決タイムアウトが出ている場合は、まずDNSの経路を確認します。宛先への接続後にハンドシェイクが失敗している場合は、ノード、プロトコル、出力先を確認してください。DNS、MTU、TUNスタック、ノードを同時に変更すると、どの変更が有効だったのか分からなくなります。

よくある競合と復旧方法

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

まずタスクトレイからプログラムを完全に終了し、管理者として起動してからTUNを再度有効にします。それでも失敗する場合は、インターフェースの作成とルートの追加のどちらで失敗したか、ログを確認してください。管理対象の端末では管理者に相談し、制限を回避するためにシステムのセキュリティ機能を無効にしないでください。

スイッチはオンなのに、アプリが直接接続するのはなぜ?

まずコアの起動に失敗していないか確認し、既存の接続が再利用されないよう対象アプリを再起動します。ログに表示された直接接続ルール、IPv6の経路、アプリ独自のトンネルの有無も確認してください。TUNスイッチがオンでも、有効化が要求されたことを示すだけで、接続が正常である証明にはなりません。

Webページは開くのに、ゲームや音声通話がタイムアウトする場合は?

サブスクリプションのノードとサーバーがUDPに対応しているか確認し、対象アプリの通信が正しい出力先のルールに一致しているかを確認してください。TUNはデータを受け取れますが、サーバーにないUDP機能を補うものではありません。また、ゲームの遅延が改善することを保証するものでもありません。

有効化後に社内ネットワーク、仮想マシン、LANへの接続に問題が出た場合は?

まずTUNを無効にして元のネットワークが復旧するか確認し、ほかのトンネルと重複する宛先ネットワーク、ルートの優先順位、DNSを調べます。併用が必要な場合は、直接接続または除外のルールを一つずつ明示的に追加してください。複数の通信取り込み機能がデフォルト経路を同時に奪い合わないようにします。

クライアントを終了した後もネットワークにつながらない場合は?

v2rayNを再び開き、まずTUNを無効にします。次にシステムプロキシを解除して、通常の手順で終了してください。Windowsのプロキシ設定画面で手動プロキシが有効なままになっていないか確認します。インターフェースやルートが復旧しない場合は、ネットワークに再接続し、必要に応じてPCを再起動してから、ログを見て残っている設定を特定してください。

ネットワークが復旧したら、トラブルシューティングの結果を最小限の構成にまとめます。確認済みのノードを一つ、ルーティング設定を一つ、クライアントのデフォルトのTUN設定を使ってください。Webページ、対象アプリ、LANが正常に動作することを確認してから、カスタムDNSやほかのトンネルを一つずつ戻します。サブスクリプションの追加方法やルーティングの基本を確認する場合は設定チュートリアルをご覧ください。システムプロキシの設定方法は利用ガイドで説明しています。

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