この記事の概要

Windows PCでv2rayNを起動し、テレビや別のPCから家庭内ネットワーク経由でプロキシを使う場合の設定方法を紹介します。PCで接続を確認してからLAN接続を許可し、ポートとファイアウォールの設定を確認したうえで、接続先の機器にホストのアドレスを入力します。共有するのはHTTPまたはSOCKSプロキシで、家庭内ネットワーク全体が自動的にプロキシ経由になるわけではありません。

1. 共有に必要な条件と通信経路

まずv2rayNを起動しているPCでノードに接続できることを確認してから、共有を設定してください。ノードが使えない状態で待ち受けやファイアウォールを許可しても、ほかの機器が接続できるのは正常に外部へ通信できない入口だけです。ここではWindows PCを例に説明します。ほかのデスクトップOSではファイアウォールの画面が異なるため、後述のWindows用コマンドをそのまま使うことはできません。

機器側のプロキシ設定 LANで待ち受け ルーティングルールを照合 該当するアウトバウンド接続

接続する機器から、ホストPCのLAN内アドレスにアクセスできる必要があります。通常、同じルーターに接続した機器同士は通信できますが、ゲストネットワーク、Wi-Fiクライアントの分離、異なるVLAN間のアクセス制限によって遮断される場合があります。同じ名前のWi-Fiに接続しているだけでは、機器同士が通信できるとは限りません。

2. LANからの接続を許可する

v2rayNで「設定」→「パラメーター設定」を開き、「LANからの接続を許可する」を探します。通常は基本設定またはコア関連の設定にありますが、バージョンによってタブ名が異なる場合があります。実際の項目名を確認してください。有効にして設定を保存し、コアの再起動を求められた場合は画面の案内に従います。

  1. 現在使用しているローカルの待ち受けポートと、対応するプロトコルを控えておきます。混合ポートと表示されている場合は、同じポートでHTTPとSOCKSの両方を受け付けます。
  2. 「LANからの接続を許可する」を有効にして設定を保存し、コアが再起動するまで待ちます。
  3. PowerShellを開き、設定スイッチがオンになっているだけでなく、ポートが実際に待ち受け状態になっているか確認します。
  4. v2rayNのログを確認します。ポートの競合や設定の読み込み失敗などのエラーがある場合は、ほかの機器を設定する前に解消してください。
Get-NetTCPConnection -State Listen -LocalPort 10808 |
  Select-Object LocalAddress, LocalPort, OwningProcess

ここでの 10808 は後述する例のポート番号です。実行前に実際の値へ置き換えてください。127.0.0.1 のみが表示される場合、接続できるのはホストPCだけです。0.0.0.0 は通常、すべてのIPv4インターフェースで待ち受けていることを示します。:: のみが表示される場合は、別の機器からIPv4接続を実際にテストしてください。この表示だけでデュアルスタックの動作を判断することはできません。

3. ホストのアドレスとプロキシポートを確認する

ホストPCのPowerShellまたはコマンドプロンプトで ipconfig を実行し、現在接続中のWi-FiまたはイーサネットアダプターのIPv4アドレスを確認します。切断中のネットワークアダプター、仮想アダプター、ループバックアドレスは選ばないでください。以下ではホストPCを 192.168.1.20、家庭内サブネットを 192.168.1.0/24 とします。いずれも設定例であり、実際のネットワークの値とは限りません。

10808
この記事で使用する混合待ち受けポートの例。実際の設定を確認してください
10809
一部の古い設定で使われる独立したHTTPポートの例。固定値ではありません

テレビ側には、サブスクリプションのノードに記載されたサーバーポートを入力しないでください。ノードのポートはリモートサーバー用です。LAN内の機器が接続するのは、このPC上で待ち受けているローカルのポートです。また、よく使われるポート番号だけでプロトコルを判断しないでください。SOCKSとHTTPに別々のポートを使う設定もあれば、混合ポートを使う設定もあります。

テレビでHTTPプロキシを設定する例

プロキシホスト
192.168.1.20
プロキシポート
10808
利用条件
ホストPCで、そのポートがHTTPまたは混合プロキシとして待ち受けていること

ホスト欄にはアドレスだけを入力します。http://やルーターのアドレスは入力しないでください。

古い設定での独立ポートの例

プロキシホスト
192.168.1.20
HTTPポート
10809
利用条件
実際の設定でHTTPの待ち受けが有効になっていること

SOCKSの待ち受けしかない場合、システムのHTTPプロキシ欄には設定できません。

ホストPCがDHCPでアドレスを取得している場合、再接続後にアドレスが変わることがあります。継続して共有するには、ルーターのDHCPアドレス予約画面でホストのネットワークアダプターを登録し、同じアドレスを割り当てるようにします。ほかの機器と競合する可能性のあるアドレスを、むやみに手動で設定しないでください。

4. Windowsファイアウォールで家庭内ネットワークのみ許可する

Windowsの「設定」→「ネットワークとインターネット」を開き、現在接続中のネットワークのプロパティを確認します。信頼できる家庭内ネットワークであることを確認してから、ネットワークプロファイルを「プライベート」に設定してください。公共のネットワークを共有のためにプライベートへ変更したり、トラブルシューティングのためにファイアウォール全体を無効にしたりしないでください。

  1. 「Windows セキュリティ」→「ファイアウォールとネットワーク保護」→「詳細設定」を開きます。
  2. 「受信の規則」でポート規則を新規作成し、TCPを選択して、実際のHTTPまたは混合待ち受けポートを入力します。
  3. 接続を許可し、「プライベート」プロファイルのみを選択します。規則を識別しやすい名前にしてください。
  4. 規則のプロパティを開き、「スコープ」でリモートIPアドレスを制限します。接続する機器のアドレスを指定するか、信頼できる家庭内サブネットを指定してください。

管理者権限のPowerShellから規則を作成する方法もあります。以下の例では、指定した家庭内サブネットから、ホストの例示アドレスにあるTCP 10808 への接続のみを許可します。実行前にアドレス、サブネット、ポートを必ず置き換えてください。1台の機器だけで使う場合は、-RemoteAddress をその機器の固定LANアドレスに変更できます。

New-NetFirewallRule `
  -DisplayName "v2rayN LAN HTTP 10808" `
  -Direction Inbound `
  -Action Allow `
  -Protocol TCP `
  -LocalAddress 192.168.1.20 `
  -LocalPort 10808 `
  -RemoteAddress 192.168.1.0/24 `
  -Profile Private

この規則はこの記事で説明するHTTPプロキシの利用を想定しており、UDPを自動的に許可するものではありません。より広範なプログラム許可規則がすでにある場合、範囲を絞った規則を追加しても既存の規則は制限されません。既存規則のプロファイルとスコープも確認してください。セキュリティソフトがネットワークアクセスを管理している場合は、その受信ルールも確認します。

5. テレビや別のPCにプロキシを設定する

テレビ:HTTPプロキシのホストとポートを入力

一般的な設定場所は「設定」→「ネットワークとインターネット」→現在接続中のWi-Fi→「プロキシ設定」→「手動」です。機器によっては「ネットワークを変更」や「詳細オプション」を開く必要があります。有線接続でプロキシ欄を使えるかどうかは、機器のシステムによって異なります。プロキシ項目だけを変更し、設定場所を探すためにIPアドレス、ゲートウェイ、DNSをむやみに変更しないでください。

  1. プロキシホストには、ホストPCの実際のLANアドレスを入力します。例:192.168.1.20。
  2. HTTPに対応していることを確認したポートを入力します。例:この記事で使う混合ポート 10808。
  3. 除外リストはまず既存の設定のままにします。保存後、テストするアプリを開き直してください。必要に応じて、古い接続を終了してから再試行します。
  4. まず、システムのHTTPプロキシ設定を明示的に参照するブラウザーで確認し、その後、動画アプリなどをテストしてください。

テレビのシステムプロキシは、通常、機器上のすべての通信を転送するものではありません。独自のネットワークスタックを使うアプリや、UDP、QUICで接続するアプリは、システムのHTTPプロキシ設定に従わないことがあります。ブラウザーでは使えるのに特定のアプリでは使えない場合は、まずそのアプリがプロキシに対応しているか確認してください。ノードが使えないと決めつける必要はありません。

別のWindows PC:手動プロキシを設定する

「設定」→「ネットワークとインターネット」→「プロキシ」→「手動プロキシ設定」を開き、プロキシサーバーを有効にします。ホストのアドレスとHTTPポートを入力して保存してください。アプリに独自のプロキシ設定がある場合は、そちらも確認し、以前のアドレスに接続したままになっていないか確認します。接続するPCのアドレスに 127.0.0.1 を指定しないでください。接続するPC自身を指すアドレスです。

6. ポート、プロトコル、アプリの順に確認する

接続するWindows PCで、以下の2つのテストを実行します。1つ目はTCP接続のみを確認するため、成功してもプロキシのプロトコルやノードが正常とは限りません。2つ目はHTTPプロキシ経由でHTTPSページにアクセスし、その先の通信を確認します。コマンド内のアドレスとポートは、実際の設定に合わせて置き換えてください。

Test-NetConnection 192.168.1.20 -Port 10808

curl.exe --proxy http://192.168.1.20:10808 --connect-timeout 10 -I https://example.com/

1つ目の結果で TcpTestSucceeded を確認し、次に2つ目のテストでプロキシトンネルのネゴシエーションが完了し、接続先サイトからHTTP応答が返るかを確認します。応答のステータスコードが成功を示すとは限りませんが、ポートへの接続失敗、プロキシによる拒否、接続先サイトのエラーを切り分ける手がかりになります。1回ページを開けただけで、すべてのアプリやプロトコルがプロキシ経由になったと判断しないでください。

PCでは使えるのに、テレビは接続タイムアウトになる?

テレビに入力したアドレスがホストPCのLANアドレスか確認し、次にホストPCが127.0.0.1だけで待ち受けていないか確認します。その後、プライベートネットワークの受信規則、規則のスコープ、ルーターのクライアント分離を確認してください。別のPCがある場合は、Test-NetConnectionでポートをテストし、ネットワークの問題とアプリの問題を切り分けます。

ポートテストは成功するのに、ブラウザーでページを開けない?

HTTPとSOCKSのプロトコルが一致しているか、ポートを別のプログラムが使用していないか確認します。v2rayNで現在のノードとログを確認し、HTTPプロキシを明示的に指定したcurlコマンドも実行してください。認証が必要と表示される場合は、接続先にユーザー名とパスワードが設定されているか確認します。

ページは開けるのに、テレビの特定のアプリがプロキシを使わない?

アプリ内にプロキシ設定があるか、システムのHTTPプロキシ設定を参照するか確認してください。システムプロキシはすべての通信を転送するものではなく、アプリが独自に確立する接続を必ずしも経由させることはできません。ノードを何度も切り替える前に、まずこの点を確認してください。

共有できるのに、接続先の表示がホストPCと異なる?

v2rayNのルーティングモードとルールのヒットログを確認します。共有された通信も、ホスト側のコアにあるインバウンド設定とルーティング設定に従って振り分けられます。必ずすべてがプロキシ経由になるわけではありません。リモートからのリクエストにはホスト側で参照できるローカルプロセス情報が含まれないこともあり、ホストPCのプロセス別ルーティング判定をそのまま当てはめることはできません。

PCの再起動後に共有できなくなった場合、まず何を確認する?

v2rayNとコアが起動していること、ホストPCのIPv4アドレスが変わっていないこと、待ち受けポートが存在すること、現在のネットワークがプライベートになっていることを順に確認します。切断後に再接続したときだけ使えなくなる場合は、まずDHCPによるアドレス変更を確認し、その後、ホストPCのアドレス予約を検討してください。

7. 共有を停止して設定を元に戻す

共有を停止する場合は、まずテレビと接続先のPCで手動プロキシを無効にしてから、v2rayNの「LANからの接続を許可する」をオフにします。順番を逆にすると、プロキシ設定が残った機器から一時的にネットワークへ接続できなくなり、ネットワーク障害と誤認するおそれがあります。

LAN共有の確認手順は変わりません。まずホストPCで使えることを確認し、次に待ち受けへの接続を確認してから、アプリがプロキシを使っているか判断します。一度に変更するのは一つの設定層だけにすると、ノード、ポート、ネットワーク設定を同時に変更するより原因を特定しやすくなります。基本設定についてはクイックスタートガイド、接続の問題についてはトラブルシューティングをご覧ください。