Shadowrocket Guide: Connected but No Internet—Check Server, Mode, DNS, and Rules

When Shadowrocket connects but pages won't load, check server reachability, Global Routing, DNS, and rule order.

At a glance

An enabled switch only means the connection feature is running; it does not confirm that the selected server, DNS resolution, or destination website is available. This checklist is for users who have imported their own existing servers or subscription into Shadowrocket. Troubleshoot in this order: basic network, server, Global Routing, DNS, and rules. Change one variable at a time, then restore the original settings so temporary tests do not become your everyday configuration.

1. Identify the scope before reinstalling

First distinguish a basic network issue from one that occurs only after connecting. Turn off the connection on Home and use Safari to open two websites that normally work without a proxy. Then turn the connection on and visit the same pages. Keep the Wi-Fi or cellular network unchanged during testing. Changing the network, server, and configuration at the same time makes it difficult to identify the cause.

  1. Record the original settings

    On Home, note the selected server and Global Routing mode. In Config, note the currently enabled configuration. Save a copy before editing a configuration, and do not include passwords, full subscription URLs, or other credentials in your notes.

  2. Compare with the connection off

    Turn off the connection switch on Home and retry the page. If the connection turns back on automatically, check Settings → On Demand. Temporarily disable any active triggers during testing, then restore them after troubleshooting.

  3. Check the basic network

    If ordinary websites still do not load with the connection off, check Wi-Fi sign-in, cellular data access, and signal strength first. For public Wi-Fi that requires authentication, complete the sign-in flow in the system prompt or Safari.

  4. Keep test destinations consistent

    Choose one page that is known to work directly and one that normally requires your own server. Record whether each loads or times out. Do not use the result from a single website to represent the entire network.

If access also fails with the connection off, address the basic network first. Continue with the checks below only if the failure occurs after connecting. If just one website fails, consider a problem with the site itself, access restrictions, or differences in rule handling. A system VPN indicator does not prove that a particular remote website has connected successfully.

2. Check the server: a test result does not prove full availability

First confirm that the selected server can complete an actual request. Run Connectivity Test on Home, then check the selection in the SERVER list. A latency value usually means only that a response was received under the test conditions; it does not guarantee that all domains, ports, and app traffic will work.

Read error text in the context of where it occurred. The following are underlying error snippets that may appear in connection logs. Exact wording varies by protocol and failure stage; a line of text alone cannot establish whether the provider, DNS, or rules are at fault.

Error: connection refused

Cause: The corresponding port at the target address usually refused the connection. Possible causes include an incorrect port, a service that is not listening, or access controls.

What to do: First determine whether the error refers to the proxy server or the destination website. Then check the port for that address and ask your service provider to confirm that it is listening.

Error: i/o timeout

Cause: A stage did not complete within the allotted time. Possible causes include packet loss, no response from the remote host, or mismatched transport parameters.

What to do: Keep the server parameters unchanged and retest on another network you can use. If only one network fails, check its restrictions.

Error: no such host

Cause: The hostname could not be resolved to a usable result. First determine whether the failed name belongs to the server or the website.

What to do: Check the spelling, then restore the DNS baseline described below. If the server's hostname itself is no longer valid, confirm your existing connection parameters first.

3. Check Global Routing: compare modes to narrow down the cause

Global Routing determines how requests are routed; it cannot fix an unavailable server. On Home → Global Routing, note the current selection, then briefly compare Proxy and Config. Restore the original selection after testing so diagnostic changes do not permanently alter the route for all requests.

OptionHow it helps with troubleshootingWhat to check
ProxySends ordinary requests through the proxy route, helping you compare the effect of rule-based routing.Is the server selected on Home correct, and are its connection parameters valid?
DirectUses a direct connection to the destination without a proxy server.Can the current basic network reach the destination directly? Failure does not mean the server is unavailable.
ConfigProcesses requests according to the rules and policies in the currently enabled configuration.Check which file is enabled in Config, the rule order, and the policy targets.
SceneUses the mode determined by the configured scene settings.Check which scene matches. The word Scene alone does not mean that all requests use the proxy.

Conclusion: Check Config after Proxy works

If the same destination works under Proxy but fails under Config on the same network and server, first check differences in rules, policies, and DNS in the current configuration. Do not start by changing every server parameter.

On Demand controls when the connection is triggered; it does not replace Global Routing's request routing. If the connection turns on automatically after being switched off, check Settings → On Demand first. If it is on but only some websites fail, check the mode and the specific requests rather than repeatedly toggling On Demand.

4. Check DNS: distinguish the server hostname from the destination hostname

Start DNS troubleshooting by identifying which name failed to resolve. If the server address is a hostname, resolution may be required before the connection can be established. A destination website's hostname follows the resolution path used by that request. Failure in the first case prevents a server connection; failure in the second may affect only some websites.

53
Port commonly used by traditional DNS over UDP or TCP.
853
Port commonly used by DNS over TLS.
443
HTTPS port commonly used by DNS over HTTPS.

Being able to reach a port does not guarantee that resolution is correct. Encrypted DNS also requires the resolver address to be reachable and TLS validation to succeed. A resolver addressed by hostname may itself require an initial lookup. Adding several unfamiliar resolver addresses to a configuration adds variables and does not prove that the issue has been found.

  1. In Config, confirm which file is enabled and open its edit view. Check the existing dns-server setting under [General]. Save the original value first; do not overwrite the entire section.
  2. If the problem started right after a manual DNS change, restore the previous working setting. For comparison, you can use dns-server = system in a copy of the configuration to test the system resolver path. This is a diagnostic baseline, not a universal final setting.
  3. After saving and enabling the test configuration, reconnect and make a new web request. The browser may reuse an existing connection or cache, so a single refresh is not enough to prove the new setting took effect.
  4. If there are manual hostname mappings under [Host], check whether any point to an old address. Restoring DNS settings does not automatically remove separately configured static mappings.

5. Check rules: follow the first match through FINAL

In Config mode, check the rules in the configuration that is actually enabled, not just whether a file exists. Rules are usually matched from top to bottom, so a broad rule near the top may prevent a more specific rule below it from taking effect. First confirm the enabled file in Config, then inspect entries in [Rule] related to the failed domain and the final policy.

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

This code illustrates syntax; it is not a complete configuration to replace your everyday setup. example.com is an example domain, and PROXY must refer to an available proxy policy. If your file uses a named policy, check which server that policy actually selects, not just the Home list.

Change one rule at a time and retest the same destination. If Proxy mode also fails, changing FINAL to a proxy will not fix a server authentication error. If only Config mode fails, first check the matching rule and its policy. After testing, remove any temporary rules you do not need to keep.

6. Common questions and wrapping up

When wrapping up, keep a reproducible description of the issue rather than sharing a configuration file containing credentials. Record the network type, server protocol, Global Routing mode, failed destination, and failure stage; these details are usually more useful than noting that “the switch is on.” Before contacting your service provider, remove passwords, UUIDs, private keys, and subscription tokens.

Why does Safari still fail when Connectivity Test shows latency?

The test destination may differ from the website, and the rules or DNS path may differ too. Keep the same server selected on Home, compare with Global Routing → Proxy, then return to Config and check rules related to the destination domain. Do not infer that all traffic works from a single latency value.

Does a successful subscription refresh mean the server is working?

No. A successful subscription update on Home only means the subscription content was retrieved. After updating, check that the current selection is still valid, then run Connectivity Test. If existing parameters changed, ask your service provider to confirm the new ones. Do not enter a subscription URL as a server address.

What if Wi-Fi fails but cellular works?

Keep the server and Global Routing mode fixed, then test each network separately. Complete Wi-Fi authentication and check that network's DNS and access restrictions. If the same parameters fail only on that Wi-Fi network, investigate the network difference first rather than rewriting the configuration and authentication parameters at the same time.

It works after switching to Proxy. Can I leave it that way?

You can use this as a diagnostic finding, but confirm that it meets your routing needs. Return to Config and check the failed domain, policy target, and FINAL. If you need rule-based routing, correct the configuration and switch back to Config rather than treating a temporary comparison as the final setting.

Go to the App Store