V2Rayの通信が遅いときの原因と対処法|ノード・回線・端末設定を順番に確認

V2Rayの通信速度が遅い原因を、ノード・回線・クライアント設定の3段階で切り分けます。各段階の確認項目と対処法を紹介します。

この記事の概要

接続はできるものの、Webページの表示開始が遅い、ダウンロード速度が出ない、通信が途中で切れるといった場合に役立ちます。テスト先とプロキシ経路を固定してから、ノード・接続ネットワーク・ローカル設定を比較しましょう。テストの繰り返し、接続ログ、条件を一つずつ変えた比較を通じて、ノード・ネットワークの変更が必要か、DNS・ルーティング・バックグラウンド制限の見直しが必要かを判断できます。

表示開始の遅さ・転送速度の低さ・接続切れを切り分ける

「遅延は小さいのにダウンロードが遅い」という状況は矛盾ではありません。ノード一覧の遅延テストは、TCP接続の確立だけを確認する場合も、指定URLへのアクセスを測る場合もあり、テスト機能によって異なります。継続的なダウンロード速度や、あらゆるWebサイトへの接続品質を示すものではありません。まず症状を具体的に整理し、原因をすべてノードのせいにしないようにしましょう。

アプリからのリクエストローカルの受け入れルートの選択ノードへの接続接続先からの応答

リクエストは上記の各段階を経由します。ブラウザーが長時間読み込み中になってから表示を始める場合は、名前解決・接続確立・ハンドシェイクを確認します。ダウンロード開始後も速度が低い場合は、帯域幅・混雑・パケットロスを確認しましょう。画面を消した後に切断される場合は、まずモバイル端末のバックグラウンド動作条件を確認します。ノード、DNS、プロキシモードを同時に変更すると、改善してもどの変更が効いたのか分からなくなります。

症状優先して確認する項目比較方法
初回の表示は遅いが、再読み込みは速いDNS、初回接続、TLSハンドシェイク初回と2回目以降の所要時間を記録し、名前解決とハンドシェイクのログを確認する
大容量ファイルのダウンロードが遅いノードの出口、回線の実効速度、接続先の速度制限ノードを固定して接続先を変える、接続先を固定してノードを変える
夜は遅いが、昼は問題ない共有出口の混雑、または通信事業者のピーク時混雑設定を変えずに時間帯を変えて繰り返し測定する
特定のアプリだけ遅いアプリごとの振り分け設定、アプリ独自のプロキシ、接続先サービスそのアプリの接続が実際にどのアウトバウンドへ振り分けられたか確認する
画面を消すと接続が切れる省電力設定、プロセスの維持、ネットワークの切り替わり画面点灯中と消灯中の状態をそれぞれ確認する

基準を作る:接続先とテスト条件を固定する

システム更新、クラウドストレージの同期など、大容量通信を行うタスクをいったん停止します。デスクトップではできるだけ有線接続を使い、モバイル端末は同じ場所でテストしてください。安定して表示できるWebページで初回表示を確認し、速度測定が許可されている同じダウンロード用リソースで継続速度を測ります。以下は推奨するテスト方法であり、本サイトの実測値やクライアントの初期設定値ではありません。

3回
各条件で繰り返し、中央値を記録
30秒
1回あたりの転送速度の測定時間
1項目
1回につき変更する条件は1つ
  1. 設定を記録する

    v2rayNの「ヘルプ」→「バージョン情報」でクライアントのバージョンを記録します。使用中のコア名とバージョン、ノード名、ルーティングモード、TUNの有効・無効も記録してください。メニューの場所は画面のバージョンによって異なる場合があるため、実際の画面で確認します。

  2. 受け入れポートを確認する

    「設定」→「パラメータ設定」を開き、ローカルのSOCKSまたは混合プロキシの待ち受けポートを確認します。以下のコマンド例では 10808 を使用しています。現在のポートでSOCKS接続を受け付けている場合に限り、そのまま使ってください。そうでない場合は実際のポートに置き換えます。

  3. 経路を固定する

    メイン画面下部で「システムプロキシ」と「ルーティング」の選択状態を確認します。ブラウザーでテストする場合はシステムプロキシが有効か確認してください。コマンドラインのテストでは、アプリがシステムプロキシを参照するかどうかに左右されないよう、プロキシを明示します。

  4. 記録を残す

    各テストの時刻、接続ネットワーク、ノード、接続先、最初のデータを受信するまでの時間、平均速度を記録します。まずノードA、次にノードB、最後にノードAを再テストすると、接続先の一時的な変動による誤判定を減らせます。

単位の換算に注意してください。理論上、8 Mbps は約 1 MB/s です。実効速度はプロトコルのオーバーヘッド分だけ低くなります。通信事業者が表示するMbpsと、ダウンロード画面のMB/sをそのまま比較しないでください。また、容量の小さなWebページだけで回線の最大帯域幅を判断するのも避けましょう。

第1段階:ノードの出口と接続先との相性を確認する

ノードに接続できても、認証と通信経路が基本的に機能していることしか分かりません。共有出口の混雑、サーバー側のリソース不足、ノードから接続先までの相互接続品質によって、実際の通信が遅くなることがあります。まず出口や回線の異なるノードを比較しましょう。同じサービス提供元のノードでも、名前が異なるだけで出口を共有している場合があります。名前だけで独立したテストだと判断しないでください。

v2rayNはデスクトップクライアントで、実際の接続処理は選択したコアが担当します。v2rayNGはXrayコア、v2flyNGはV2Flyコアを使用します。互換性を調べる際は、現在のコアが設定項目に対応しているか確認してください。同じサーバー設定が両方のコアに確実に対応している場合に限り、コアを切り替えた比較に意味があります。コアの切り替えを万能な速度改善策と考えないでください。

第2段階:ローカルの接続環境と通信回線を切り分ける

同じノードでも自宅の固定回線では遅く、モバイルのテザリングでは速い場合、接続ネットワークからノードまでの区間に問題がある可能性があります。ただし、すぐに通信事業者が原因だとは断定できません。テザリングと自宅のネットワークでは、Wi-Fi環境、出口、通信経路も同時に変わります。まず有線LANでWi-Fiの影響を除き、その後、同じ端末で接続ネットワークを切り替えると、原因をより明確にできます。

変更する条件確認された結果次に行うこと
Wi-Fiから有線LANに変更速度が改善し、変動も減ったWi-Fiのチャンネル、電波強度、ルーターの負荷を確認する
自宅の固定回線からテザリングに変更同じノードで明らかに改善した時間帯を変えて比較し、通信経路の違いをネットワークまたはノードの提供元に伝える
夜間から混雑していない時間帯に変更複数の接続先で同時に改善したピーク時の混雑を優先して調べ、別の回線でも比較する
接続先のリソースを変更特定の接続先だけ継続して遅い接続先の制限、出口の地域、相互接続状況を確認する

パケットロスがあるとTCPの再送が発生し、転送速度が低下します。遅延の揺れも操作感に影響します。ただし、pingが通らなくても、プロキシのポートに接続できないとは限りません。途中の機器がICMPを制限している場合があります。経路トレースで特定のホップから応答がなくても、そのホップが実際の通信を破棄しているとは断定できません。最終接続先への到達性、アプリの動作、繰り返しのテスト結果を合わせて判断してください。

第3段階:DNS・ルーティング・ローカルリソースを確認する

システムプロキシは、対応アプリからローカルクライアントへ通信を渡す設定です。ルーティングルールは、通信が取り込まれた後にどのアウトバウンドを使うかを選びます。両者は別の層です。ルーティングをグローバルにしても、システムプロキシを無視するアプリを強制的に接続させることはできません。テストでは「どのインバウンドに入ったか」と「どのアウトバウンドが選ばれたか」の両方を確認してください。

以下のWindowsコマンドは、接続と最初のデータ受信までの時間を比較するためのもので、最大ダウンロード速度の測定には使いません。例では本サイトのトップページにSOCKSプロキシ経由でアクセスし、接続先のドメイン名をプロキシ側で解決します。ブラウザーのローカルDNS経路は検証できません。127.0.0.1:10808でSOCKS接続を受け付けていることを確認してください。

curl.exe --proxy socks5h://127.0.0.1:10808 --connect-timeout 10 --max-time 30 --output NUL --silent --show-error --write-out "connect=%{time_connect}s tls=%{time_appconnect}s first_byte=%{time_starttransfer}s total=%{time_total}s\n" https://v2rayhost.com/

macOSまたはLinuxでcurlを使う場合は、NULを/dev/nullに置き換えてください。各時間はリクエスト開始からの累積値なので、単純に足し合わせることはできません。time_connectが主に示すのはローカルプロキシへの接続時間であり、ノードの遅延ではありません。同じコマンド、同じ接続先で複数回テストし、結果を比較してください。決まった「合格秒数」を当てはめる必要はありません。

ログから接続失敗と待ち時間の原因を探る

速度低下にはリトライが絡むことがよくあります。最初のリクエストが数回失敗してから成功すると、ユーザーには「読み込みが遅い」と見えます。ログの表記はコアやOSによって異なりますが、以下に代表的なメッセージを挙げます。エラーがローカルのインバウンド、ノードのアドレス、最終接続先のどれに対応するかを確認してから、修正箇所を判断してください。

エラー:connection refused

原因:接続先のポートに拒否されています。接続先がローカルアドレスの場合、コアが起動していない、またはポートの指定が誤っている可能性があります。対処:エラーに表示されたアドレスとポートを確認し、まずローカルで待ち受けているか調べます。ノードを指している場合は、サーバーポートとサービスの稼働状態を確認してください。

エラー:i/o timeout

原因:ネットワークの読み込みまたは書き込みがタイムアウトしています。このメッセージだけでは、回線の停滞、サーバーの無応答、名前解決の待ち時間のどれかを特定できません。対処:前後のログと発生時刻を保存し、ノードまたはネットワークを一つずつ変更してテストします。どの段階でタイムアウトしたかを確認してください。

エラー:TLS handshake timeout

原因:制限時間内にTLSハンドシェイクが完了しませんでした。通信経路の品質、サーバーからの応答、接続先に関係している可能性があります。対処:まずどの区間のTLS接続で発生したかを特定し、サーバーポートとserverNameを確認します。証明書の検証を無効にして、原因調査の代わりにしないでください。

ログを共有する前に、サブスクリプションURL、ユーザー識別情報、認証情報などの機密パラメーターを削除してください。問い合わせには、発生時刻、クライアントとコアのバージョン、ネットワークの種類、エラー周辺のログ、比較テストの結果を添えると、速度低下のスクリーンショットだけを送るより原因を特定しやすくなります。

よくある質問と確認のまとめ

遅延が数十ミリ秒しかないのに、動画が止まるのはなぜですか?

遅延テストでは、動画の分割データを継続して受信できる速度までは分かりません。まず画質を固定し、再生バッファが減り続けていないか確認します。次に同じノードで別の接続先を試し、同じ接続先でノードを切り替えて、ノードの出口と動画配信サービスまでの経路を切り分けてください。

グローバルモードに変えたら速くなりました。ルール設定に問題がありますか?

まず接続先に適用されたルールとアウトバウンドを確認します。グローバルモードにしたことで、これまで直接接続していた接続先がプロキシ経由になった可能性があります。関連する名前解決の経路が変わった場合もあります。誤って適用されたルールを見つけて個別に修正するほうが、すべての通信経路を長期的に変えるより管理しやすくなります。

v2rayNGが画面消灯後に遅くなり、画面を点けると戻ります。どうすればよいですか?

Androidの「設定」→「アプリ」→「v2rayNG」→「バッテリー」を開き、端末で選べる項目に従ってバックグラウンド動作を許可します。バックグラウンドデータの権限も確認してください。次にv2rayNGの「設定」→「アプリごとのプロキシ」で、対象アプリのリストモードを確認します。バッテリー設定の名称は端末によって異なる場合があります。

サブスクリプションを更新すると、速度は自動的に改善しますか?

提供元がノードのアドレスやポート、利用可能な設定を変更した場合に限り、更新によって直接改善する可能性があります。更新前に現在利用できるノードの情報を保存してください。同じネットワークで複数のノードが遅い場合は、接続ネットワークとローカルの通信経路を引き続き確認し、原因調査の代わりにサブスクリプションの更新を繰り返さないでください。

原因の確認が終わったら、一時的な変更を元に戻します。不要なグローバルルーティングを解除し、ログレベルを戻し、テスト用ルールを削除して、安定して使える設定を保存してください。用語を確認したい場合は使い方ガイドのプロキシ、ルーティング、DNSの説明を参照してください。設定について詳しく知りたい場合はよくある質問をご覧ください。

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