Official Manual / Settings Reference

Shadowrocket
Settings and How to Choose Values

Find guidance on DNS, On Demand, Proxy, Ping, Log, Widget, and iCloud Sync. First understand what each setting affects, then decide whether to change it.

Shadowrocket is a paid client available exclusively on Apple platforms, and the App Store is the only place to get it. The developer is Shadow Launch Technology Limited, and the app ID is 932747118. Check the App Store page for device compatibility and system requirements. Before purchasing, read our guide to verifying the official App Store listing.

This is a reference guide, not a first-connection walkthrough. If you have not finished importing your details and granting system permissions, follow the getting started guide first. If you can already connect and want to understand a particular option, come back here. The guidance below assumes you already have your own subscription or server details. A one-time client purchase is not a service subscription.

Record the current state first Change one variable at a time Check the value shown on your device

Sections are organized by function; they do not reflect a fixed menu order in the app. Available options and where to find them depend on what your device shows.

01 / Scope and Defaults

Settings: Baseline and Change Order

Distinguish App Settings, Config, and Server Parameters

Settings contains options that control client behavior, but a connection is not governed by Settings alone. The selected server on Home, the Global Routing mode, the active file in Config, and the VPN permission granted by the system all affect how requests are handled. Before troubleshooting, identify which layer the problem belongs to. Otherwise, you may look for an authentication issue in DNS settings or mask a rule-matching problem by switching servers.

Server addresses, ports, authentication details, and transport parameters belong to your connection details and should be checked against the information you already have. Rule order, target policies, and some DNS behavior may come from a Config file. Widget and Log are for actions and diagnostics; they do not fix server details. Keeping notes for each category helps you see whether a change addressed the cause and makes it easier to revert only what you changed.

This guide does not treat the switches shown on one device as universal defaults for every installation. A fresh install, restored data, imported Config, or sync between devices can each result in a different starting state. Check defaults on a device that has not been manually changed; on a device with existing data, refer to the displayed value as the current value. If an option is not shown, do not create a menu or parameter just to match this guide.

The Three Global Routing Modes

ModeTypical UseWhat to Check
ConfigRoutes traffic according to the rules in the active Config.Active Config, rule order, and policy targets.
ProxySends applicable traffic through the selected proxy.Whether the server connection and target request succeed.
DirectRoutes applicable traffic directly.Access and DNS resolution on the current network.

These modes are not speed settings and do not change what a remote service can do. For everyday rule-based routing, you need to understand and maintain your Config. Proxy and Direct can help with short-term comparisons, but restore your usual mode when testing is done. Direct describes a routing mode; it does not mean the system VPN is off. To determine whether the connection has ended, check both the app’s connection status and the VPN status in system settings.

Keep a Reversible Change Log

  1. Record the network type, connection status, server label, Global Routing mode, and active Config name. Do not include the full subscription URL.
  2. Note the setting you plan to change, its current value, why you are changing it, and what you expect to observe. Then change that setting alone.
  3. End existing requests. If the setting requires a new connection, disconnect and reconnect before testing the same target again.
  4. If the result does not improve, restore the original value before moving on. Do not permanently stack several unverified changes.

Choose settings to meet a specific need, not to turn on every option. If you have no particular DNS requirement, keep the DNS settings you have verified. If you do not understand the automatic connection conditions, connect manually for now. After troubleshooting, return detailed logging to the level you need for everyday use. These are principles for making changes, not claims about the current interface’s defaults, and stable setups do not need to be reconfigured.

If you have not completed the initial system authorization, return to the getting started steps instead of fine-tuning advanced options. If one target is affected, keep the current connection and start with the request log. If all targets fail, check the basic network and server connection first. For more symptom-based guidance, see Troubleshooting, then continue with the relevant section.

02 / Domain Name Resolution

DNS Settings and Resolution Paths

Successful Resolution Does Not Guarantee a Successful Request

DNS (Domain Name System) translates domain names into addresses that can be used to connect, but getting an address does not mean the target service is available. A request may pass through local resolution, rule evaluation, proxy connection, and target response. Depending on the Config, resolution and rule evaluation may happen in a different order or location. When a page will not load, find out which step failed; do not assume DNS caused every problem just because changing it occasionally helps.

Distinguish the server’s domain from the target domain. The server domain is used to connect to the proxy server; if it cannot be resolved, the connection may fail before reaching the proxy. The target domain is the address requested by a browser or another app. The two can use different paths. When describing an error, specify whether the server address failed to resolve or the target domain failed after connecting. A vague report that “DNS is down” can send troubleshooting in the wrong direction.

When checking DNS, first see whether the active Config also contains DNS-related settings, then review the options shown in Settings. Do not add different DNS addresses in multiple places and assume the most recently edited option determines what happens. If you cannot confirm which setting takes precedence, save the current Config, remove duplicate settings in a reversible copy, and use Log to observe new requests.

How to Choose Defaults and Recommended Values

This guide does not prescribe a general-purpose public DNS address or claim that one address works best on every network. If you have no specific need, keep the resolution method you have verified. If you need local network names to resolve, first check whether the current network’s DNS can resolve them. Sending all queries to an external resolver may prevent internal names from resolving; resolving public domains alone does not prove a resolver suits your whole setup.

If the interface offers encrypted DNS, check the full address format, certificate validation, and connectivity requirements. Encryption protects DNS traffic in transit; it does not guarantee that the results suit your network. The resolver itself must also be reachable. If reaching it depends on a proxy connection that has not yet been established, while the proxy server’s domain depends on that resolver, you may have a startup dependency loop. Restore a path that can resolve the server before connecting.

SymptomCheck FirstDo Not Assume
Fails before connectingServer domain resolution and basic network access.The target website is at fault.
Only internal names failDNS supplied by the network and internal domain handling.Public domain results alone tell the whole story.
Fails after changing networksReachability on the new network, cache, and connection renewal.A successful test before switching proves the new network works.
Only some addresses failAddress family, rule path, and target reachability.All DNS resolution has failed.

IPv6, Caching, and Retesting

A domain may return records for different address families or different addresses depending on network location. Base IPv6 options on support along the current network and server path; do not disable them indefinitely because of one failed request. If the same domain behaves differently on different networks, compare the address family in use, rule policy, and connection error. A DNS record only provides a candidate address; it does not prove the route can carry traffic successfully.

After changing DNS, existing connections and cached data can still affect results. End old requests in the target app, reconnect Shadowrocket if needed, and make a new request. If the current interface offers a way to clear the relevant cache, record its original state before using it. Repeatedly refreshing the same page is not a series of independent tests: it may reuse an existing connection or load from the page cache without sending a new network request.

For a repeatable test, confirm that the basic network works, check that the server domain resolves, connect, then visit a fixed target and inspect the related Log entries. Change only one DNS option, reconnect if needed, and repeat the same steps. Keep the network and routing mode the same for both sets of results. If you switch networks in between, treat that as a separate test rather than a direct comparison.

When troubleshooting is done, remove temporary DNS entries that did not prove useful or restore their original values, and note why you kept the final settings. A long-term choice should have a clear reason, such as preserving internal name resolution, meeting a known network requirement, or fixing a reproducible dependency issue—not just remembering that an address “worked once.”

03 / Automatic Connections and System Permissions

When On Demand Starts and Stops Connections

On-demand connections do not continuously generate traffic

On Demand lets the system manage when to trigger a connection based on configured conditions. It controls when to try connecting, not which routing policy is used for a target. Even when enabled, it still requires valid server details, a working network, and the necessary system permissions. If authentication details are no longer valid, automatic retries will hit the same error; they will not fix server parameters or restore subscription content.

When reviewing this option, distinguish the in-app setting, the VPN configuration stored by the system, and the current connection state. Leaving the app in the background does not necessarily end the system connection. Likewise, manually disconnecting does not necessarily prevent a matching condition from triggering another connection. To assess what is happening, specify whether you disconnected before or after disabling automatic triggers; the troubleshooting steps differ.

The first connection may prompt you to add a VPN configuration. This is the Apple system’s authorization flow for allowing an app to establish the relevant network connection. Confirm that the prompt appears while you are using Shadowrocket, then follow the system instructions. If you deny permission, a connection may still fail even when all other settings are correct. You can check for the relevant entry under “Settings › General › VPN & Device Management”; the exact path depends on what your device shows.

Verify Manually Before Enabling Conditions

  1. For now, do not rely on automatic triggers. Connect manually with the current server and Config, then confirm that a fixed target is accessible.
  2. In Settings, find On Demand and note its current state and any existing conditions. Condition names and available options depend on what the interface shows.
  3. Enable only the conditions you need. Disconnect, return to the relevant network scenario, and check whether the system triggers a connection as expected.
  4. Then enter a scenario where the connection should not trigger and check that it stays in the expected state. Finally, verify the complete manual stop process.

Start with the fewest conditions needed instead of covering every network at once. If you want to connect only under specific network conditions, first check whether the interface offers a suitable condition and how it handles matches and exceptions. Similar network names do not guarantee that they are the same network, and blank names, capitalization, or renaming can affect identification. Use labels you can recognize, but do not share the full identifying details of your home network.

Do not equate “On Demand is enabled” with “the connection is always on.” Network changes, system scheduling, an unreachable server, device sleep, and permission changes can all affect the actual state. To check whether it is working, look at the connection indicator and test a real request—not just the On Demand switch. If the device has no traffic for a while, the lack of new Log entries does not necessarily mean automatic triggering has failed.

Troubleshooting Repeated Connections and Network Changes

If the connection keeps coming back after you disconnect, turn off On Demand first, then disconnect manually and check the system state. If the issue continues, check for other automation you configured or duplicate VPN entries. Identify what each one does before changing it. Do not start by deleting every network configuration: that can remove unrelated information and make it harder to trace a reproducible trigger.

On Wi-Fi networks that require a web sign-in before access, complete the network’s sign-in process first. If automatic connection makes the sign-in page hard to open, temporarily disable On Demand and disconnect, then sign in as required by the network. Restore your original settings afterward and test again. This addresses a network that does not yet allow access; it is not a reason to permanently relax certificate validation or change proxy parameters.

After switching from Wi-Fi to cellular, the existing connection may need to be re-established. Check the new connection’s Log entries rather than relying on a successful result from before the switch. If the issue occurs only on one type of network, test each one manually and record the results before changing any trigger conditions. Automatic connections should be configured only after both networks work independently; otherwise, automation will simply repeat the underlying failure.

If authorization was accidentally removed or denied, first confirm that the app is still installed from the App Store, then try connecting again and check whether the system requests permission. For help identifying and restoring the system entry, see the guide to the Add VPN Configuration prompt. A system configuration and a subscription are separate kinds of data; do not treat deleting one as deleting the other.

04 / Connection Parameters and Local Listening

Proxy, Protocols, and Port Scope

Remote Server Ports and Local Ports

A common source of confusion with Proxy settings is the difference between two kinds of ports. The port in your server details points to a remote service. A local listening port accepts requests that connect using the relevant method. Even if the port numbers happen to match, there is no requirement for them to be the same. Changing a local port will not fix remote authentication, and changing a remote port will not automatically let other devices use a local proxy.

First check whether you are editing connection details in Add Server or a listening option for the current device in Settings. A remote port must match the server information you already have; do not guess based on “common” ports. If the details come from Subscribe, check whether a future update will overwrite a manual change. If needed, keep a separate note so you do not mistake a setting restored by an update for a new failure.

A local port matters only when the corresponding listening feature is enabled and the connecting method matches. Using the same port number does not make HTTP and SOCKS5 interchangeable; the client must use a protocol supported by the listening endpoint. Using the app on the device itself does not mean you need to enable local listening. If you have no specific access need, keep the state you have verified rather than widening the listening scope to troubleshoot a web page.

Port Values and Access Scope

If the current interface lets you edit a local port, note its original value and listening scope first, then check that another service is not using it. A port number being in range is only a basic requirement; successful binding also depends on system permissions and the runtime environment. This guide does not prescribe one default port for every device or recommend assigning the same listening address and port combination to unrelated services just for convenience.

Parameter LayerMeaningHow to Choose a Value
Remote server portThe destination port for connecting to the remote service.Your existing server details.
Local listening portAn endpoint that accepts requests using the corresponding proxy protocol.The actual connection need and an available port.
Listening address or scopeWhich network interfaces can connect.The narrowest access scope needed.
Authentication and transport fieldsConnection identity and transport requirements.The corresponding server-side parameters.

If the interface supports local network access, first confirm that the current network is trusted and that connecting devices genuinely need this feature. A listener accessible to other devices should not be treated as “local to this device only.” Whether those devices can reach it also depends on network isolation and system restrictions. If access authentication is available, configure it for your needs and protect the credentials. Restore the narrowest necessary scope when testing is over; do not leave a temporary test exposed indefinitely.

Do not confuse a client listening port with networking concepts in your router, and do not treat a binding failure as proof that the server is offline. If binding fails, first restore the original port, stop duplicate listeners, or restart the relevant connection, then check whether the error clears. Only after the local endpoint is successfully established should you check whether requests follow the expected server and rule path. Otherwise, multiple failures can get mixed together in the same test.

Match Protocol Parameters to Your Server Details

Shadowsocks, VMess, VLESS, Trojan, WireGuard, and Hysteria2 are distinct protocol or connection method names, not interchangeable labels. The same server address and port do not mean other authentication and transport fields can be reused. Confirm the protocol type first, then check every required field shown in the interface. Do not enter unsupported values in certificate, server name, or transport options just to reduce typing.

If your connection details require TLS, keep certificate validation consistent with the server identity information. The address tells the client where to connect; the server name may be used to verify identity, and the two may serve different purposes. For certificate errors, check the device time, the name in your existing details, and the certificate status. Do not treat disabling validation as a recommended long-term setting. An encrypted connection and confirmation that it reaches the intended server are separate requirements.

UDP support also depends on the protocol, remote service, and current network. A single switch cannot prove that every request can be transmitted. A working web page does not prove that other request types work; likewise, one failed service does not mean the entire proxy is unavailable. Use a test that matches the affected service and consult Log to distinguish local access, remote connection, and target response failures.

05 / What Is Measured and How to Compare

Ping and Connectivity Test

First Identify What the Test Measures

Ping reports a response under specific test conditions; it is not a complete verdict on connection quality. Seeing “Ping” in the interface does not prove that the underlying probe uses a particular method. If the current version lets you choose a test method, read its description and determine whether it tests the server address, connection setup, or a target request before interpreting the result.

Connectivity Test results also need to be distinguished from real-world app access. A successful test may only show that the test target responded; an app request can still be affected by DNS, rules, authentication, target restrictions, or connection reuse. A failed test may use a probe that is unsuitable for the current network even when the server works for actual traffic. Treat the result as one piece of evidence, not the sole measure of availability.

Latency figures are comparable only when measurement conditions match. Results for the same server on different networks, at different times, or against different test targets cannot be ranked directly. A lower figure does not guarantee better sustained throughput, packet loss, or long-connection stability. Choose a connection based on your actual usage and repeatable results, not the lowest number from a single test.

Choosing a Test Target, Timeout, and Concurrency

If Settings offers options such as a test target or timeout, use the values shown in the current interface as your baseline. If you have no troubleshooting need, keep settings you have verified. When changing the target, choose one you are authorized to access, that behaves consistently, and whose response you can interpret. Do not choose an address that only works on a particular network, redirects frequently, or requires a sign-in just to get a better-looking result, then treat it as representative of all traffic.

A timeout that is too short can mark a slow but working connection as failed; one that is too long delays detection. Choose a value to suit the test, rather than assuming lower is always better. If the current interface has no such option, do not search for a field with the same name in other references. After changing a test setting, verify it against a known working connection before testing a suspect one, so a bad measurement setup does not distort every result.

Running many tests at once adds temporary connection and network load, and the results can affect one another. If you manage several existing subscriptions, narrow the list by group first, then test the entries you need to compare. Avoid testing repeatedly while updating subscriptions, switching networks, and reconnecting: changing several inputs at once makes it hard to tell whether a difference comes from the test target or the device’s state.

A Repeatable Test Record

  1. Keep the network and Global Routing mode fixed. Record the server label and test method, but not authentication details.
  2. First access a known working target to confirm that the device’s basic network and the test target are available.
  3. Run the test on the same entry more than once, with a pause between attempts. Check for consistent success instead of keeping only the lowest result.
  4. Then make a new request in a real app, check the policy and connection result in Log, and restore any temporary test settings.

If every test times out, check the test target and basic network before deleting an entire subscription. If only one entry fails, check its server details and whether the latest update completed. If the test succeeds but real traffic fails, check whether the app used the same server and whether Config routes the target to a different policy. This layered approach avoids unnecessary global changes.

If testing fails only on Wi-Fi or only on cellular, keep separate records for each network. Do not treat results saved before a network switch as results from the new network or rely on an old ranking to pick the best current entry. If needed, wait for the basic network to stabilize, reconnect, and test again. In environments that change frequently, focus on failure patterns rather than maintaining a static ranking.

If the interface shows a blank, untested, or failed status, record it as displayed instead of converting it into a latency figure. Distinguishing “no measurement completed” from “a slow result was measured” prevents misleading comparisons. If results remain inconsistent, pause bulk testing and use one fixed target and one connection. Then use the Log method in the next section to create a minimal reproducible test.

06 / Evidence and Privacy

Using Log to Troubleshoot

Build a Timeline with One New Request

Log is useful for linking an action to its result, not for accumulating as many entries as possible. Before troubleshooting, note the current network, Global Routing mode, active Config, and selected server, then make one new request to a target. Find the related entries in chronological order and distinguish DNS resolution, rule matching, connection setup, and target response. This helps avoid mistaking background app traffic for the request you are testing.

If the current interface offers a logging switch or detail level, use the level you need for everyday monitoring and temporarily increase detail only when reproducing a problem. Check the current device for the actual default; do not assume every installation records the same details continuously. More detailed logs can use additional storage and processing and may contain more information about your activity. Restore your usual setting when troubleshooting is done.

No new Log entries do not necessarily mean the client is not working. The target app may reuse an existing connection, read from a local cache, or generate traffic outside the current logging scope. First confirm that your test actually sent a new request, then check the connection status and Log settings. Repeatedly toggling options only changes the conditions you are observing. One fixed target, one clear action, and a short recording window make cause and effect easier to establish.

Read Log by Failure Layer

LayerKey QuestionNext Step
ResolutionDid the domain resolve to a usable address?Distinguish the server domain from the target domain.
RulesWhich rule and policy matched the request?Check the active Config and preceding rules.
ConnectionWas a connection to the remote server established?Check the server details, authentication, and network.
Target responseDid the target return the expected content after connecting?Check the service and what its response means.

If Log shows a request going DIRECT when you expected PROXY, check the rules and active Config before changing servers. If the request used the expected policy but the remote connection failed, check the server details. If the connection was established but the target returned a service error, look at the response itself. A “success” in the log usually refers to one stage; it does not necessarily mean the entire task completed.

When checking rule matching, focus on the first condition that actually takes effect. A seemingly correct rule further down does not prove the request reached it. Also check whether the target loads resources from different subdomains or uses a new connection path. If the main page opens but some resources fail, look for those requests individually rather than treating every request on the page as a single domain.

Describe connection failures precisely. A timeout, authentication mismatch, and certificate validation error point to different causes; do not group them all as “slow.” Check the device time, server address, port, and protocol parameters before asking your service provider to confirm the details. When reporting the issue, share the error category and conditions—not authentication details or the full subscription URL.

Keep the Evidence You Need, Not More

Log may include visited domains, target addresses, server labels, and other context. Before sharing it, review the content, keep only a short excerpt related to the issue, and remove sensitive parts of subscription URLs, authentication fields, and personal network identifiers. Check screenshots too, including the status bar, list labels, and nearby entries. Hiding one field does not make the entire image safe to share; review everything still visible.

A concise report should say which network you were on, the routing mode, the target and action, the expected and actual results, and whether restoring the original settings changed anything. This, together with a carefully reviewed error excerpt, is easier to reproduce than a full export of hours of logs. If you are unsure which fields are sensitive, describe the error in words rather than sending the raw file.

When troubleshooting is done, save the final working changes and steps to restore them, then clear local records you no longer need. Clearing Log does not fix the setting that caused an error, and it is not the same as deleting a subscription. Handle them separately. If the issue returns, compare the network conditions and failure layer with your previous notes instead of testing every setting from scratch.

07 / Quick Actions and Cross-Device Data

Widget and iCloud Sync: What They Do

Widget Is a Shortcut, Not a Separate Connection Setup

Widget provides system-approved shortcuts for viewing or controlling the app; the available options depend on what your device lets you add. A Widget generally relies on settings already configured in the app and cannot replace initial import, VPN authorization, or a manual connection test. Before adding one, confirm that the selected server and Config work in Shadowrocket, then check whether the status shown in Widget matches the app.

The system may refresh Widget on its own schedule, so a screen that has not updated is not proof of the current connection state. To confirm whether an action worked, open the app, check the connection, and make a new request to a target. If Widget does not have the expected effect, first check whether the app needs authorization, the connection details are valid, and the system allows the action. Do not immediately change DNS or server parameters.

Use Widget for familiar, routine actions rather than repeatedly tapping it when the connection state is unclear. Rapid repeated actions can leave a connection in the middle of starting or stopping, so the display and actual state may briefly differ. Wait for one action to finish before starting another. To stop automatic reconnection, follow the steps in the On Demand section instead of relying on a single disconnect action in Widget.

iCloud Sync Is Not a Full Device Copy

If Settings offers iCloud Sync or a related option, first confirm that you are signed in and have allowed the app to use iCloud as required by the system. Check the current interface for which data can sync, whether syncing must be started manually, and whether separate import or export options are available. Do not assume that every server, Config, switch, Log entry, and system permission syncs automatically, or that one successful sync is a long-term backup.

The App Store purchase account and the iCloud account used on a device serve different purposes. Restoring a purchase confirms your eligibility to get the app; iCloud Sync transfers supported data. Neither replaces the other. Being able to download the app on a new device does not mean all connection details from the old device are there. Likewise, seeing synced data does not mean the new device has the VPN permission it needs.

Before enabling sync, keep a recoverable copy of your data and identify anything stored only on the device. If the current interface offers export, check what it includes and protect any credentials it may contain. Store backups somewhere you control and can restore from; do not put complete connection details in a public document. As with default settings, check the state on the current device rather than inferring it from another one.

When Two Devices Differ

  1. On each device, note the active Config, server labels, and most recent manual changes. Do not edit the same data on both devices at once.
  2. Check the system’s iCloud requirements and the sync scope offered by the app. Confirm that you are comparing the same type of data on both devices.
  3. Decide which copy you want to keep, then use the available sync or import option only when you can recover the data if needed.
  4. Verify the server list, selected Config, and actual connection on each device. Matching filenames do not prove the contents match.

If the same content has been changed on both devices, do not assume that the device most recently opened will overwrite the other one correctly, or that repeated syncing will merge everything. Save both sets of changes first, then choose what to keep based on the conflict handling shown in the app. If the interface does not explain how changes are merged, make changes on one device and verify them on the other; this is usually easier to track than editing both at once.

A Config can look different on iPhone and iPad because of the layout without containing different data. Compare specific fields and active states, not list widths or button positions. For iPad purchase restoration and layout information, see the iPad purchase and interface guide. Refer to the App Store page for shared purchases, device compatibility, and system requirements; do not infer compatibility from sync results.

If an old server or duplicate entry appears after syncing, first identify whether it came from a subscription update, a manual import, or synced data, then decide what to remove. Before deleting anything, save labels and local changes you still need; do not remove a source that is still in use. Widget is only a shortcut, and sync only transfers supported data. Verify the active Config on the device and test real access to confirm the setup.

08 / Config and Recovery Checks

Config, Subscribe, and Restoring Settings

Updating Server Details Does Not Update Every Setting

Subscribe generally maintains server details you already have; Config holds rules and related configuration; Settings controls the client’s behavior options. Seeing new entries after updating a subscription does not mean the active rules have changed. Editing a Config does not mean it has been selected. After each change, check that the list contents, active selection, and actual requests all match your expectations.

When several subscriptions are present, use labels you recognize to distinguish their sources before sorting them or handling duplicates. Identical names do not guarantee identical parameters, and similar parameters do not mean you need to keep both. Do not delete entries in bulk based on their displayed names, and never put a full subscription URL in a label. For help with grouping, duplicates, and deletion order, see the guide to managing multiple subscription URLs.

Before manually changing parameters in a subscription entry, check whether a future update will overwrite them. If you need to keep a special adjustment, note the difference first and use an option supported by the current interface to create a separate, identifiable entry. If the connection changes after an update, compare the server fields and selected entry before resetting all Settings. Change a client option only when evidence points to it as the cause.

Rule Examples and Evaluation Order

The following are rule snippets from a Shadowrocket .conf file, showing how keywords, targets, and policies relate. This is not a complete Config and contains no server details. Before using the examples in your own Config, confirm that the corresponding policy behaves as expected. The sample host example.com is illustrative; do not copy it as a universal rule for real traffic.

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
GEOIP,CN,DIRECT
FINAL,PROXY

DOMAIN-SUFFIX matches a domain suffix and is useful for a domain and its subdomains. GEOIP matches based on address-region data, so results depend on the address and the data used. FINAL handles requests that did not match an earlier rule. Rules are generally checked in order: put more specific conditions before broader rules that could match first, and place the final rule at the end.

KeywordWhat It MatchesKeep in Mind
DOMAINThe exact domain name.Does not automatically include every subdomain.
DOMAIN-SUFFIXA domain suffix.Check whether it covers a broader range than intended.
IP-CIDR / IP-CIDR6A network range for the corresponding address family.Domain requests may also require DNS resolution.
FINALRequests not matched by an earlier rule.Check that the final policy is the one you expect.

The presence of a correct-looking rule in the text does not prove it is active. Confirm that Global Routing is set to Config and that the active file contains the rule, then check the match for a new request in Log. If you are using Proxy or Direct, restore the appropriate test mode first. Remove rules added just for testing afterward so they do not affect other traffic long term.

Start with a Minimal Recovery, Not a Full Reset

After a problem appears, think back to the last change you confirmed. If it started after changing DNS, restore the original DNS setting and reconnect. If it started after editing rules, return to the saved Config copy. If it followed a subscription update, compare the update contents with the current server details. Restoring one layer at a time is easier to verify and preserves other settings that still work, avoiding unnecessary data loss while troubleshooting.

If you cannot identify what changed, use a minimal check sequence: confirm the basic network works, server details are complete, a manual connection succeeds, and a fixed target is accessible. Then restore Config, On Demand, Widget, and sync one at a time, testing after each step. Do not reimport everything and enable every feature in one go. This sequence is for identifying dependencies, not a recommendation to use a simplified setup permanently.

After recovery, check your everyday routing mode, automatic connection conditions, Log detail level, and sync status. Save a final record of the changes that work. To repeat the full setup, return to the getting started guide; to find a cause by symptom, see Troubleshooting. The goal is not to use one set of settings everywhere, but to make sure every setting has a clear purpose, a verifiable result, and a practical way to undo it.