この記事は、v2rayN をインストール済みで、コア起動時にポート競合が発生するユーザーを対象としています。読めば、10808/10809 を占有するプロセスを特定し、「設定」→「パラメータ設定」でポートを変更し、ブラウザのプロキシ設定も同期更新できるようになります。
ポート占有時に表示されるエラー
v2rayN 起動後、コアはローカルで 2 つのポートをリッスンします。10808 は HTTP プロキシ、10809 は SOCKS5 プロキシに使用されます。これらのポートは Windows 上の多くのプロキシソフトウェアのデフォルトポートであるため、競合する確率は低くありません。
ポートが占有されている場合、コアは黙ってスキップせず、直接エラーを報告してリッスンを停止します。エラーメッセージは v2rayN のメイン画面下部のログ領域に表示され、通常は次の 2 つのいずれかの形式です。
エラー:failed to listen on 10808: bind: Only one usage of each socket address
原因と解決策:10808 ポートは他のプロセスがリッスンしています。netstat でプロセスを特定して終了するか、パラメータ設定で 10810 に変更してください。
エラー:bind: address already in use
原因と解決策:同じポートが重複してバインドされています。v2rayN のインスタンスが 2 つ起動していないか、古いコアプロセスが残っていないか確認してください。
ポートマッピングの関係を理解すると、どの段階で問題が発生しているかを素早く判断できます。v2rayN のデフォルトのローカルポート割り当ては以下の表のとおりです。
| ポート | v2rayN のデフォルト用途 | 占有時の典型的な症状 |
|---|---|---|
| 10808 | HTTP プロキシ | ブラウザでウェブページが開けない、コア起動失敗 |
| 10809 | SOCKS5 プロキシ | ゲーム/アプリがプロキシに接続できない |
v2rayN 自身のほかにも、他のプロキシ系ソフトウェアが 10808 をリッスンしている可能性があります。たとえば、一部のゲームアクセラレーター、企業内ネットワークのプロキシツール、さらには旧バージョンの v2rayN の残留プロセスなども、同じ競合を引き起こします。そのため、エラーが表示されたら、すぐに v2rayN の設定を変更するのではなく、誰が占有しているかを確認することがより重要です。
netstat で 10808 を占有するプロセスを特定する
ポート競合が発生したら、最初のステップはすぐにポートを変更することではなく、誰がそれを占有しているかを突き止めることです。Windows に標準搭載されている 2 つのコマンドで定位でき、追加のツールをインストールする必要はありません。netstat はポートの占有状況を一覧表示し、tasklist は PID に対応するプロセス名を確認するために使用します。
コマンドプロンプトを開く
Win + R を押して cmd と入力し、Enter でコマンドプロンプトを開きます。
netstat を実行する
netstat -ano | findstr :10808 と入力し、最後の列の PID をメモします。
プロセス名を確認する
tasklist /fi "pid eq <PID>" と入力し、ポートを占有しているプログラムを確認します。
競合プロセスを終了する
システムの重要なプロセスでないことを確認したら、taskkill /pid <PID> /f を実行します。
以下は典型的な netstat 出力の例です。PID 8732 が 10808 と 10809 の 2 つのポートを占有しており、このプロセスが v2rayN のデフォルトのポートペアを同時にバインドしていることを示しています。findstr が 1 行だけ返す場合、1 つのポートだけが占有され、もう 1 つのポートはまだ利用可能です。
netstat -ano | findstr :10808
TCP 127.0.0.1:10808 0.0.0.0:0 LISTENING 8732
TCP 127.0.0.1:10809 0.0.0.0:0 LISTENING 8732
tasklist /fi "pid eq 8732"
イメージ名 PID セッション名 セッション# メモリ使用
========================= ======== ================ =========== ============
v2rayN.exe 8732 Console 1 24,580 K
netstat の出力で PID が System(4) または svchost.exe に対応している場合、それはシステムプロセスなので直接終了しないでください。この場合は、システムプロセスを強制的に殺すよりも、別のポートに変更する方が安全です。
競合に対処する 3 つの方法
占有プロセスを特定したら、3 つの対処方法があります。それらが解決する問題のレベルは異なり、適したシナリオも異なります。以下では、フローチェーンで意思決定の道筋を説明してから、それぞれを詳しく説明します。
結論:恒久的にポートを変更する
プロセスを終了しても現在の問題が解決されるだけで、次回起動時には競合プログラムが再び 10808 を占有します。v2rayN のローカルポートを 10810 に変更し、ブラウザのプロキシも同期すれば、デフォルトで 10808 を占有するプログラムとポートを奪い合うことはなくなります。
方法 1:占有プロセスを終了する(一時的)
10808 を占有しているプロセスが知っているプロキシツールまたは旧バージョンの v2rayN の場合、直接終了するのが最も速いです。taskkill /pid <PID> /f で即座にポートが解放されますが、次回起動時にプロセスが再び起動する可能性があります。この方法は、ネットワークをすぐに復旧させたいだけで、長期的に設定を変更するつもりがない場合に適しています。
方法 2:v2rayN のローカルポートを変更する(推奨)
パラメータ設定で HTTP ポートを 10810、SOCKS ポートを 10811 に変更します。この変更は永続的に有効で、ほとんどのソフトウェアがデフォルトで占有するポート帯を回避できます。10810/10811 も一般的なポートの範囲内ですが、ローカルプロキシポートとしての競合確率は 10808 よりはるかに低いです。
方法 3:競合プログラムの自動起動を無効にする(根治)
競合プログラムがもう使わない古いツールの場合、タスクマネージャーの「スタートアップ」ページで自動起動を無効にする方が、毎回手動でプロセスを殺すより手間がかかりません。タスクマネージャーを開き、「スタートアップ」タブに切り替え、競合プログラムを見つけて右クリックし「無効にする」を選択します。
v2rayN のローカルポートを変更し、ブラウザのプロキシを同期する
ポート変更は推奨される方法ですが、v2rayN だけを変更してブラウザを変更しない場合、ブラウザは依然として 10808 にリクエストを送信し、接続は失敗します。以下では順番に操作して、プロキシチェーンを完全にします。
パラメータ設定を開く
v2rayN のメイン画面で「設定」→「パラメータ設定」をクリックし、「ローカルリスニング」タブに切り替えます。
ローカルポートを変更する
「HTTP プロキシポート」を 10808 から 10810 に、「SOCKS プロキシポート」を 10809 から 10811 に変更します。
保存してコアを再起動する
「OK」をクリックして保存し、メイン画面の「コアを再起動」をクリックして新しいポートを有効にします。
ブラウザのプロキシを同期する
ブラウザのプロキシ拡張機能(例:SwitchyOmega)で、HTTP と SOCKS のプロキシポートを 10810/10811 に変更します。
ブラウザ拡張機能ではなくシステムプロキシを使用している場合、ポート変更後は Windows の「設定」→「ネットワークとインターネット」→「プロキシ」で、HTTP プロキシのアドレスとポートを 127.0.0.1:10810 に同期して変更する必要があります。v2rayN のパラメータ設定には「システムプロキシを自動構成」オプションがあり、チェックを入れるとクライアントが自動的に変更してくれるので、手動で操作する必要はありません。
ポート競合後の検証と予防
ポートを変更したら、まず netstat で新しいポートが正常にリッスンしていることを確認し、次にブラウザで ip.sb または ipinfo.io にアクセスして、出口 IP がノードの地域のアドレスに変わっているか確認します。この 2 つのチェックが両方合格すれば、ポートの切り替えは成功です。
ポート競合を防ぐには、2 つの方向からアプローチできます。1 つは、あまり使わない古いプロキシツールを自動起動から外すこと。もう 1 つは、v2rayN のローカルポートを 10810/10811 に固定して、他のソフトウェアが好んで使う 10808 を避けることです。ポートを固定すれば、今後競合が発生しても、エラーメッセージからどのプロセスが原因か簡単に見分けられます。
ポートを変更してもまだエラーが発生する場合、複数の v2rayN インスタンスが同時に実行されていないか確認してください。Ctrl + Shift + Esc でタスクマネージャーを開き、「プロセス」タブで v2rayN を検索し、余分なインスタンスをすべて終了して 1 つだけ残し、コアを再起動します。
ポート問題を解決しますか?
まず最新版の v2rayN をダウンロードし、チュートリアルに従って基本設定を完了してから、この記事の手順に従ってポート競合を解決してください。