v2rayNがコアを起動すると、ローカルアドレス上にSOCKS、HTTP、または混合プロキシの待受ポートを作成します。指定されたポートを別のプロセスが使用していると、XrayまたはV2Rayコアは待受を開始できません。この場合、ノード自体は正常でも、ローカルの入口が起動しないためシステムプロキシで通信を転送できないことがあります。

この記事の概要

10808、10809のポート競合、またはコア起動直後の終了に悩むWindowsユーザー向けの内容です。まずログで競合ポートを確認し、netstatで該当するPIDを特定します。そのうえで使用中のプログラムを終了するか、v2rayNを10818/10819へ変更するか判断し、最後にシステムプロキシ、ブラウザー、その他の手動プロキシツールを更新します。

まずローカル待受ポートの競合か確認する

「ウェブページが開けない」からといって、必ずしもポートが使用中とは限りません。ノードのタイムアウト、購読の期限切れ、システムプロキシの無効化、DNS名前解決の異常でも似た症状が起こります。ポート競合を示す重要な証拠はv2rayNのログ欄にあります。通常はローカルアドレス、ポート番号、bindまたはlistenの失敗メッセージが同時に表示されます。

10808
よく使われるSOCKSローカルポート
10809
よく使われるHTTPローカルポート
127.0.0.1
ローカルからのみアクセスする待受アドレス
1つのPID
同じ待受ポートを使用しているプロセス

v2rayN 7.11.3の一般的な設定では、SOCKSのローカル入口に10808、HTTPの入口に10809を使用します。ただし、旧設定の移行、ユーザーによる変更、コア設定の違いによって実際のポートは異なる場合があります。現在のログと「設定」→「パラメーター設定」に表示される値を基準にし、デフォルトポートだけで判断しないでください。

エラー: listen tcp 127.0.0.1:10808: bind: Only one usage of each socket address is normally permitted

原因と対処:10808は別のプロセスが待受中です。ポートに対応するPIDを確認し、重複しているクライアントを終了するか、v2rayNのローカル待受ポートを未使用の値に変更します。

エラー: failed to listen TCP on 127.0.0.1:10809

原因と対処:HTTPインバウンドを10809にバインドできませんでした。同じポートを使用するサービスを確認し、メインポートを変更した後に関連ポートも連動して変わるか確認してください。

エラー: bind: An attempt was made to access a socket in a way forbidden by its access permissions

原因と対処:ポートがシステムの予約範囲に含まれているか、セキュリティポリシーによってブロックされている可能性があります。10818、10819など、未使用で除外範囲にも含まれないポートへ変更してからコアを再起動します。

結論:まずログのアドレスとポートを確認する

エラー対象が127.0.0.1:10808または127.0.0.1:10809であれば、確認すべき場所はローカルの待受層です。この場合、VMessやVLESSのノードを何度も変更しても解決しないことが多いです。

netstatでポートを使用しているプロセスを特定する

競合ポートを確認したら、通常の権限で「コマンドプロンプト」を開きます。次のコマンドではコロンを省略しないでください。リモート接続の記録をローカルの待受記録と誤認する可能性を減らせます。

netstat -ano | findstr :10808

代表的な出力例です。最後の列にある18420はプロセスのPIDで、LISTENINGはそのプロセスがローカルの10808で待受中であることを示します。LISTENINGを含む記録だけが、ポートに待受プロセスがあることを直接示します。ESTABLISHEDは接続確立済み、TIME_WAITは接続終了後の一時的な状態であり、この2つの状態だけでポート競合とは判断できません。

TCP    127.0.0.1:10808    0.0.0.0:0    LISTENING    18420

PIDを取得したら、続けてプロセス名を確認します。

tasklist /FI "PID eq 18420"
  1. 結果が別のv2rayN.exeであれば、まず通知領域で2つ目のインスタンスが動作していないか確認し、重複しているインスタンスを通常の手順で終了します。
  2. ブラウザー、開発用プロキシ、その他のローカルネットワークツールに該当する場合は、そのプログラムが引き続き10808を使用する必要があるか確認します。
  3. tasklistでプロセスが見つからない場合は、プロセスが直前に終了した可能性があります。netstatをもう一度実行し、PIDが変わっていないか確認してください。
  4. 出力にIPv4の127.0.0.1とIPv6の::1が同時に含まれる場合は、2つの待受情報をそれぞれ記録し、バインド範囲を見落とさないようにします。

PowerShellで待受プログラムを確認する

PowerShellではローカルポートを直接絞り込み、OwningProcessをGet-Processに渡せます。ポートが待受中でない場合、コマンドはオブジェクトが見つからないと表示します。これは通常、使用状態が解消されたことを意味します。

Get-NetTCPConnection -LocalPort 10808 -State Listen
Get-Process -Id (Get-NetTCPConnection -LocalPort 10808 -State Listen).OwningProcess

見慣れないプロセス名を見ただけで、すぐに強制終了しないでください。システムサービス、開発環境、LANのデバッグプログラムも、正当な理由でローカルポートを使用している場合があります。まずプログラムの用途を確認し、その後で使用中のプログラムを終了するか、v2rayNを新しいポートへ変更するか判断するのが安全です。

v2rayNでローカル待受ポートを変更する

使用中のプログラムを引き続き動かす必要がある場合は、v2rayNのポートを変更するのが手早い方法です。v2rayNを開き、「設定」→「パラメーター設定」に進み、「ローカル待受ポート」またはコアの基本設定に該当する項目を探します。画面上の名称は7.xの小バージョンによって多少異なりますが、ポート欄には現在の値が表示されます。

  1. 必要に応じて元に戻せるよう、元の値を控えます。例として、SOCKSは10808、HTTPは10809です。
  2. メインの待受ポートを10818に変更します。画面にHTTPポートが別途ある場合は、10819に変更します。
  3. 明確にLAN内の機器へプロキシ入口を提供する必要がない限り、待受アドレスは127.0.0.1のままにします。
  4. パラメーターを保存し、現在のコアを停止してからコアを再起動するか、v2rayNを再起動します。
  5. ログ欄に戻り、127.0.0.1:10818の待受成功記録が表示され、新たなbindエラーがないことを確認します。
用途 元の設定例 新しい設定例 更新が必要な場所
SOCKSプロキシ 127.0.0.1:10808 127.0.0.1:10818 ブラウザーの手動プロキシ、コマンドラインツール
HTTPプロキシ 127.0.0.1:10809 127.0.0.1:10819 システムプロキシ、ブラウザー拡張機能、開発ツール
LAN向け待受 0.0.0.0:10808 実際の運用方針に合わせて設定 ファイアウォール規則と機器側のプロキシアドレス

変更後、もう一度ポートを確認します。10818のLISTENING PIDが現在のコアプロセスに対応し、旧ポート10808をそのコアが使用していなければ正常です。

netstat -ano | findstr :10818
netstat -ano | findstr :10808

結論:新しいポートは一連の動作確認を完了させる

パラメーターを保存しただけでは、設定が反映されたとは限りません。ログで待受成功を確認し、netstatで新しいポートを確認し、実際のリクエストがプロキシ経由で通って初めて変更完了です。

システムプロキシとブラウザーのプロキシを更新する

ポート変更後によくあるのが、「コアは正常に起動したのにウェブページが開けない」という問題です。多くの場合、ノードの障害ではなく、システムまたはブラウザーが引き続き10808/10809へリクエストを送っていることが原因です。旧ポートに待受プロセスがなければ、リクエストはすぐに失敗します。

  • v2rayNでシステムプロキシを自動設定する場合:いったんシステムプロキシを解除し、「システムプロキシを自動構成」または現在使用しているシステムプロキシモードを選び直して、新しいHTTPポートをクライアントに書き込ませます。
  • ブラウザーがシステムプロキシを使用する場合:ブラウザーを終了して再起動し、システムプロキシサーバーが127.0.0.1:10809から127.0.0.1:10819へ更新されていることを確認します。
  • ブラウザーでSOCKSを手動設定している場合:サーバーは127.0.0.1のままにし、ポートを10808から10818へ変更します。DNSは従来の方針に従って設定してください。
  • 端末で環境変数を使用している場合:HTTP_PROXY、HTTPS_PROXY、またはALL_PROXYのポートを更新し、コマンドラインが古い入口へ接続しないようにします。
  • 開発ツールで個別にプロキシを設定している場合:ツール独自のネットワーク設定を確認します。Windowsのシステムプロキシを読み取らず、個別に変更が必要なプログラムもあります。
set HTTP_PROXY=http://127.0.0.1:10819
set HTTPS_PROXY=http://127.0.0.1:10819
set ALL_PROXY=socks5://127.0.0.1:10818

上記のsetコマンドは、現在のコマンドプロンプトウィンドウにだけ作用し、ウィンドウを閉じると保持されません。一時的な確認に適しています。確認時はまずnetstatでポートがLISTENINGになっていることを確認し、その後プロキシが必要なネットワークリクエストを実行します。接続ログに新しいインバウンド記録が表示されれば、リクエストがv2rayNに到達しています。

症状:コアは正常に起動するが、ブラウザーにプロキシサーバーが接続を拒否したと表示される

原因と対処:ブラウザーが古いポートを指定しています。手動プロキシを127.0.0.1:10818または127.0.0.1:10819に変更し、ブラウザーを再起動します。

症状:ブラウザーは使えるが、端末のダウンロードコマンドがタイムアウトする

原因と対処:端末に古いプロキシ環境変数が残っています。HTTP_PROXY、HTTPS_PROXY、ALL_PROXYを確認し、ポートを統一して置き換えます。

ポートを変更してもエラーが出る場合の確認事項

10818でも待受できない場合は、ポートを無作為に大量試行しないでください。まず、新しいポートがプロセスに使用されているのか、Windowsの除外範囲に含まれるのか、v2rayNが重複したコアを起動しているのかを確認します。原因によって対処方法が異なります。

システムの除外ポート範囲を確認する

Windowsのネットワークコンポーネントが、TCPポートの一部を予約している場合があります。netstatに待受プロセスが表示されなくても、除外範囲内のポートでは権限関連のbindエラーが返ることがあります。管理者権限でコマンドプロンプトを実行し、次のコマンドを入力します。

netsh interface ipv4 show excludedportrange protocol=tcp

使用予定の10818が出力範囲内にある場合は、システムの予約ポリシーを変更するより、11808や11809など範囲外のポートを選ぶ方が安全です。選択後はシステムプロキシとブラウザーの設定も更新してください。

重複したコアと残留プロセスを確認する

  • まずv2rayNのメイン画面からコアを停止し、3秒待ってから10808、10809、10818、10819を確認します。
  • 停止後もポートがLISTENINGのままなら、PIDを記録し、tasklistで残留しているコアプロセスがないか確認します。
  • まず元のクライアントから通常の手順で終了します。プロセスが応答せず、PIDも確認済みの場合に限り、タスクマネージャーからそのプロセスを終了してください。
  • v2rayNを再起動した後はメインウィンドウを1つだけ残し、ログに同じインバウンドが重複して生成されていないか確認します。

よくある質問と確認方法

10808が使用中の場合、10809に変更してもよいですか?

まず10809がHTTPインバウンドとしてすでに使われていないか確認します。独立した2つのインバウンドがある場合、同じポートに入れ替えるべきではありません。10818と10819のようにペアで変更し、ログでそれぞれの用途を確認することをおすすめします。

使用中のプロセスを終了したのに、パソコンを再起動するとまた競合するのはなぜですか?

使用中のプログラムがスタートアップに登録されている可能性があります。tasklistでプロセス名を記録し、「タスクマネージャー」→「スタートアップアプリ」で該当項目を確認します。両方のクライアントを残す場合は、v2rayNに別のポートセットを固定で割り当ててください。

ポートを変更した後、v2rayNGやv2flyNGも変更する必要がありますか?

必要ありません。v2rayNGとv2flyNGはAndroid端末上でそれぞれ独自のローカルプロキシまたはVPNインターフェースを作成するため、Windows上のv2rayNの127.0.0.1待受ポートは参照しません。

問題が完全に解決したかどうかは、どう判断できますか?

ログにbindエラーがないこと、新しいポートがLISTENINGになっていること、PIDが現在のコアに対応していること、システムプロキシが新しいポートを指定していることを順番に確認し、実際にウェブページまたは端末からリクエストを1回実行します。

TIME_WAITしか表示されない場合、ポートを変更する必要はありますか?

通常は必要ありません。TIME_WAITは接続終了後の正常な状態です。同じポートのLISTENING記録を引き続き探し、v2rayNコアのログでbind失敗が報告されているかを判断材料にしてください。

再利用できるトラブル対処の手順は、まずコアのログを確認し、次にポートのPIDを調べ、プロセスの用途を特定してから、使用中のプロセスを終了するか待受ポートを変更することです。変更後にシステムプロキシ、ブラウザー、コマンドラインの環境変数もまとめて更新すれば、「ポート競合は解消したのにアプリが古いポートへ接続し続ける」という二次障害を防げます。