Shadowrocket DNS Settings: What to Check When Connectivity Test Works but Websites Won’t Load

If Connectivity Test returns a result but websites won’t load, DNS resolution may be the issue. Learn what the DNS settings in a configuration file do and how to troubleshoot failed lookups.

At a glance

This guide is for anyone who has configured their own service and connection details in Shadowrocket but finds that Connectivity Test returns a result while websites still won’t load. First, distinguish between server connectivity, DNS resolution, and website access. Then check DNS settings in Config, Global Routing, and your rules. Change one setting at a time and retest the same domain to avoid mistaking a rule block or outbound connection failure for a DNS issue.

1. Why DNS can fail even when a latency test returns a result

Results in Home → Connectivity Test depend on the test method in use. A test may only check the connection to a server, or it may contact a test target. Neither method confirms that DNS, TLS, and page resources work for every website. If a server address is already cached, the test may not need to look it up again.

When you open a new domain, the usual sequence is to look up its address, establish a connection according to the active policy, then perform a TLS handshake and send an HTTP request. The simplified flow below can help with troubleshooting. Whether and when a lookup happens locally also depends on the rule type and outbound protocol.

Domain request Address lookup Policy selection Outbound connection Web response

So, a successful latency test is only one piece of evidence. If DNS returns an address but the connection times out, check the outbound path next. If DNS returns no address, focus first on resolution. If text loads but images do not, the image host may use a different domain that failed to resolve; checking only the domain in the address bar is not enough.

53
Ports commonly used by traditional DNS over UDP/TCP
443
Port typically used by DNS over HTTPS
853
Port typically used by DNS over TLS

First check whether DNS returns an address

If you receive an A or AAAA record but the page still won’t load, don’t keep switching DNS servers. Note the returned address, then check which policy matched the connection and how the outbound connection performed. A reachable port alone does not prove the DNS service is working correctly.

2. Check the DNS settings in the active Config

Open Config and confirm which configuration file is selected. Editing a different, inactive file won’t change the current connection. Keep a copy before making changes. If the configuration comes from your own remote source, a later update may overwrite local edits.

In Config, open the editor for the active file and check dns-server under [General]. This setting specifies the DNS resolver. The example below shows only the minimal syntax; it is not a complete file to replace your existing configuration with.

[General]
dns-server = system

system means use the DNS provided by the system. This is usually affected by the current Wi-Fi or cellular network and does not mean a specific public resolver is used. If the setting contains one or more addresses, check each address’s source and reachability. Don’t keep adding unverified resolver endpoints just to have a “backup.”

3. Retest in a fixed order and change one variable at a time

Choose a fully qualified domain that you can normally access, and pick a different site as a comparison. Keep the server and network unchanged during testing. Don’t switch Wi-Fi, change servers, and edit DNS all at once; even if service returns, you won’t know what fixed it.

  1. Record the current state

    In Home, note the selected SERVER, the current Global Routing value, and the Connectivity Test result. Record the affected domain, network type, and the exact browser error. Before sharing a screenshot, hide account and server details.

  2. Check the routing mode

    Go to Home → Global Routing and check whether the mode is Config, Proxy, Direct, or Scene. If you use Scene, confirm which scene is actually active. Note the original value before comparing; switching modes is a diagnostic step, not a permanent fix.

  3. Check the configuration

    Open Config, select the active file, and check dns-server and [Host]. Change only one setting, save, return to Home, reconnect, and then open the same domain again.

  4. Check automatic connection

    Go to Settings → On Demand and note whether it is enabled and which conditions apply. If the connection restores itself during testing, you can temporarily turn off On Demand and repeat the comparison; restore the original setting afterward. On Demand controls when a connection starts, not which DNS server is used.

  5. Test another network

    Keep the configuration and SERVER unchanged, then retest on Wi-Fi and cellular. If the problem occurs on only one network, first check that network’s DNS reachability, login status, and restrictions.

  6. Restore settings and verify

    Undo any temporary changes you no longer need, reconnect, and test both sites. Success means getting the expected DNS result and loading the webpage—not just seeing a value in Connectivity Test again.

Browsers, the operating system, and DNS resolvers may each cache results. Reconnecting helps establish a clear test boundary, but it doesn’t guarantee that every cache is cleared. When comparing results, note whether the same cached answer may have been reused. Don’t substitute an arbitrary HTTPS IP address for a domain test; certificate and virtual-host differences can affect the result.

4. Identify which of the three types of error you’re seeing

The messages below are examples that may appear in DNS protocol data or diagnostic output; they are not guaranteed to appear verbatim on every Shadowrocket screen. A browser may show only a general error. Use the information actually available and don’t assume every failure to load is the same kind of problem.

NXDOMAIN

Cause: The resolver says the domain does not exist. This can result from a typo, a removed record, or a policy on the DNS side.

What to do: Check the full domain name, then compare with another resolver you know works. If the issue persists for only one domain, ask the domain’s administrator to confirm its records.

SERVFAIL

Cause: The resolver could not complete the lookup. Possible causes include an upstream issue, an unavailable authoritative server, or DNSSEC validation failure. This does not mean the domain does not exist.

What to do: Keep the network and outbound path unchanged, then retest with another DNS configuration that you know works. If only this domain is affected, record when it happened and the response status for the relevant administrator.

timeout

Cause: No response arrived before the timeout. The resolver endpoint may be unreachable, packets may be dropped, or an encrypted DNS connection may have failed to establish.

What to do: First check that the address, protocol, and port in the configuration match. Then compare on another network. Simply increasing the timeout won’t fix an endpoint that remains unreachable.

A completed query with no record of the requested type is not necessarily an error. For example, a domain may have only an A record, so an AAAA query can succeed but return no matching answer. Check both the response status and record type; the absence of an IPv6 address alone does not mean DNS is failing.

5. If DNS works, check Global Routing and rules

With Config selected under Global Routing, rules in the active configuration determine where connections go. Proxy and Direct provide their respective global routing modes; Scene follows its configured scene. These are not four DNS server options. If switching modes restores access, that shows the connection path affected the result; you still need to identify the specific rule or outbound difference.

In Config, check [Rule] in the active file. The syntax example below uses a documentation domain and a reserved address range; it should not be added to a live configuration as a fix. FINAL,DIRECT is only the fallback policy in this example, not a general recommendation.

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

Rules are generally evaluated in order for the same connection, so an earlier block or policy choice may prevent later rules from taking effect. If you use rule sets, check their actual contents and update status too. Don’t search only the main file for a domain and assume there are no matching rules if you don’t find it.

6. Verify the fix and keep a record others can review

A valid fix should be repeatable. With the network, SERVER, and configuration held constant, the affected domain should resolve, the connection should follow the expected route, and the page and its required resources should load. Then restore any On Demand settings you need and check that everything still works after switching networks.

If two DNS resolvers both return an address successfully but pages still won’t load through the same server, investigate server availability, TLS, outbound restrictions, and rules. Adding more DNS addresses only adds variables; it won’t automatically fix these issues. For further help, see Troubleshooting and Quick Reference.

Shadowrocket is a closed-source commercial app for Apple platforms, primarily iPhone and iPad, and is available exclusively from the App Store. The developer is Shadow Launch Technology Limited, and the app is sold as a one-time purchase; buying the app does not include a service plan. This guide assumes you already have your own service provider and configuration. Check the App Store listing for system requirements.

Verify Shadowrocket on the App Store