この記事のポイント

Shadowrocket の接続スイッチをオンにすると確認できるのは、端末側の接続状態だけです。リモートサーバーや名前解決、接続先のWebサイトが利用できるとは限りません。自身のサービス情報とサブスクリプションをすでにお持ちで、Webページが開かない場合に役立つ内容です。まず通常のネットワーク接続を確認し、サーバー、モード、DNS、ルールの順に原因を絞り込みます。一度に変更する設定は一つだけにし、最後に普段の設定へ戻してください。

1. 通常のネットワークとプロキシ経路の問題を切り分ける

すぐにサブスクリプションを削除したり、すべての設定をリセットしたりしないでください。まず Home で選択中のサーバーと Global Routing のモードを、Config で使用中の設定ファイルを記録します。同じ「Webページが開かない」状態でも原因はさまざまです。現状を残しておけば、どの変更が効果をもたらしたか確認できます。

システムに接続済みと表示されても、通常わかるのはローカルのVPNトンネルが開始したことまでです。リモートサーバーが接続を受け付けるか、認証情報が有効か、DNSが応答するかは個別に確認する必要があります。普段アクセスでき、ログイン不要のWebページを使ってテストし、日時とエラーの内容を記録してください。

  1. 現在の状態を記録

    Home で選択中のサーバーと Global Routing、Config で使用中の設定を記録します。元の設定を保存してから変更し、最初からあった問題と変更後の影響を混同しないようにします。

  2. 接続を切る

    Home の接続スイッチをオフにします。接続が自動で再開する場合は Settings → On Demand を確認し、条件を一時的に無効にしてから、接続が確実に切れたことを確認します。

  3. 直接接続を確認

    Safari で、直接接続できることがわかっているWebページを開きます。それでも開けない場合は、ルールを変更する前に、現在のWi-Fiでのログイン認証、モバイルデータ通信の許可、通常のネットワーク接続を確認してください。

  4. 接続を戻してテスト

    接続を再びオンにし、同じWebページで再テストします。テスト中はネットワーク、サーバー、接続先を変えず、1回につき設定を一つだけ変更してください。

  5. 別のネットワークでも確認

    可能であればWi-Fiとモバイルデータ通信を切り替え、同じ接続先をテストします。片方のネットワークだけで失敗する場合は、そのネットワークの名前解決、ポート、通信制限を優先して確認してください。

2. サーバーのアドレス・ポート・プロトコル設定を確認

Home で実際に選択されているサーバーを確認します。サブスクリプションのグループ名だけを見て判断しないでください。そのサーバーの編集画面を開き、手元にあるサービス情報と Address、Port、Type、認証項目を一つずつ照合します。サブスクリプションの更新に成功したことが示すのは、内容を取得して解析できたことだけです。サーバーごとの通信が現在可能かどうかは別途確認してください。

Shadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuard の設定項目は相互に置き換えられません。サーバーで使われているプロトコルに合わせて項目を確認してください。TLSを使う場合はサーバー名と証明書の要件も、トランスポート層の設定がある場合はパスやホスト名なども確認します。Type を手当たり次第に変更して「修復」しようとしないでください。

接続ログに次のようなメッセージがある場合は、発生した段階に応じて原因を調べます。プロトコルやエラーの発生元によって、接頭辞や追加情報が付くことがあります。一つの単語だけで判断せず、ログ全体を保存してください。

エラー:connection refused

原因:接続先または途中の機器が接続を拒否しています。ポートの不一致や、サービスが待ち受けていない場合によく発生します。

対処:Address と Port を確認し、自身のサービス提供元に該当ポートが現在待ち受けているか問い合わせてください。

エラー:i/o timeout

原因:ネットワーク上の読み書きが所定の時間内に完了しませんでした。このエラーだけでは、通信の破棄、サーバーの無応答、その後のハンドシェイク停止のどれかを特定できません。

対処:タイムアウトした接続先と段階を記録します。設定を変えずに別のネットワークで再テストし、同じサブスクリプションにある、すでに利用している別のサーバーとも比較してください。

エラー:no such host

原因:今回の名前解決で有効なホストアドレスを取得できませんでした。サーバーのドメイン名の入力ミスか、名前解決経路の異常が考えられます。

対処:まずエラーに表示されたドメイン名を確認してください。サーバーアドレスの名前解決に失敗している場合は、先にそのアドレスを解決できるようにしてからWebサイトのドメインをテストします。

3. Global Routing で問題の範囲を絞る

Home → Global Routing を開き、現在のモードを確認します。Direct、Proxy、Config、Scene はそれぞれ異なる処理方法であり、接続成功度を示す4段階ではありません。テスト前に元のモードを記録し、一時的に切り替えたら、テスト後に元へ戻してください。

モード主な動作トラブル対処での用途
Direct直接接続で処理通常の直接接続経路を確認できます。プロキシサーバーの利用可否を検証する用途ではありません。
Proxyプロキシ経由で処理現在のプロキシ経路を一時的に確認し、設定ファイルのルールによる振り分けの影響を減らします。
Config現在の設定ファイルのルールに従って処理ルールの順序、ポリシー名、最後のフォールバックを確認するのに適しています。
Scene設定済みのシーン条件に従って処理現在のネットワークでどのシーンが適用され、そのシーンでどの設定が使われているか確認します。

同じサーバーとURLを使って比較します。Proxy では開けて Config では開けない場合は、ルールやポリシーを優先して確認してください。ただし、モードを切り替えるとリクエスト経路や名前解決の動作も変わることがあります。Proxy でも失敗する場合は、サーバー設定とDNSに戻って確認します。ドメインルールを追加して何度も試すだけでは解決しません。

結論:経路を固定してからルールを変更

同じ接続先が固定したプロキシ経路では利用でき、Config では安定して失敗する場合に限り、振り分けルールを優先して調べます。どちらのモードでも失敗する場合は、ルールを変更せず、両方で共通して使われるサーバーと名前解決経路を確認してください。

4. DNSを確認:どのドメインの名前解決に失敗したかを特定

DNSの問題には少なくとも2つの段階があります。リモートサーバーへの接続時にはサーバーのドメイン名を、Webページへのアクセス時にはWebサイトのドメイン名を解決します。前者に失敗するとプロキシ経路を確立できず、後者に失敗すると接続済みでもWebページが長時間読み込み中になることがあります。DNSサーバーを何度も変更するより、エラーに表示されたドメイン名を確認するほうが効果的です。

Settings → DNS でアプリ側の名前解決設定を確認するとともに、現在の Config ファイルにDNS関連の設定が含まれていないか確認します。現在の値と設定元を記録してください。Settings だけを変更しても、使用中の設定ファイルに別の名前解決要件が残っている場合があります。どの設定が実際に適用されるかは、リクエスト記録と合わせて確認してください。

53
従来のDNSで一般的に使われる UDP / TCP ポート
853
DNS over TLS の標準ポート
443
DNS over HTTPS で一般的に使われる HTTPS ポート

5. ルールの順序、ポリシー、FINAL を確認

Config で選択中の設定ファイルを確認し、その中のルールを調べます。ルールは通常、上から順に照合され、先に一致したルールによって後続のルールがリクエストを処理できるかが決まります。ファイルの末尾にドメインルールを追加しても、前のルールですでに処理された通信には影響しない場合があります。

以下の例は構文を確認するためのもので、現在の設定を置き換える汎用的な推奨設定ではありません。example.com は例示用ドメイン、192.0.2.0/24 はドキュメント用の例示ネットワークです。実際のトラブル対処では、失敗したドメイン、リクエスト記録、自身のポリシーを基に確認してください。

[Rule]
DOMAIN-SUFFIX,example.com,DIRECT
IP-CIDR,192.0.2.0/24,PROXY,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY

設定でカスタムポリシーグループを参照している場合は、グループ内で現在選択されている項目も確認してください。ルールがグループ名に一致しても、そのグループが必ずプロキシを使うとは限りません。グループ内で直接接続、または現在利用できないサーバーが選択されている場合があります。リクエスト記録を使い、「接続先ドメイン → 一致したルール → ポリシーグループ → 実際の出口」の順に確認するほうが、ルールの記述だけを見るより確実です。

6. よくある質問とトラブル対処の仕上げ

遅延が表示されるのに、Webページが開かないのはなぜ?

まず Connectivity Test のテスト方式を確認してください。TCP接続の確立やテスト先からの応答で確認できるのは、通信経路の一部だけです。実際に失敗したWebサイトで再テストし、認証、DNS、ルールの適用状況を確認してください。遅延の数値だけで、すべてのWebサイトが使えると判断することはできません。

Webサイトが1つだけ開かない場合、サブスクリプションを再読み込みすべき?

まず同じサーバーでほかのWebページを開き、次にそのサイトで失敗したリクエストのドメインとポリシーを確認してください。Proxy では使えて Config では失敗する場合は、そのドメインのルールと関連リソースを優先して確認します。サブスクリプションを再読み込みしても、設定ファイル内のドメイン振り分けの誤りは通常修正されません。

接続を切っても自動で再接続する場合、直接接続テストはどうすればよい?

Settings → On Demand で該当する接続条件を一時的に無効にします。その後 Home に戻って接続をオフにし、状態を確認してください。比較テストが終わったら元の設定に戻します。On Demand による再接続を、手動で切り替えた設定が反映されなかったと誤解しないようにしてください。

サブスクリプションを更新したのに、元のサーバーが使えないのはなぜ?

更新によって一覧の内容が最新になるだけです。Home に戻り、実際に選択中の項目を確認して、そのアドレス、ポート、認証情報に変更がないか確認してください。一覧の内容が自身の有効なサービス情報と異なる場合は、すでに利用しているサービスの提供元に確認します。同じリンクを何度も読み込んで重複項目を作らないでください。

接続が回復したら、テストのためだけに変更した設定を元に戻します。普段使う Global Routing に戻し、Config で正しいファイルが選択されていることを確認し、必要な On Demand 条件も復元してください。その後、直接接続するWebページ、プロキシ経由で使うWebページ、以前失敗した具体的な機能を再テストします。ホームページだけ確認して、ログインや画像のリクエストを見落とさないようにしてください。