10808 ポートが占有されている場合の対処法:競合プロセスの特定と v2rayN ローカルポートの変更

クライアントがポート占有を通知したら、netstat で 10808/10809 を占有するプロセスを特定し、プロセス終了かパラメータ設定でローカルポートを変更し、ブラウザのプロキシも同期更新します。

この記事の概要

この記事は、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 のデフォルト用途占有時の典型的な症状
10808HTTP プロキシブラウザでウェブページが開けない、コア起動失敗
10809SOCKS5 プロキシゲーム/アプリがプロキシに接続できない

v2rayN 自身のほかにも、他のプロキシ系ソフトウェアが 10808 をリッスンしている可能性があります。たとえば、一部のゲームアクセラレーター、企業内ネットワークのプロキシツール、さらには旧バージョンの v2rayN の残留プロセスなども、同じ競合を引き起こします。そのため、エラーが表示されたら、すぐに v2rayN の設定を変更するのではなく、誰が占有しているかを確認することがより重要です。

netstat で 10808 を占有するプロセスを特定する

ポート競合が発生したら、最初のステップはすぐにポートを変更することではなく、誰がそれを占有しているかを突き止めることです。Windows に標準搭載されている 2 つのコマンドで定位でき、追加のツールをインストールする必要はありません。netstat はポートの占有状況を一覧表示し、tasklist は PID に対応するプロセス名を確認するために使用します。

  1. コマンドプロンプトを開く

    Win + R を押して cmd と入力し、Enter でコマンドプロンプトを開きます。

  2. netstat を実行する

    netstat -ano | findstr :10808 と入力し、最後の列の PID をメモします。

  3. プロセス名を確認する

    tasklist /fi "pid eq <PID>" と入力し、ポートを占有しているプログラムを確認します。

  4. 競合プロセスを終了する

    システムの重要なプロセスでないことを確認したら、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 にリクエストを送信し、接続は失敗します。以下では順番に操作して、プロキシチェーンを完全にします。

  1. パラメータ設定を開く

    v2rayN のメイン画面で「設定」→「パラメータ設定」をクリックし、「ローカルリスニング」タブに切り替えます。

  2. ローカルポートを変更する

    「HTTP プロキシポート」を 10808 から 10810 に、「SOCKS プロキシポート」を 10809 から 10811 に変更します。

  3. 保存してコアを再起動する

    「OK」をクリックして保存し、メイン画面の「コアを再起動」をクリックして新しいポートを有効にします。

  4. ブラウザのプロキシを同期する

    ブラウザのプロキシ拡張機能(例:SwitchyOmega)で、HTTP と SOCKS のプロキシポートを 10810/10811 に変更します。

ブラウザ拡張機能ではなくシステムプロキシを使用している場合、ポート変更後は Windows の「設定」→「ネットワークとインターネット」→「プロキシ」で、HTTP プロキシのアドレスとポートを 127.0.0.1:10810 に同期して変更する必要があります。v2rayN のパラメータ設定には「システムプロキシを自動構成」オプションがあり、チェックを入れるとクライアントが自動的に変更してくれるので、手動で操作する必要はありません。

ポート競合後の検証と予防

ポートを変更したら、まず netstat で新しいポートが正常にリッスンしていることを確認し、次にブラウザで ip.sb または ipinfo.io にアクセスして、出口 IP がノードの地域のアドレスに変わっているか確認します。この 2 つのチェックが両方合格すれば、ポートの切り替えは成功です。

10808
HTTP プロキシのデフォルトポート
10809
SOCKS プロキシのデフォルトポート
10810
推奨する HTTP ポート

ポート競合を防ぐには、2 つの方向からアプローチできます。1 つは、あまり使わない古いプロキシツールを自動起動から外すこと。もう 1 つは、v2rayN のローカルポートを 10810/10811 に固定して、他のソフトウェアが好んで使う 10808 を避けることです。ポートを固定すれば、今後競合が発生しても、エラーメッセージからどのプロセスが原因か簡単に見分けられます。

ポートを変更してもまだエラーが発生する場合、複数の v2rayN インスタンスが同時に実行されていないか確認してください。Ctrl + Shift + Esc でタスクマネージャーを開き、「プロセス」タブで v2rayN を検索し、余分なインスタンスをすべて終了して 1 つだけ残し、コアを再起動します。

ポート問題を解決しますか?

まず最新版の v2rayN をダウンロードし、チュートリアルに従って基本設定を完了してから、この記事の手順に従ってポート競合を解決してください。

ダウンロードページへ チュートリアルを見る
v2rayN をダウンロード