October 15, 2026 · Troubleshooting · About 9 minutes

Shadowrocket Connected but No Internet? Troubleshoot Servers, Routing, DNS & Rules

If the connection is on but websites won't load, check your server, Global Routing mode, DNS settings, and FINAL or REJECT rules in that order to narrow down the cause.

At a glance

The Shadowrocket connection switch shows the device's local connection status; it doesn't confirm that the server, DNS, or destination website is reachable. This guide assumes you already have your own service and configuration. Check the basic network, server settings, Global Routing, DNS, and rules in order. Change one thing at a time, retest the same address, then restore your usual settings.

1. Distinguish the Local VPN Tunnel from the Actual Request

A VPN status in iOS means the device has established a local network tunnel. Whether the remote server accepts the connection, the domain resolves, and the rules route the request still needs to be checked separately. An active switch doesn't mean the browser is necessarily at fault, and not every page that fails to load has a DNS problem.

App request Local tunnel DNS resolution and routing Outbound connection Destination response

This flow helps narrow down what to check; it doesn't mean every request resolves and routes in exactly the same order. A domain rule can match first, while some IP rules may require a resolved address. Start with these checks to see whether the basic network is working.

  1. Note the server selected in Home, the Global Routing mode, and the active configuration in Config. Keep a restorable copy before making changes.
  2. Temporarily turn off Shadowrocket and open a website in Safari that normally works without it. If that still fails, complete the Wi-Fi sign-in process or check cellular data access and the current network status.
  3. Once the basic network is working again, turn the connection back on and open the same website. Note whether everything fails, only some domains fail, or just one app is affected.
  4. If possible, retest once on Wi-Fi and once on cellular data. After switching networks, start a new request; don't treat a cached page as a fresh result.

2. Check the Server in Home and Your Existing Subscription

In Home, make sure the selected server belongs to your own valid configuration, not an outdated entry. Connectivity Test can provide a clue about reachability, but its target and method may differ from the website you're trying to open. A latency result doesn't mean every site will work, and a timeout needs to be considered alongside the actual connection logs.

If the entry comes from a subscription, check that it updated successfully and that the list doesn't still contain outdated details. To update it, refresh the existing subscription in Home, then review the relevant settings under Settings → Subscribe. A subscription update fetches configuration; a server connection is an outbound request. They are different requests. A successful update doesn't prove the entry works, and a failed update doesn't mean every existing entry is invalid.

Error: connection refused

Cause and fix: This usually means the destination address or an intermediary explicitly refused the connection. First check whether the connection log points to the server or the destination website, then verify the address, port, and remote listener status. Don't change DNS as a first step.

Error: i/o timeout

Cause and fix: An I/O operation timed out, but this line alone doesn't identify where the failure occurred. Check the surrounding log entries to see whether it happened during DNS resolution, the server connection, or access to the destination, then compare results on another basic network.

These are examples of error snippets that may appear in connection logs; not every device shows the same messages. When sharing details for troubleshooting, keep the original error text and note when it occurred. Hide passwords, UUIDs, private keys, and subscription tokens, and never share your full configuration.

3. Use Global Routing to Compare Modes and Rules

First check the current mode under Home → Global Routing. Proxy, Direct, Config, and Scene work differently. An active connection doesn't mean every request uses the selected server. In particular, Direct doesn't automatically send requests through a remote proxy just because the connection is on.

4 modes
Global Routing modes: Proxy / Direct / Config / Scene
53
A common port for traditional DNS, usually over UDP but also available over TCP
443
Commonly used for HTTPS and DoH; the port alone doesn't guarantee the connection is reachable
ModeWhat it doesHow it helps troubleshoot
ProxyRoutes requests through a proxyBriefly test the selected proxy route and rule out routing by Config rules
DirectRoutes requests directlyCompare direct access on the current network; this doesn't verify that a remote server works
ConfigApplies the policy specified by the current configuration's rulesCheck the matching rule, policy group, and final outbound route
SceneSelects routes according to configured scenesCheck which scene applies to the current network and which settings are active

Keep the server and destination address unchanged, then briefly compare Proxy and Config. If the site works in Proxy but fails in Config, focus on the rules and policy groups, while keeping in mind that DNS or request paths may differ between modes. If both modes fail, continue by checking the server, basic network, and DNS rather than deleting the entire configuration.

Evaluate Scene against the scenes you already have; don't assume it works like Config. Restore the original mode after testing. Proxy is useful for comparison, not as a universal replacement for your everyday settings.

4. Change DNS Only When the Evidence Points to It

DNS translates domain names into addresses. If the server address is itself a domain name, it may need to be resolved before connecting to the remote server. The domain used by a webpage may require a separate lookup. Record failures to resolve the server's domain separately from failures to resolve the destination website's domain.

  1. Narrow down the scope: Test two domains you use regularly. If only one domain fails, check that domain and its DNS records first instead of changing global settings right away.
  2. Check the active configuration: In Config, confirm which file is in use and review its DNS settings. Cross-check them against the DNS options enabled in Settings. An inactive configuration file won't help diagnose the issue.
  3. Check upstream reachability: A custom DNS address must be reachable over the current route. With DoH, the HTTPS connection, certificate validation, and resolution of the DoH service's domain may all be prerequisites.
  4. Revert one change at a time: If the problem started after a DNS change, restore the previous settings, reconnect, and try the request again. Don't change DNS, the server, and rules all at once, or you won't know which change made a difference.

If the logs report a certificate name mismatch or an expired certificate, first check the device's date and time, the server name in your service parameters, and the remote certificate. Don't hide the problem by disabling certificate validation, and don't treat a TLS error as an ordinary DNS timeout.

5. Check FINAL, REJECT, and Rule Order

If the problem mainly occurs in Config mode, open the active Config and check which rule matches the destination domain, in order. Rules are generally evaluated from top to bottom; once an earlier rule matches, later exceptions aren't considered. Adding an allow rule at the end won't override an earlier REJECT.

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

This example is for syntax illustration only. example.com and 192.0.2.0/24 are sample values; don't replace your active configuration with this entire snippet. In the example, FINAL,DIRECT sends requests that don't match an earlier rule directly. It isn't a recommended policy for every user.

If a page loads but its images, login, or API calls fail, check the domains used by the failing resources, not just the main domain in the address bar. If a rule is confirmed to be the cause, back up the configuration before adjusting its scope, order, or policy. Keep the smallest change that fixes the issue; don't delete all reject rules to fix one page.

6. Retest Based on the Symptoms and Keep a Minimal Record

After each change, retest the original address. Record the network type, server entry name, Global Routing mode, failed domain, exact error text, and test time to distinguish intermittent failures from repeatable ones. The questions below cover common scenarios.

“Why won't the website load if the latency test shows a result?”

A successful test only confirms the target and route that it tested. In Home, check the selected entry, then compare the same website in Proxy and Config. If it fails only in Config, inspect the rules and final policy for that domain.

“Why does it work on cellular data but not Wi-Fi?”

Turn off the connection first and make sure Wi-Fi sign-in is complete, then retest without changing the server or configuration. If the issue persists only on that Wi-Fi network, check its DNS and the reachability of relevant ports and UDP paths. This alone doesn't mean the entire configuration is wrong.

“The website works, but one app keeps spinning. What should I do?”

Reopen the app and check which domains it actually requests. See whether its API, media, or login requests are blocked by REJECT or routed to a different policy. A working main website doesn't prove that every domain the app depends on is reachable.

“The subscription update failed. Do I need to delete all my servers?”

You don't need to clear the list first. Keep the existing entries, check the subscription link status, then review the update settings under Settings → Subscribe. Update entries using your own valid service details only after confirming that the current parameters are no longer valid.

If you still can't identify the cause, send your service provider's support team redacted error snippets and the comparison results above. Purchasing the Shadowrocket app and the status of a remote service are separate matters; reinstalling the app won't fix an unavailable server or incorrect rules. This site does not provide, sell, or recommend servers or subscriptions.

Download Shadowrocket