この記事の要点

Shadowrocketは接続済みでConnectivity Testにも結果が表示されるのに、ドメインにアクセスできない、または一部のWebページが開かない場合に向けた内容です。まずDNS解決、ルール選択、通信経路を切り分け、Settings → DNSとConfig内の上書き設定を確認します。変更は一度に1項目に絞り、同じドメインを異なるネットワークで試した結果から原因の範囲を判断してください。自分で利用しているサービスと設定があることを前提としており、接続先の入手方法は扱いません。

1. 遅延が正常でもDNSが正常とは限らない理由

ShadowrocketのConnectivity Testは、選択したテスト方式に応じて通信状態を確認します。表示される時間が示すのは、そのテストで使われた対象と経路だけです。テストに成功しても、すべてのWebサイトのドメインが解決できること、すべての通信経路でアクセスできること、HTTPSのハンドシェイクが必ず成功することは分かりません。遅延の数値だけで判断せず、テスト方式と対象を確認しましょう。

Webページを開くには、ドメインに対応するアドレスの取得、アクセス方針の選択、接続の確立、TLSハンドシェイクが必要です。以下は問題を切り分けるための論理的な整理であり、クライアント内部の処理が常にこの順番で進むという意味ではありません。たとえば、ドメインルールはIPアドレスの取得前に判定できる一方、IPルールの適用には名前解決が必要な場合があります。

ドメインへのリクエスト アドレスの名前解決 ポリシーの選択 接続の確立 ページの応答

DNSの問題かどうかを判断するには、名前解決に失敗した証拠を確認します。ブラウザーにサーバーが見つからないと明示される場合や、システムの検索ツールでアドレスを取得できない場合は、「ページが読み込み中のまま」という状況よりDNSの問題を特定しやすくなります。アドレスを取得できているのに接続や証明書の検証で失敗する場合は、通信経路、ルール、システム時刻、またはWebサイト自体を確認してください。

2. 現在の設定を記録してから、3つの条件で比較する

変更する前に、Home → Global Routingの現在の選択肢、使用中のサーバー、Configで有効な設定、Settings → DNSの現在値を記録してください。Configを複製して調査用のコピーを作り、唯一の設定ファイルを続けて変更しないようにします。サブスクリプションの内容は更新時に上書きされる場合があるため、手動設定とサービス提供元の設定も区別してください。

  1. 同じネットワークで比較:現在のWi-Fiで、通常は直接アクセスできるサイトと問題が起きているサイトをそれぞれ試します。「開かない」だけでなく、エラーメッセージ全文を記録してください。接続を切って比較する場合は、直接アクセスが許可されているサイトだけを試し、Settings → On Demandの条件によって自動再接続されないか確認します。
  2. 別のネットワークで比較:サーバー、Config、DNSは変えずに、Wi-Fiからモバイル通信に切り替えるか、利用可能と分かっている別のネットワークで試します。特定のWi-Fiだけで失敗する場合は、そのネットワークの認証ページ、DNS制限、ルーター設定を優先して確認してください。
  3. 接続モードを変えて比較:元の選択肢を記録したうえで、Home → Global Routingで一時的にConfigとProxyを比較します。Proxyは一般的なWeb通信がプロキシ経由で出ていく場合の比較に使いますが、すべてのDNSリクエストが自動的にプロキシ経由になるわけではありません。確認後は元の選択肢に戻してください。
Global Routingの選択肢トラブル対処での意味注意点
Config現在のConfigに設定されたルールに従ってポリシーを選択最初に一致するルールと、そのルールに設定されたポリシーを確認
Proxy一般的なWeb通信がプロキシ経由で出ていく場合の状態を比較DNSリクエストの実際の通信経路は判断できない
Direct直接接続した場合の状態を比較接続先サイトが現在のネットワークから直接アクセスできる必要がある
Scene設定済みのシーンに応じたロジックを使用シーンの内容を先に確認し、固定のプロキシポリシーとみなさない

判断の目安:Configだけで失敗する場合は、まずルールの違いを確認

同じネットワーク、同じサーバー、同じドメインでProxyでは成功し、Configでは失敗する場合、まずConfigのルール適用状況とDNSの上書き設定を確認してください。プロトコル、リゾルバー、サーバーを同時に変更すると、どの変更が有効だったのか判断できなくなります。

3. Settings → DNS:アドレス、初期値、推奨設定

Settings → DNSを開き、現在の設定がシステムの名前解決を使っているか、カスタムリゾルバーを使っているかを確認します。すべての端末で共通の「初期アドレス」があるわけではありません。プラットフォーム、既存の設定、読み込んだConfigによって有効な値は変わることがあります。端末の現在の画面と有効なConfigを基準にしてください。カスタム設定を使っている場合は、先に元の値を保存してから1項目ずつ比較します。

リゾルバーのアドレスは問い合わせ先を指定し、通信方式は問い合わせの送信方法を決めます。ドメイン別設定は、特定のドメインに別の名前解決経路を使うかどうかを決めます。この3つは分けて確認してください。リゾルバーを変更しても、誤ったPROXYポリシーが自動で直るわけではなく、到達不能なプロキシサーバーが接続可能になるわけでもありません。

53
従来型DNSで使用されるポート。UDPとTCPが関係します
443
DNS over HTTPSで一般的に使用されるポート
853
DNS over TLSの標準ポート
確認項目意味と現在の設定の確認トラブル対処での推奨値または操作
システムDNS現在のネットワークから提供される名前解決情報を使用します。結果はWi-Fiやモバイル通信によって変わることがあります比較の基準として使用します。イントラネットのドメインには、ネットワーク管理者が指定したリゾルバーを優先してください
カスタムDNSアドレスユーザーが問い合わせ先を指定します。読み込んだConfig内のアドレスが現在のネットワークから到達できるとは限りません到達可能と分かっているリゾルバーを1つずつ試します。たとえば 1.1.1.1 または 8.8.8.8 を個別に比較します。どちらもあらゆる環境で最適な値というわけではありません
暗号化DNSDNS問い合わせ自体に暗号化接続が必要です。接続先サーバーのドメインも、事前の名前解決が必要な場合がありますサービス提供元が指定したアドレスと形式をそのまま使います。タイムアウトする場合は、ポート、起動時の名前解決、通信経路を確認してください
ドメイン別DNSとhosts特定のドメインが共通リゾルバーを経由しない場合や、静的な対応付けが使われる場合があります調査用のコピーで対象ドメインの上書き設定を外して比較します。問題と関係のないイントラネット設定は削除しないでください

DNSアドレスを複数追加しても、自動的に問題が解決するわけではありません。実装によって問い合わせやフォールバックの仕組みは異なり、リストの2番目のアドレスが1番目のタイムアウト後に必ず使われるとは限りません。まずリゾルバーを1つに絞って到達性を確認し、必要に応じて設定を戻してください。

暗号化DNSのサーバーにドメイン名が使われ、その名前の解決にも、まだ接続できていない同じサービスが必要な場合、起動時に依存関係の問題が起きることがあります。証明書検証を無効にするのではなく、設定の提供元が指定する起動時の名前解決やルーティング設定を確認してください。暗号化DNSのアドレスを安易にIPアドレスへ置き換えると、証明書のホスト名検証に失敗するおそれがあります。

4. Config内のDNS上書き設定とルールの順序を確認

Settings → DNSを変更しても状況が変わらない場合は、Configに戻り、有効な設定の [General]、[Host]、[Rule]を確認します。DNS関連の設定、ドメインの対応付け、ルールが組み合わさって実際の通信経路を変えることがあります。設定画面に表示されたアドレスが、そのドメインで最終的に使われるリゾルバーだとは限りません。Configと、利用できるリクエスト記録を照らし合わせて確認してください。

ルールは上から順に評価され、一致した時点で対応するポリシーが使われます。以下は順序の例であり、既存のConfigと置き換えられる完全な設定ファイルではありません。PROXYは現在のConfigで利用できるポリシーまたはポリシーグループに対応させ、例示のドメインは実際に調査する対象へ置き換えてください。

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

ドメインにREJECTが適用されている場合は、意図して有効にしたフィルタールールか確認してください。DIRECTが適用されてアクセスできず、プロキシ経由ならアクセスできる場合は、DNS全体を変更する前に対象ドメインのポリシーを調整します。社内ドメインでは、社内DNSとDIRECTの組み合わせが必要なことがあります。パブリックリゾルバーでは社内ドメインの名前解決を代替できません。

5. エラーメッセージから名前解決、接続、証明書の問題を切り分ける

以下はブラウザーやコマンドラインツールに表示されることがあるエラーメッセージの原文であり、Shadowrocketの全プラットフォームで共通の表示ではありません。エラーが発生したアプリ、対象ドメイン、発生時刻を記録し、クライアントのリクエスト記録と照らし合わせてください。ブラウザーに表示されるエラーをすべてDNSの失敗と判断しないようにします。

エラー:ERR_NAME_NOT_RESOLVED

原因と対処:ブラウザーが有効な名前解決結果を取得できていません。ドメインの入力ミスとローカルの対応付けを確認し、同じドメインをシステムDNSと到達可能と分かっているカスタムリゾルバーの1つで比較します。

エラー:DNS_PROBE_FINISHED_NXDOMAIN

原因と対処:ブラウザーの名前解決診断で、ドメインが存在しないか、有効な結果を取得できないことが示されています。ドメイン名全体を確認し、個別のリゾルバーからの応答を比較してください。どのリゾルバーもNXDOMAINを返す場合は、サーバーを何度も切り替えるのではなく、ドメインまたはサービスの管理者にDNSレコードを確認します。

エラー:connection timed out; no servers could be reached

原因と対処:コマンドラインからのDNS問い合わせに対し、制限時間内にサーバーから応答がありません。問い合わせ先、現在のネットワークからリゾルバーまでの経路、関連するポート制限を確認し、別のネットワークでも再試行してください。

エラー:ERR_CONNECTION_TIMED_OUT

原因と対処:接続段階でタイムアウトしています。この表示だけではDNSの問題と断定できません。まずアドレスを取得できているか確認し、実際に適用されたDIRECTまたはPROXYの経路を調べてください。

エラー:ERR_CERT_DATE_INVALID

原因と対処:証明書の有効期間の確認に失敗しています。システム時刻またはWebサイトの証明書に問題がある可能性があります。端末の時刻を合わせ、Webサイトの状態を確認してください。証明書検証を無効にして対処しないでください。

Mac、Windows、Linuxでは、システム標準のnslookupを比較用に利用できます。以下のexample.comは例示用のドメインなので、実際に失敗しているドメインに置き換えてください。1つ目のコマンドはツールが現在使用する既定のリゾルバーを使い、2つ目はパブリックリゾルバーを指定します。

nslookup example.com
nslookup example.com 1.1.1.1

応答に表示される問い合わせ先サーバー、アドレスの有無、タイムアウトやNXDOMAINの発生を確認してください。このツールではブラウザー独自の暗号化DNSやShadowrocketのすべてのドメインポリシーを再現できるとは限りません。そのため、比較の手がかりにはなりますが、クライアント内部の問い合わせ結果の代わりにはなりません。ブラウザーでセキュアDNSを個別に有効にしている場合は、その状態も記録し、条件をそろえてシステムの名前解決を使った場合と比較してください。

6. 変更後の再テストと元に戻す手順

DNSの応答は、クライアント、システム、ブラウザーそれぞれでキャッシュされることがあります。設定を変更した後も、古い接続や応答が結果に影響する場合があるため、Webページを一度更新しただけで変更が無効だと判断しないでください。キャッシュを消す目的でサブスクリプションを何度も更新するのも避けましょう。更新によってサーバーや設定も変わり、条件をそろえた比較ができなくなることがあります。

  1. 変更を1項目保存:現在有効なConfigが切り替わっていないことを確認し、DNSまたはルールの変更前後の値を記録します。
  2. 接続を再確立:一時的に接続が切れても問題ないことを確認してから、Homeの接続スイッチを一度オフにし、再びオンにします。Settings → On Demandによる自動再接続にも注意してください。
  3. リクエストを再実行:問題のページを閉じて開き直し、必要に応じてブラウザーも終了して再起動します。プライベートブラウズは一部のサイトデータの影響を調べるのに役立ちますが、システムDNSのキャッシュが消えるとは限りません。
  4. 同じ対象を再テスト:同じドメイン、ネットワーク、Global Routingの選択肢を使い、エラーの種類が変わったか比較します。通常は問題なく開くサイトも引き続き正常に表示されるか確認してください。
  5. 変更を維持するか元に戻す:結果を再現できる場合に限り変更を維持します。改善しなければ元の値に戻して次の項目を確認し、未検証の変更を重ねないでください。

結論:名前解決エラーから接続タイムアウトに変わったら、通信経路を確認

再テストでアドレスを取得できるようになったのに接続がタイムアウトする場合は、DNSアドレスを追加し続けるのではなく、ルールの適用状況と実際の通信経路を確認してください。名前解決の成功は、アクセスに必要な工程の一つにすぎません。

7. DNSのトラブル対処でよくある質問

遅延の数値は出るのに、どのWebページも開かないのはなぜ?

まずConnectivity Testのテスト方式と対象を確認し、次にHomeの接続状態とGlobal Routingを確認してください。Settings → DNSで現在の名前解決方式を記録し、到達可能と分かっているリゾルバーを1つ使って比較します。現在のWi-Fiで、システムブラウザーから認証ページを開く必要がないかも確認してください。

パブリックDNSに変更したら、社内サイトが開かなくなったのはなぜ?

パブリックリゾルバーには、通常、社内ドメインのレコードがありません。ネットワーク管理者が指定した社内DNSに戻し、対象ドメインの個別DNS設定とDIRECT経路を確認してください。社外サイトの問題を解決するために、社内ドメインのDNSまで一律に上書きしないようにします。

Shadowrocketを有効にしたときだけ失敗する場合、再インストールが必要?

まずConfigを保存し、Home → Global RoutingでConfigとProxyを比較します。次にConfig内のDNS上書き設定、hosts、最初に一致するルールを確認してください。再インストールしても、どの設定が原因だったかは分かりません。また、調査に必要な元の状態が失われることがあります。

DNSを直すには、別のプロトコルに変更する必要がある?

Shadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuardでは接続パラメーターが異なりますが、DNSの問題はプロトコルを切り替えるだけでは解決できません。まず名前解決が成功しているか確認してください。特定の通信経路に到達できない証拠がある場合に限り、自分が利用しているサービスの提供元から案内された有効なパラメーターと照らし合わせます。プロトコル名だけを変更しても解決にはなりません。

サブスクリプション更新直後に問題が起きた場合、サービス提供元には何を伝えればいい?

失敗するドメイン、エラーメッセージの原文、ネットワークの種類、Global Routingの選択肢、更新前後のDNSとルールの差分を伝えてください。スクリーンショットやログを送る前に、サブスクリプションの完全なURL、トークン、パスワード、個人のアクセス履歴を削除します。認証情報を含むConfigファイルを公開しないでください。

詳しくはルールマニュアルで適用順を確認するか、接続に関する説明で名前解決と通信経路の問題を切り分けてください。当サイトでは接続先やサブスクリプションの提供・販売・推奨は行っていません。アカウントの状態やサーバー設定については、ご利用中のサービス提供元にお問い合わせください。

お使いのデバイス向けShadowrocketを入手して、設定を確認

iPhone / iPad版はApp Storeからの買い切りで、価格は$2.99です。Mac(Appleシリコン / Intel)/ Windows / Android / Linux版は無料です。iPhone / iPadのシステム要件はApp Storeの掲載内容をご確認ください。ダウンロードガイドでは、プラットフォーム別の入手・インストール手順を案内しています。すでにクライアントをお持ちの場合は、クイックスタートで設定の読み込み手順を確認できます。

クライアントの買い切り購入と接続サービスの利用料金は別です。Shadowrocketはクローズドソースの商用アプリで、クライアントの入手とユーザーが利用する接続サービスはそれぞれ別に管理されます。