· Troubleshooting · About 8 min read

Shadowrocket Connected but No Internet: Server, Routing, DNS & Rules Troubleshooting

Connected but pages won’t load? Check server status, Global Routing, DNS, and rule matching to find where requests are failing.

At a glance

Turning on the connection only confirms that the local connection has started. It does not prove that the server, DNS resolution, or destination website is working. This guide is for users who already have their own server details or subscription. Check your base network first, then test the server, Global Routing, DNS, and rules one at a time. Restore your usual settings when you’re done.

01 Understand the difference between “Connected” and a successful request

Shadowrocket’s connection status, server latency test, and the page loading in a browser are three different checks. A VPN indicator in the status bar does not confirm that the remote server has authenticated successfully. A latency result does not confirm that DNS, TLS, and all subsequent page requests are working either. Note what you observe before changing the connection repeatedly; this makes it easier to narrow down the cause.

Before you begin, note the server, Global Routing option, active Config, and domain of the page that fails. Choose one page you can normally open directly as a control, and one page that currently fails. Don’t assume a problem with one website means the entire network is unavailable.

  1. Check your base network

    First, go to Settings → On Demand, check the automatic connection settings, and temporarily turn them off. Then return to Home and turn off the connection. Open a page in Safari that you can normally access directly. If it still fails, check for Wi-Fi sign-in requirements, cellular data permissions, or a problem with the network itself.

  2. Keep test conditions consistent

    Use the same network, page, and device throughout the test. Return to Home, select your own server, and turn on the connection. Don’t switch Wi-Fi, servers, and Config at the same time; otherwise, you won’t know which change affected the result.

  3. Note which requests fail

    Record whether all pages fail, only some domains fail, pages load but images don’t, or only one app fails. Note when it happened and which Global Routing option was selected, so you can compare it with the request log later.

  4. Change one setting at a time

    Change just one setting, then retry the same request. If needed, turn the connection off and back on. If there’s no improvement, restore the original setting before moving on. This prevents temporary changes from piling up.

02 Check server reachability and your existing subscription

On Home, run Connectivity Test for a server you already have, and make sure the selected entry is the one you intend to test. Results depend on the test method and target: a successful port connection does not confirm protocol authentication, and reaching the test target does not mean every website is reachable. Compare the test result with what actually happens in your browser.

Open the selected entry’s edit screen and check Type, server address, port, and authentication details. Shadowsocks, VMess, VLESS, Trojan, Hysteria2, and WireGuard use different parameters; don’t switch protocols at random because one entry timed out. For TLS connections, check the server name and other details provided by your service provider. Don’t hide a configuration problem by disabling certificate verification.

03 Compare routes with Global Routing

Once the server appears reachable, go to Home → Global Routing and check the selected option. Proxy, Direct, Config, and Scene use different routing methods, so the connection switch alone won’t tell you where traffic is going. Note the original option, briefly compare Proxy and Config, then restore your usual setting.

OptionWhat to checkHow to interpret the result
ProxyRoutes regular requests through the proxy. Check which proxy is currently selected.If the same page works here but fails under Config, check the rules and policy selection first. DNS differences may also be a factor.
DirectRoutes requests directly, without the proxy.Selecting a server doesn’t mean requests use it. Use a page that you can access directly as a basic comparison.
ConfigProcesses requests according to the rules in the active Config.Confirm that the expected Config is active, then check the rule matched by the failed request and its final policy.
SceneCheck the active Scene and its associated settings.A Scene may change the routing settings in use. Don’t assume the selected server determines the final route.

If both Proxy and Config fail, continue checking the server and DNS rather than adding rules right away. If Proxy works but Config doesn’t, check whether the target domain is routed to DIRECT, REJECT, or an unavailable policy group in Config. This comparison is a troubleshooting clue, not definitive proof that the server is fully working.

04 Check DNS if latency looks normal but pages won’t load

A browser needs to resolve a domain name to an IP address before it can load a page. If the latency test only checks the server’s port or uses a different target from the website, you may see normal latency while pages still fail. Go to Settings → DNS to check the current settings. Also check whether the active Config includes its own DNS settings, so you don’t change one place and overlook another.

Save the original settings first. Then check for a custom resolver that no longer works, one that’s only reachable on certain networks, or an incomplete encrypted DNS address. Don’t keep adding unfamiliar addresses: if the resolver itself is unreachable, adding more may not help and will make comparisons harder.

53
Common ports for standard DNS
443
Common ports for HTTPS and DoH
853
Common port for DoT

These are commonly used protocol ports, not values to enter in every server entry. Keep the server port set to the value provided by your service provider. With DoH, an endpoint that uses a hostname also requires an initial lookup of that hostname. If the resolver must be reached through a proxy, an unavailable proxy can also cause DNS resolution to fail.

05 Check rule order, policies, and FINAL

If the problem only occurs with Config, open Config and confirm which configuration is active, then check its rules. Rules are generally evaluated from top to bottom, and the first matching rule determines the policy. FINAL handles requests that match none of the preceding rules. So a correct rule placed after an earlier FINAL won’t work as expected.

These examples explain the syntax; they are not a replacement configuration to paste in full. example.com and 192.0.2.0/24 are illustrative values. Make sure any rules you use match your own targets and policy setup.

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

Retry the request and check the in-app request log. Use the time and domain to find it, then confirm the matched rule and policy. If it matched PROXY but still failed, check the server or policy group it uses. If it matched REJECT, first check whether an overly broad rule blocked it. Don’t delete all your rules just to make one page load; back up your Config and keep changes targeted.

06 Use the error message to choose your next step

Interpret error messages in context, based on where they appear. The examples below are common English fragments in connection or DNS logs; capitalization and additional details may vary. A generic “Safari cannot open the page” message doesn’t identify the failure stage, so also check the in-app log for the same time.

Error: Connection refused

Cause and next steps: The destination or a device along the route refused the connection. This commonly happens when no service is listening on the port or access is denied. Check your server address and port, then ask your service provider to confirm the listening status. Don’t assume the password is wrong.

Error: Connection timed out

Cause and next steps: The connection wasn’t established within the allowed time. The cause may involve the network path, server status, or a firewall. Keep the settings unchanged, retry on another network you can use, and note whether the issue affects just one server.

Error: NXDOMAIN

Cause and next steps: DNS reports that the domain doesn’t exist. The domain may be mistyped, or the DNS result may be incorrect. Check the full domain, then retry with a DNS configuration that worked before. Refreshing the server list repeatedly won’t fix a misspelled domain.

If the error involves a TLS certificate, check the device’s date and time, the server name, and the certificate configuration provided by your service provider. If the website returns an HTTP status code, it has returned at least one HTTP response. Check the status code against the site or access policy instead of assuming every failure is a DNS issue.

07 Common questions and final checks

Connectivity Test shows a result. Why won’t the page load?

On Home → Global Routing, note the current option and compare Proxy with Config using the same page. A latency test doesn’t cover every request made by a webpage. Check the DNS result, matched policy, and connection error at the time of failure.

If Proxy works, can I just leave it there?

That shows the routing methods behave differently; it doesn’t mean the rules are fixed. Return to Config and check where the target domain matches, along with the policy group and FINAL. Once corrected, restore your usual routing option and test the same page again.

The connection turns back on after I turn it off. How can I test it?

Go to Settings → On Demand, note the current settings, and temporarily turn off automatic connections. Then return to Home and turn off the connection. After troubleshooting, restore the original On Demand settings so the test setup doesn’t become your everyday configuration.

Do I need to select a server again after updating a subscription?

Return to Home and confirm the selected entry. An update may change entry details or names. Check your selection, run Connectivity Test, and then try the actual webpage. A successful subscription update does not prove the server is working.

Should I delete and reinstall the app first?

Work through the checks above first. Reinstalling won’t fix a remote server or network path, and it may remove local settings. If you do need to reinstall, back up your Config and keep your subscription and authentication details safe.

When you’re done troubleshooting, retest the original page on the original network. Restore any temporary changes to Global Routing, DNS, and On Demand. Keep a brief record of the failure time, network type, server used, matched policy, error message, and any changes that helped. If you need further advice, share only redacted information; don’t include subscription tokens, passwords, or private keys in screenshots or public messages.

Verify the App Store listing