v2rayNの起動時にコアの待ち受けに失敗する、またはブラウザーでプロキシ接続を拒否される場合に役立つ内容です。まずログで競合ポートを確認し、Windowsのコマンドで待ち受けプロセスを特定します。重複起動なら不要な方を終了して元のポートを使い、複数起動が必要な場合に限って待ち受け設定を変更します。最後にシステムプロキシやアプリ側の設定も更新し、「コアは起動したのにブラウザーが旧ポートへ接続する」二次トラブルを防ぎます。
1. 10808の競合とノード接続エラーの違い
ローカルの待ち受けポートは、ブラウザーやコマンドラインツールがv2rayNのコアに接続するための入口です。サブスクリプションサーバー側のポートではありません。ログに 127.0.0.1:10808 へのバインド失敗が表示される場合、問題はリクエストをPCで受け付ける前に発生しています。この場合、接続先ノードの変更やサブスクリプションの更新、VMess・VLESSの設定変更では、通常ポートの競合は解消しません。
v2rayNのメイン画面にあるログ欄で、起動直後の記録を確認し、エラーに記載されたアドレス、ポート、時刻を控えます。よくあるエラーの例を以下に示します。ログの前後に付く表示は、コアやシステムによって異なる場合があります。「アドレスが使用中」と「アクセスが拒否された」の違いを確認してください。後者は、一般的なポート使用プロセスが見つからない場合もあります。
エラー:Only one usage of each socket address (protocol/network address/port) is normally permitted.
原因と対処:Windowsでよく見られるソケットアドレスの競合エラーです。ログに記載されたローカルポートを確認し、待ち受けプロセスを特定して重複インスタンスを終了するか、使用中のインスタンスに空いているポートを割り当てます。
エラー:bind: address already in use
原因と対処:指定したアドレスとポートを再度バインドできない状態です。すでに別のプロセスが待ち受けている場合によく発生します。使用中のOSに応じて待ち受けプロセスを確認してください。サブスクリプションの無効化とは別の問題です。
エラー:An attempt was made to access a socket in a way forbidden by its access permissions.
原因と対処:ポートへのアクセスが制限されています。システムの除外ポート範囲やセキュリティポリシーが関係している可能性があります。まず待ち受け状況と除外範囲を確認し、未使用かつ除外されていないポートを選んでください。
2. Windowsで10808の待ち受けプロセスを確認する
以下のコマンドはWindows PowerShellで実行します。まずTCPの待ち受け状態を確認してください。出力のどこかに10808があるだけで、ポートが使用中だと判断してはいけません。通常の送信接続にも同じ数字が含まれる場合があります。ローカルアドレス、ローカルポート、待ち受け状態をあわせて確認しましょう。
Get-NetTCPConnection -LocalPort 10808 -State Listen -ErrorAction SilentlyContinue |
Select-Object LocalAddress, LocalPort, State, OwningProcess
OwningProcess はプロセスID(PID)です。結果にPID 4321と表示された場合は、次のコマンドを実行します。4321は例なので、実際の操作では検索結果の値に置き換えてください。PIDはプロセスの再起動で変わるため、以前の記録を使い回さないでください。
Get-Process -Id 4321 | Select-Object Id, ProcessName, Path
Get-CimInstance Win32_Process -Filter "ProcessId = 4321" |
Select-Object ProcessId, ExecutablePath, CommandLine
実行ファイルのパスを確認すると、異なるフォルダーに展開したプログラムを見分けやすくなります。コマンドラインからは、コアが使用している設定を確認できます。一部のプロセス情報の取得には管理者権限が必要です。パスが表示されなくても、プロセスが存在しないとは限りません。サポートを求める際は、コマンドラインや設定内容をそのまま公開しないでください。PC内のパスや接続情報が含まれている可能性があります。
コマンドプロンプトで確認する方法
netstat -ano -p tcp | findstr ":10808"
tasklist /FI "PID eq 4321"
netstatの出力から、ローカルアドレスが:10808で終わり、状態がLISTENINGの行を探します。最後の列にPIDが表示されます。127.0.0.1:10808はIPv4のループバック待ち受けです。0.0.0.0:10808はすべてのIPv4インターフェースで待ち受ける設定で、ループバックアドレスで同じポートを使えなくなる場合もあります。[::]:10808が表示された場合は、IPv6やデュアルスタックでの待ち受けも確認してください。IPv4だけを調べて、ポートが空いていると判断しないようにしましょう。- ログにUDPのバインド失敗が明記されている場合は、
Get-NetUDPEndpoint -LocalPort 10808 -ErrorAction SilentlyContinueを実行し、PIDからプロセスを特定します。TCPとUDPのポート使用状況は別々に確認してください。
3. 重複起動、残存コア、システムの除外ポート
プロセスが見つかったら、まず該当プログラムのタスクトレイメニューから正常に終了し、もう一度ポートを確認します。v2rayNはウィンドウを閉じてもタスクトレイで動作し続けることがあります。別のユーザーセッション、スタートアップ項目、以前の展開先にあるインスタンスがポートを使用している場合もあります。コアのプロセス名は手掛かりにとどめ、名前だけを根拠に同名プロセスをすべて終了しないでください。
- 同じクライアントを二重起動している:残すインスタンスとフォルダーを確認し、もう一方を終了します。タスクトレイのアイコンとタスクマネージャーのファイルの場所を確認してから、残すインスタンスを再起動してください。
- 終了後もコアが待ち受けている:PIDのパスとコマンドラインを確認し、終了したインスタンスのプロセスであり、ほかの用途がないことを確かめてからタスクマネージャーで終了します。その後、ポートを再確認してください。続けて何度も起動ボタンを押すのは避けましょう。
- 別のプログラムを終了できない:データベース、開発用サービス、システムプロセスを強制終了しないでください。v2rayNに別のポートを割り当て、そのプロキシを使うアプリの設定も更新します。
- 待ち受けがないのにアクセス拒否が表示される:システムの除外ポート範囲を確認します。仮想化やコンテナネットワークなどの機能がポートの割り当てに影響する場合がありますが、必ず実際のPCの出力を確認してください。
netsh interface ipv4 show excludedportrange protocol=tcp
netsh interface ipv6 show excludedportrange protocol=tcp
出力された開始ポートと終了ポートの範囲に10808が含まれているか確認します。該当する場合は、システムの予約設定を削除するより、範囲外のポートを選ぶ方が安全です。待ち受けがなく、除外範囲にも該当しない場合は、管理者として何度も実行して解決を試みるのではなく、起動直後のログ、バインドアドレス、セキュリティソフトの記録を確認してください。
4. 設定でSOCKS、HTTP、混合ポートを変更する
まず現在の設定を控え、「設定」→「パラメータ設定」 を開き、「Core 基本設定」 でローカル待ち受け関連の項目を探します。バージョンやコアの組み合わせによって、「ローカル混合待ち受けポート」が表示される場合と、SOCKSとHTTPを個別に設定できる場合があります。現在の画面と起動ログを確認し、必ず2つの入力欄があるとは限らない点に注意してください。
11808と11809はこの記事で使う設定例であり、お使いのPCで空いているとは限りません。保存前に先ほどのコマンドで両方のポートを確認し、システムの除外範囲も調べてください。ポート番号だけでプロトコルが決まるわけではありません。10808が必ずSOCKS、10809が必ずHTTPということではなく、実際に受け付けるリクエストの種類はインバウンド設定で決まります。
| 現在の設定方式 | 変更例 | アプリ側の設定 |
|---|---|---|
| 単一の混合待ち受けポート | ローカル混合待ち受けポートを11808に変更 | 対応するHTTP・SOCKSリクエストは同じ入口を使います。アプリでは正しいプロキシプロトコルを選択してください。 |
| SOCKSとHTTPを個別に設定 | SOCKSを11808、HTTPを11809に変更 | SOCKSを使うアプリは11808、HTTPプロキシを使うアプリは11809に接続 |
| カスタム設定ファイルのインバウンド | 設定ファイルで実際に使われているインバウンドの待ち受けポートを確認 | アプリ側もそのインバウンド設定に合わせます。画面上の設定がカスタムファイルに反映されるとは限りません。 |
- 元のポート、待ち受けアドレス、システムプロキシのモードを記録しておくと、問題発生時に元へ戻せます。
- パラメータ設定で現在使用中の待ち受け項目を変更します。ノードのサーバーポートは変更しないでください。
- 設定を保存してサービスを再起動します。現在のバージョンに再起動メニューがない場合は、クライアントを正常終了してから再度開いてください。
- 今回の起動ログを確認し、バインドエラーがないことを確かめてから、新しいポートで待ち受けが始まったか調べます。
要点:インバウンドの種類を確認してからポートを変更
画面に混合ポートしかない場合、HTTPポートを別途探したり追加したりする必要はありません。個別に設定できる場合は、それぞれの値を確認してください。変更が成功したかどうかは、設定欄の数字が変わったかではなく、想定したコアが新しいポートで待ち受けているかで判断します。
5. ポート変更後に更新する設定
ローカルポートを変更しても、手動で設定したプロキシアドレスは通常自動更新されません。開いたままのターミナル、ブラウザー独自のプロキシ設定、ダウンロードツールを特に確認してください。既存の接続はしばらく使えても、新しい接続だけ失敗する場合があります。アプリを再起動してから確認しましょう。
- Windowsのシステムプロキシ:v2rayNの「システムプロキシ」メニューで、現在のモードを再適用します。たとえば「システムプロキシを自動設定」を選び直してください。その後、
「設定」→「ネットワークとインターネット」→「プロキシ」を開き、実際に適用されているサーバーとポートを確認します。Windowsのバージョンによって表示名が多少異なる場合があります。 - ブラウザー独自のプロキシ設定:ブラウザーの設定や拡張機能に
127.0.0.1:10808を手動で入力している場合は、新しい接続先とプロトコルに更新します。システムプロキシを使うブラウザーでは、システム側の設定を重点的に確認してください。 - ターミナルの環境変数:
HTTP_PROXY、HTTPS_PROXY、ALL_PROXYと各ツール独自の設定を確認します。一時的な環境変数は、現在のターミナルと、そこから新たに起動するプロセスにのみ適用されます。ユーザー環境変数を変更した場合は、通常ターミナルを開き直す必要があります。 - 開発・ダウンロードツール:ツールの設定でプロキシプロトコル、アドレス、ポートをあわせて確認してください。接続先のWebサイトがHTTPSでも、ローカルのHTTPプロキシアドレスを
https://にする必要はありません。 - 自動起動とスクリプト:以前のフォルダーにあるクライアントが起動対象になっていないか、起動スクリプトに古いポートが固定されていないか確認してください。設定が残っていると、次回ログイン時に競合が再発する場合があります。
以下はPowerShellの現在のセッションで使う設定例です。新しいポートが該当プロトコルを受け付けることを確認してから使用してください。HTTP専用の入口に11809を設定した場合は最初の2行を使います。混合入口が11808の場合は、最初の2行のポートを11808に変更してください。3行目を使うには、入口がSOCKS5に対応している必要があります。
$env:HTTP_PROXY = "http://127.0.0.1:11809"
$env:HTTPS_PROXY = "http://127.0.0.1:11809"
$env:ALL_PROXY = "socks5h://127.0.0.1:11808"
6. 新しいポートの検証と原因の切り分け
まず待ち受けを確認し、次にプロキシのハンドシェイク、最後に特定のWebサイトへの接続をテストします。これにより、PC内のポート、プロキシプロトコル、リモート経路の問題を切り分けられます。以下のコマンドでは例のポートを使っています。設定が異なる場合は、実際の値に置き換えてください。
Test-NetConnection 127.0.0.1 -Port 11808
curl.exe --proxy socks5h://127.0.0.1:11808 --connect-timeout 10 --max-time 20 -I https://example.com/
curl.exe --proxy http://127.0.0.1:11809 --connect-timeout 10 --max-time 20 -I https://example.com/
実際のインバウンドの種類に応じて、curl.exe のコマンドをいずれか1つ実行してください。混合入口が11808の場合、HTTPのテストにも11808を使います。Test-NetConnection が成功しても、確認できるのはTCP接続が確立したことだけです。プロトコルが一致していることや、リモートノードが利用できることを示すものではありません。例のURLは接続確認用です。プロキシ経由で通信するかどうかは、現在のルーティングルールによって決まります。
| 確認結果 | まず確認する項目 | 次の手順 |
|---|---|---|
| 新しいポートで待ち受けていない | 設定が反映されているか、コアが起動しているか | 起動ログを確認し、カスタム設定と実際のバインドアドレスを調べる |
| 待ち受けているがプロキシのハンドシェイクに失敗する | HTTPとSOCKSのプロトコルが一致しているか | アプリのプロキシ種別を正し、別のプログラムに接続していないか確認する |
| ハンドシェイク後に接続がタイムアウトする | アウトバウンドノード、DNS、ルーティングのログ | ノードの接続状況を調べる。根拠なくローカルポートを変更し続けない |
| コマンドラインでは成功するが、ブラウザーでは失敗する | ブラウザーのプロキシ設定元と古いプロセス | ブラウザー独自の設定を更新し、ブラウザーを完全終了してから再テストする |
7. ポート競合が繰り返す場合の最終確認
PCを再起動するたびに競合が再発する場合は、ポート番号を増やし続けるのではなく、ログイン時のスタートアップ項目や複数の展開フォルダーを確認してください。通常使うクライアントのフォルダーを1つに決め、待ち受けポートと用途を記録します。2つのインスタンスを同時に使う必要がある場合は、それぞれに異なる待ち受けポートを割り当て、各アプリのプロキシ設定も個別に管理してください。
- 新しいポートの待ち受けPIDが想定したプロセスであることと、旧ポートの使用プロセスも特定できていることを確認します。一時的にWebへ接続できるだけで、確認を終えないでください。
- システムプロキシが旧ポートを参照していないことを確認します。クライアントを終了する際は、使わなくなったシステムプロキシ設定をクライアントから解除してください。
- 普段使うTUNまたはルーティングモードに戻して再テストします。一時的なテストモードだけで正常と判断しないでください。
- サポートを求める場合は、OSのバージョン、クライアントのバージョン、エラー行全体、ポート、プロセス名を伝えてください。サブスクリプションURL、アカウント情報、ノードの認証情報は伏せてください。
ローカルの待ち受けが復旧してから、サブスクリプション、ノード、ルーティングの問題を確認してください。インストールから初回起動までの手順はv2rayN設定ガイドをご覧ください。ほかのエラーについてはよくある質問で確認できます。