VPNに接続できたか確認するとき、クライアント画面の「接続済み」だけを見てはいけません。この表示は通常、クライアントのハンドシェイク完了やサーバーとのセッション確立を示すだけで、ブラウザー、ダウンロードツールなどの通信がすべて想定した経路を通っていることまでは証明しません。確実に確認するには、まず接続前のネットワーク状態を記録し、グローバルIPとDNSを照合したうえで、最後にアプリごとの実際の経路を確認します。
この確認方法は特定のプロトコルに依存しません。Shadowsocks、VMess、Trojan、VLESS、Hysteria2、TUIC、そしてシステムが管理するVPN設定でも、プロキシモード、ルールベースルーティング、権限状態、アプリ側の設定によって「クライアントはオンラインだが、対象の通信が経路に入っていない」状態が起こります。プロトコルのハンドシェイク成功は出発点にすぎず、最終的に重要なのは通信経路です。
まず「接続済み」が実際に証明することを理解する
クライアントに「接続済み」と表示されるのは、通常、ローカルのクライアントとリモートノードが通信でき、認証情報が有効で、プロトコルセッションが確立したことを意味します。ただし、クライアントによって状態の判定は異なります。ハンドシェイク完了直後に接続成功と表示するものもあれば、システムプロキシ、仮想ネットワークアダプター、ルーティングルールの反映後に表示を更新するものもあります。
そのため、接続状態と通信の引き継ぎは別々の確認ポイントです。前者は「クライアントがノードに接続できるか」、後者は「指定したアプリのリクエストがこの経路に入っているか」を確認します。システムプロキシが反映されていない、仮想ネットワークアダプターの権限が有効でない、ルールで直接接続に振り分けられている、またはアプリがシステムプロキシを回避している場合、状態は正常でもグローバルIPが変わらないことがあります。
| 確認する場所 | 証明できること | 単独では証明できないこと |
|---|---|---|
| クライアントの接続状態 | ローカルクライアントとノードのセッションが確立している | すべてのアプリがノードを経由していること |
| グローバルIPの確認 | 現在の確認リクエストがどのパブリックアドレスから送信されたか | 他のアプリも同じ経路を使っていること |
| DNSクエリの結果 | ドメイン名の解決リクエストをどのリゾルバーが処理したか | Webページのリクエストも必ず同じ経路を通ること |
| 対象アプリの実測 | 現在のルールで、そのアプリが実際のリクエストを完了できること | システム内の他のアプリも引き継がれていること |
確認の際は、プロキシクライアントとシステム全体のトンネルを区別してください。ブラウザーのプロキシは通常、システムプロキシ設定に従うプログラムだけを処理します。仮想ネットワークアダプター方式はネットワーク層でより多くの通信を引き継ぎますが、ルーティングテーブル、除外ルール、ローカルネットワーク保護ルールの影響を受ける場合があります。あるアプリのグローバルIPが変わったからといって、端末全体の接続が変わったと判断してはいけません。
ステップ1:グローバルIPと所在地を比較する
グローバルIPの確認は、最も直接的な出発点です。経路を切断した状態で信頼できるIP確認ページを開き、パブリックIP、ネットワーク事業者、概ねの地域を記録します。次に対象の経路へ接続し、先ほどの確認ページを閉じて開き直すか、強制更新して結果が変わったかを確認します。
- クライアントで経路を切断し、通常の接続状態に戻ったことを確認します。
- 現在のパブリックIPを確認し、アドレス、ネットワーク事業者、地域情報を記録します。
- 使用するノードに接続し、クライアントがルーティングまたはプロキシ設定を完了するまで待ちます。
- 確認をもう一度実行します。すでに読み込まれた古いタブの結果だけを見ないでください。
- 接続前後のパブリックアドレスを比較し、新しいアドレスが選択した経路の想定地域と一致するか確認します。
- ✅ パブリックIPが変わり、所在地も対象経路と概ね一致しています。続けてDNSとアプリの経路を確認できます。
- ✅ IPは変わったものの、地域が近隣都市として表示される場合は、複数のサービスで照合してください。単一の位置情報データベースだけで失敗と判断しないようにします。
- ❌ パブリックIPがまったく変わらない場合は、まずプロキシモード、仮想ネットワークアダプターの権限、システムプロキシの反映、ルールベースルーティングを確認します。
- ❌ ブラウザーのグローバルIPだけが変わり、他のアプリが変わらない場合、現在の設定がブラウザーまたはシステムプロキシに従うプログラムだけを引き継いでいる可能性があります。
IP位置情報データベースには更新の遅れがあり、同じアドレスでも確認サービスによって異なる都市が表示されることがあります。確認時は、パブリックアドレスが変わったか、ネットワーク事業者が妥当か、国や地域が想定どおりかを重視してください。都市レベルの表示を正確な位置情報とみなさないようにしましょう。複数の確認元で地域が異なる場合は、対象サイトが実際に返す地域向けコンテンツも合わせて判断できます。
ステップ2:DNSが想定した経路を通っているか確認する
Webサイトへアクセスする前に、端末は通常、ドメイン名を接続可能なアドレスへ変換します。コンテンツのリクエストが経路を通っていても、DNSを元のネットワークのリゾルバーに任せていると、ローカルネットワークの名前解決経路が露出したり、解決結果と出口地域が一致せずアクセスに問題が生じたりすることがあります。この状態は一般にDNSリークと呼ばれます。
確認時は、切断状態と接続状態の両方でDNSテストを実行し、リゾルバーのネットワーク事業者と地域を比較します。接続後もローカルネットワークでよく使われるリゾルバーが表示されても、直ちにコンテンツ通信が経路を通っていないとは限りません。ただし、DNSの経路をさらに確認する必要があります。より安定した設定は、クライアントの設計に従ってDNSを引き継がせ、名前解決の方針をプロキシルールと一致させることです。
DNSの結果を、グローバルIPと完全に同じ都市になるよう機械的に求める必要はありません。サービス事業者はパブリックリゾルバー、エニーキャストリゾルバー、リモートフォワーダーを使うことがあり、表示される組織名もノード運営者と異なる場合があります。注意すべきなのは、接続前後で名前解決の経路がまったく変わらないこと、元のネットワークに明らかに属するリゾルバーが表示されること、または異なるルールでも対象地域と矛盾する結果が続くことです。
ブラウザーの暗号化DNSはテストの意味を変える
一部のブラウザーでは、独立した暗号化DNSを有効にできます。有効にすると、ブラウザーがOSの既定の名前解決設定を回避し、ブラウザーで指定した名前解決サービスへ直接リクエストを送る場合があります。このとき、Webページのテストに表示されるのはブラウザー独自のDNS経路であり、システム内の他のアプリを必ずしも表しません。
トラブルシューティングでは、まずブラウザーで独立した名前解決が有効か確認し、テスト対象を決めます。システムDNSを調べる場合はシステム設定に従うツールを使い、ブラウザーの実際のアクセス経路を調べる場合は現在のブラウザー設定を維持します。テスト中に設定を何度も切り替えると、前後の結果を対応づけられなくなります。
確認の順序
経路を切断 → グローバルIPとDNSを記録
経路に接続 → グローバルIPとDNSを再確認
ブラウザー独自のDNSを確認 → ブラウザーを再テスト
クライアントのDNS方針を確認 → 他のアプリを再テスト
ステップ3:アプリごとにルールベースルーティングを確認する
グローバルIPとDNSの確認が終わったら、実際に使うアプリへ戻ります。現在のプロキシクライアントは、ルールベースルーティングに対応していることが一般的です。ローカルサイトは直接接続し、指定したドメインやネットワーク範囲はプロキシを経由し、ローカルネットワークのアドレスは直接接続します。ルール方式は、すべてのリクエストを同じ出口にするためのものではありません。そのため、あるWebサイトに元の出口が表示されても、ルールどおりの場合と、ルール漏れの場合があります。
最も分かりやすい確認方法は、グローバルプロキシとルールベースプロキシの結果を一時的に比較することです。グローバルモードでは対象アプリの出口が変わるのに、ルールモードでは変わらない場合、問題は通常、ルールの一致、ルールの順序、またはアプリ側の回避設定にあります。グローバルモードでも変わらない場合は、システムプロキシ、仮想ネットワークアダプター、ルーティングの競合、クライアントの権限を引き続き確認します。
プラットフォームごとの引き継ぎ範囲
デスクトップ環境のシステムプロキシは、主にシステムプロキシのインターフェースに従うアプリへ影響します。一部のダウンロードツール、開発ツール、ゲームプラットフォームには独自のプロキシ設定があり、直接ネットワークへ接続することがあります。仮想ネットワークアダプター方式はIPベースの接続をより広くカバーできますが、ルーティングを正しく反映し、ローカルネットワーク、プライベートアドレス、DNSにも対応する必要があります。
AndroidとiOSのクライアントは通常、システムが提供するVPNインターフェースでトンネルを構築します。アプリごとのプロキシや除外アプリを有効にしている場合、除外されたプログラムは元のネットワークを使い続けます。システムで同時に有効にできるトンネル設定は、該当する通信だけを引き継ぎます。そのため、クライアントを切り替えた後は、以前のクライアントの履歴ではなく、現在の設定状態を改めて確認してください。
ブラウザー拡張機能は通常、そのブラウザー内のWebリクエストだけに影響し、他のプログラムを代表するものではありません。コマンドラインツールは、HTTP_PROXY、HTTPS_PROXY、ALL_PROXYなど独自の環境変数を読み取ることもあります。開発者がAPIリクエストをテストする際は、ターミナル環境、アプリ設定、クライアントルールを同時に確認してください。
- ✅ ブラウザー、対象アプリ、コマンドラインツールからそれぞれ実際のリクエストを送り、各自の出口を確認する。
- ✅ ルールモードで対象ドメインがプロキシルールに一致し、既定の直接接続ルールに入っていないことを確認する。
- ✅ 仮想ネットワークアダプターを使う場合は、システムの許可、ルーティングの反映、DNSの引き継ぎ状態を確認する。
- ❌ ブラウザー拡張機能だけでテストし、端末内のすべてのプログラムが同じ経路を使っていると判断する。
- ❌ クライアントに通信量が表示されたことだけを見て、対象アプリのリクエストも引き継がれたと判断する。
経路の種類によって確認箇所は変わる
直接接続の経路では、クライアントが対象ノードと直接接続するため、構成は比較的単純です。ハンドシェイクに成功しても出口が変わらない場合、主な確認箇所はローカルのプロキシモード、ルーティング、アプリ設定です。中継経路では、まず中継入口へ接続し、その後中継ネットワークから出口ノードへ転送します。クライアントに見えるのは入口とのセッションですが、Webサイトに表示されるべきなのは最終的な出口アドレスです。
IEPL専線は通常、入口と出口の間で専用の伝送や管理された転送を利用する経路設計を指します。一般的なパブリックネットワーク経由の中継との違いは主に中間の伝送経路にあり、ローカルアプリのルールベースルーティングが自動的に正しく行われることを意味しません。直接接続、中継、IEPLのいずれでも、確認方法は同じです。最終出口、DNS経路、対象アプリのリクエストを照合します。
プロトコル名も経路確認の代わりにはなりません。ShadowsocksとTrojanはプロキシプロトコルとして使われることが多く、VMessとVLESSはクライアントコアおよびトランスポート設定に依存します。Hysteria2とTUICはQUIC系の伝送を基盤とし、特定のネットワーク条件での接続性能が重要になります。カプセル化、認証、伝送方式は異なりますが、クライアントにハンドシェイク完了と表示された後も、対象の通信が対応するセッションへ送られているかを確認する必要があります。
| 経路またはモード | Webサイトに表示されるべき出口 | 優先して確認する箇所 |
|---|---|---|
| 直接接続ノード | 選択したノードのパブリック出口 | システムプロキシ、仮想ネットワークアダプター、ルーティング、アプリ設定 |
| パブリックネットワーク中継 | 中継入口ではなく最終出口ノード | 入口への到達性、中継転送、出口設定 |
| IEPL専線 | 最終出口ノード | ローカルでの引き継ぎ、入口接続、出口マッピング |
| ルールベースルーティング | 一致したルールによって決まる | ルールの順序、ドメイン一致、既定の方針 |
よくある「接続できたように見える」状態
システムプロキシが正しく反映されていない
クライアントはノードに接続しているものの、システムプロキシが空のまま、または別のネットワークツールに上書きされている状態です。この場合、システムプロキシに従うブラウザーやアプリは経路に入りません。クライアントでシステムプロキシをいったん切り替え、OSのネットワーク設定も連動して変わるか確認してください。
ルールが対象リクエストを直接接続と判定している
ドメインルール、ネットワーク範囲ルール、既定ルールには優先順位があります。対象ドメインが先に直接接続の項目へ一致すると、後続のプロキシルールでは処理されません。確認時は、ルール一覧に対象ドメインがあるかだけでなく、クライアントの接続ログやルール一致情報を確認し、実際にどのルールが使われたかを確かめます。
アプリに独自のプロキシ設定がある
一部のアプリはシステムプロキシに従わず、内部に古いプロキシアドレスを保存していることがあります。また、独自のネットワークスタックやDNSを直接使うアプリもあります。ブラウザーは正常なのに特定のプログラムだけ変わらない場合は、まずそのプログラムのネットワーク設定を確認し、そのうえで仮想ネットワークアダプター方式へ切り替えるか判断します。
サブスクリプションは更新されたが、現在のノードが再読み込みされていない
サブスクリプションURLは、ノードとルールの設定をクライアントへ提供します。サブスクリプションをインポートまたは更新した後、一部のクライアントでは新しい設定を使うために、ノードを再選択して再接続する必要があります。サブスクリプションの更新日時が変わっただけでは、現在のセッションが更新後の出口へ切り替わったことは証明できません。
ネットワーク切り替え後も古いセッションが残っている
端末をあるネットワークから別のネットワークへ切り替えると、既存の接続が切断されたり、復旧待ちになったりすることがあります。クライアントの画面がすぐに更新されるとは限りません。この場合は手動で切断してから再接続し、出口とDNSをもう一度確認してください。切り替え前のセッションを根拠に判断しないようにします。
WebRTCの結果を誤って解釈している
ブラウザーのWebRTCテストには、ローカルネットワークの候補アドレス、秘匿処理された候補名、またはパブリック候補アドレスが表示されることがあります。ローカルのプライベートアドレスが見えたからといって、パブリック出口が変わっていないとは限りません。ローカルネットワークアドレスとインターネットから到達可能なパブリックアドレスを区別し、WebRTCの結果を通常の出口確認と合わせて判断してください。
繰り返し実行できる確認チェックリスト
初回設定、クライアントの切り替え、ルールベースルーティングの変更、ネットワーク変更の後は、同じ順序で再確認できます。固定した手順には、ノードを何度も切り替えて運任せにするのではなく、変化がどの層で起きたかをすばやく特定できる利点があります。
- 経路を切断し、元のパブリック出口とDNSの名前解決経路を記録する。
- 対象ノードに接続し、クライアントのハンドシェイクとシステムへの引き継ぎが完了したことを確認する。
- パブリック出口をもう一度確認し、アドレス、ネットワーク事業者、想定地域を照合する。
- DNSテストを実行し、元のネットワークのリゾルバーが明らかに使われていないか確認する。
- ブラウザー、対象アプリ、必要なコマンドラインツールからそれぞれリクエストを送る。
- ルールモードで問題がある場合は、グローバルモードと比較し、実際に一致したルールを確認する。
- ネットワーク環境または設定が変わったら、一連の確認を最初から実行する。
出口が変わらない場合は、システムプロキシ、仮想ネットワークアダプター、ルーティングから確認します。一部のアプリだけ変わらない場合は、アプリ独自の設定とアプリごとのルールから確認します。出口は正しいのにドメインアクセスに問題がある場合は、DNS、ブラウザーの暗号化DNS、ルールの名前解決方式から確認します。プロトコルを頻繁に変えるより、層ごとに調べるほうが原因を見つけやすくなります。