At a glance

Use this guide when Shadowrocket is connected and Connectivity Test returns a result, but domains fail to resolve or some websites won’t load. First distinguish DNS resolution from rule selection and outbound connectivity, then check Settings → DNS and any overrides in Config. Change one setting at a time, and compare results for the same domain across networks to narrow down the cause. This guide assumes you already have a service provider and configuration; it does not cover how to obtain a connection.

1. Why Normal Latency Doesn’t Prove DNS Is Working

Shadowrocket’s Connectivity Test checks connectivity for the selected test method. The time shown reflects only the target and route involved in that test. Even a successful result doesn’t prove that every website’s domain can be resolved, every outbound route is reachable, or every HTTPS handshake will succeed. Check the test method and target before interpreting the result; don’t rely on a latency number alone.

Loading a web page also requires resolving its domain to an address, selecting a routing policy, establishing a connection, and completing a TLS handshake. The steps below are a troubleshooting model, not a claim that the client always processes everything in strict sequence. For example, a domain rule can match before an IP is resolved, while an IP-based rule may require a resolved address.

Domain request Address resolution Policy selection Connection established Page response

To identify a DNS problem, look for evidence that resolution failed. A browser message saying it can’t find the server, or a system lookup tool that returns no address, is more conclusive than a page that simply keeps loading. If an address was resolved but the connection or certificate check failed, investigate the outbound route, rules, system time, or the website itself.

2. Record the Current Setup, Then Run Three Comparisons

Before changing anything, note the current Home → Global Routing selection, the server in use, the active configuration in Config, and the current values in Settings → DNS. Duplicate the configuration for troubleshooting instead of repeatedly editing your only copy. Subscription content may be overwritten during an update, so distinguish your manual settings from those supplied by your provider.

  1. Compare on the same network: On the current Wi-Fi, test one website that normally works and the site that’s failing. Record the full error, not just “won’t load.” If you disconnect for comparison, test only sites that are allowed to connect directly, and check whether Settings → On Demand reconnects under its configured conditions.
  2. Compare across networks: Keep the server, Config, and DNS settings unchanged, then switch from Wi-Fi to cellular or to another known-working network. If the problem occurs only on one Wi-Fi network, first check its sign-in page, DNS restrictions, and router settings.
  3. Compare routing modes: Note the original selection, then temporarily compare Config and Proxy under Home → Global Routing. Proxy helps compare how ordinary web traffic behaves when sent through the proxy, but it doesn’t mean all DNS requests automatically use the proxy. Restore the original selection when you’re done.
Global Routing optionWhat it tells youKeep in mind
ConfigSelect a policy using the current configuration’s rulesCheck the first matching rule and its assigned policy
ProxyCompare how ordinary web traffic behaves when routed through the proxyThis does not confirm the actual route used for DNS requests
DirectCompare behavior when connecting directlyThe destination must allow direct access from the current network
SceneUse the configured scene logicCheck the scene’s contents first; don’t treat it as a fixed proxy policy

Diagnosis: If only Config fails, check for rule differences first

If the same domain works on Proxy but fails on Config using the same network and server, first check which Config rule matches and whether DNS is overridden. Don’t change the protocol, resolver, and server all at once, or you won’t know which change made a difference.

3. Settings → DNS: Addresses, Defaults, and Recommended Values

Open Settings → DNS and check whether it currently uses the system resolver or a custom one. There is no single default address that applies to every device: the active value can depend on the platform, existing settings, and imported configuration. Use the values shown on your device and in the active Config as your reference. If you’ve set a custom value, save it before testing one change at a time.

The resolver address determines where queries go; the transport determines how they’re sent; and per-domain settings determine whether a specific domain uses a different resolution path. Check these separately. Changing the resolver won’t fix an incorrect PROXY policy or restore a connection to an unreachable proxy server.

53
Common port for traditional DNS over UDP and TCP
443
Commonly used port for DNS over HTTPS
853
Default port for DNS over TLS
What to checkWhat it means and how to verify the current settingRecommended troubleshooting value or action
System DNSUses resolver information provided by the current network; results may differ between Wi-Fi and cellularUse as a baseline comparison; for internal domains, prefer the resolver specified by your network administrator
Custom DNS addressQueries the target you specify; don’t assume an address in an imported configuration is reachable on the current networkTest one known-reachable resolver at a time. For example, compare 1.1.1.1 or 8.8.8.8 individually; neither is a universal best choice
Encrypted DNSThe query itself requires an encrypted connection; the server’s hostname may also need to be resolved firstKeep the complete address and format provided by the service. If queries time out, check the port, bootstrap resolution, and outbound route
Per-domain DNS and hostsSpecific domains may bypass the general resolver or use a static mapping directlyIn a troubleshooting copy, remove the override for the affected domain and compare results; don’t remove unrelated internal network settings

Adding multiple DNS addresses does not automatically fix anything. Query and fallback behavior varies by implementation, so don’t assume the second address will take over whenever the first times out. First confirm that a single resolver is reachable, then restore settings as needed.

If the encrypted DNS server is specified by hostname, but resolving that hostname depends on the same service that hasn’t connected yet, a startup dependency issue can occur. Check the bootstrap resolution and routing requirements from your configuration provider rather than disabling certificate verification. Don’t casually replace the hostname in an encrypted DNS address with an IP; doing so may break certificate name matching.

4. Check DNS Overrides and Rule Order in Config

If changing only Settings → DNS makes no difference, return to Config and inspect [General], [Host], and [Rule] in the active configuration. DNS options, domain mappings, and rules can all change the route a request takes. Don’t assume the address shown in Settings is the resolver ultimately used for a domain; confirm against the configuration and any available request records.

Rules are evaluated from top to bottom, and the matching rule’s policy is applied. The examples below demonstrate order only; they are not a complete configuration to replace your existing file. PROXY must refer to a policy or policy group available in your current configuration, and the example domain must be replaced with the domain you’re troubleshooting.

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

If a domain matches REJECT, check whether the filter rule was intentionally enabled. If it matches DIRECT and fails while proxying works, adjust the policy for that domain; you don’t need to change all DNS settings first. Company intranet domains often require internal DNS together with DIRECT. A public resolver cannot replace an internal domain service.

5. Use the Exact Error to Distinguish DNS, Connection, and Certificate Problems

The messages below are examples that browsers or command-line tools may display; they are not fixed messages used on every Shadowrocket platform. Record the app showing the error, the target domain, and when it occurred, then compare with the client’s request records. Not every browser error is a DNS failure.

Error: ERR_NAME_NOT_RESOLVED

Cause and fix: The browser didn’t get a usable DNS result. First check the domain spelling and local mappings, then compare the same domain using system DNS and one known-reachable custom resolver.

Error: DNS_PROBE_FINISHED_NXDOMAIN

Cause and fix: The browser’s DNS diagnostics indicate that the domain doesn’t exist or no valid result was returned. Check the full domain and compare responses from independent resolvers. If they all return NXDOMAIN, confirm the records with the domain owner or service operator instead of repeatedly switching servers.

Error: connection timed out; no servers could be reached

Cause and fix: The command-line DNS query did not receive a response before timing out. Check the query target, the route from the current network to the resolver, and any port restrictions, then test again on another network.

Error: ERR_CONNECTION_TIMED_OUT

Cause and fix: The connection timed out. This message alone doesn’t confirm a DNS problem. First check whether an address was resolved, then inspect the actual DIRECT or PROXY route being used.

Error: ERR_CERT_DATE_INVALID

Cause and fix: The certificate validity check failed, possibly because of the system time or the website’s certificate. Correct the device’s clock and check the website’s status; don’t disable certificate verification to work around the error.

On Mac, Windows, or Linux, you can use the built-in nslookup utility for an additional comparison. example.com below is a sample domain; replace it with the domain that’s actually failing. The first command queries the default resolver used by the tool; the second specifies a public resolver:

nslookup example.com
nslookup example.com 1.1.1.1

Check the response for the queried server, whether an address was returned, and any timeout or NXDOMAIN result. This tool may not reproduce a browser’s built-in encrypted DNS or all of Shadowrocket’s domain policies, so use it as supporting evidence, not as a substitute for the client’s own query results. If the browser has Secure DNS enabled separately, note that setting too, then compare with system resolution under controlled conditions.

6. Retest After Changes, Then Restore Settings If Needed

DNS responses may be cached separately by the client, operating system, and browser. Old connections or responses can affect results after a setting changes, so refreshing a page once isn’t enough to conclude that the change had no effect. Don’t repeatedly update a subscription to clear caches either: an update may also change the server and configuration, making comparisons inconclusive.

  1. Save one change: Confirm that the active Config hasn’t changed, and note the DNS or rule values before and after the change.
  2. Reconnect: If a brief interruption is acceptable, turn the connection switch on Home off and back on. Check whether Settings → On Demand reconnects automatically.
  3. Make a fresh request: Close the affected page and reopen it; if needed, quit and relaunch the browser. A private window can help rule out some site data, but it won’t necessarily clear the system DNS cache.
  4. Retest the same target: Use the same domain, network, and Global Routing option. Check whether the error changed, then verify that sites that worked before still work.
  5. Keep or revert: Keep a change only if the result is reproducible. If there’s no improvement, restore the original value and move on to the next check; don’t stack unverified changes.

Bottom line: If a DNS error becomes a connection timeout, check the outbound route

If a retest now resolves the address but the connection still times out, check the matching rule and actual outbound route instead of adding more DNS addresses. Successful resolution is only one step in reaching a website.

7. Common DNS Troubleshooting Questions

Why can I see a latency result but still not load any websites?

First check the Connectivity Test method and target, then verify the connection status on Home and the Global Routing selection. In Settings → DNS, note the current resolution method and compare it with one known-reachable resolver. Also check whether the current Wi-Fi requires sign-in through a system browser.

Why did our company intranet stop loading after switching to public DNS?

Public resolvers usually don’t have records for internal company domains. Restore the internal DNS specified by your network administrator, and check the domain-specific resolver and DIRECT route. Don’t override all internal DNS just to fix an external website.

Websites fail only when Shadowrocket is on. Should I reinstall it?

Keep your configuration and compare Config with Proxy under Home → Global Routing. Then check DNS overrides, hosts, and the first matching rule in Config. Reinstalling won’t show which setting caused the problem and may remove the original state needed for troubleshooting.

Do I need to switch protocols to fix DNS?

Shadowsocks, VMess, VLESS, Trojan, Hysteria2, and WireGuard use different connection parameters, but switching protocols alone won’t troubleshoot DNS. First confirm whether resolution succeeds. Only if evidence points to an unreachable transport route should you compare the valid parameters provided by your service provider; changing the protocol name alone is not enough.

The problem started right after a subscription update. What should I send my provider?

Share the failing domain, exact error message, network type, Global Routing selection, and the DNS and rule differences before and after the update. Before sending screenshots or logs, remove the full subscription URL, tokens, passwords, and personal browsing records. Don’t share configuration files that contain credentials.

For more help, see the Rules Manual to check the matching order, or the Connection Troubleshooting Guide to distinguish DNS from outbound issues. This site does not provide, sell, or recommend servers or subscriptions. For account status and server-side settings, contact your own service provider.

Get Shadowrocket for your device and continue troubleshooting your configuration

The iPhone and iPad app is a one-time $2.99 purchase on the App Store. The Mac (Apple Silicon and Intel), Windows, Android, and Linux versions are free. For iPhone and iPad, check the App Store page for the current system requirements. The download guide lists how to get and install Shadowrocket on each platform; if you already have the app, use the Quick Start to review how to import a configuration.

A one-time app purchase is not a service subscription. Shadowrocket is closed-source commercial software; getting the app and managing your existing connection service are separate.