1. What Clash Is—and What It Is Not

Clash is commonly used as the name for a family of proxy clients and compatible proxy cores. A core is the program that reads a configuration, accepts network connections, evaluates routing rules, and sends traffic directly or through a proxy. A client is the desktop or mobile app that helps you import configurations, select policies, change operating-system proxy settings, and inspect connections. The app and the core work together, but they are not the same component.

This distinction matters when you are choosing software or troubleshooting an import. A client can look like a Clash app while running a different core, and two releases of the same client may bundle different core versions. The core determines which proxy protocols and configuration fields are supported. If a configuration uses a field or protocol that the active core does not understand, changing a button in the client will not make that feature compatible.

The word “Clash” is also used loosely for related projects. mihomo is descended from the Clash Meta line and is a widely used core in current Clash-compatible clients. Older configurations and clients may refer to Clash, Clash Premium, or Meta. These names do not guarantee identical capabilities. When compatibility matters, check the exact client release, selected core, and core version—not only the app icon or the name on a subscription page.

  • Client: Provides the interface and manages configuration imports, profiles, and system integration.
  • Core: Parses the active configuration and handles DNS, incoming connections, rules, and proxy connections.
  • Proxy service: Supplies the servers or other network endpoints described by a configuration or subscription.

Installing a client does not automatically provide proxy servers, and subscribing to a proxy service does not guarantee that its configuration works with every core. Treat these as separate parts of the setup.

2. Profiles, Nodes, and Subscriptions

A profile is the configuration a client uses to tell its core how to operate. It can contain listening ports, DNS settings, proxy definitions, policy groups, routing rules, and other options. Some profiles are complete configuration files; others are assembled by the client from a remote subscription and local settings. The configuration currently running may therefore differ from the original file or URL you imported.

A node is one outbound proxy definition: it describes how to connect to a particular proxy endpoint using a particular protocol and its required credentials or transport settings. A node is not necessarily a physical computer in the country suggested by its label. Labels such as “US,” “Fast,” or “Streaming” are names chosen by the provider, not independent measurements or guarantees.

A proxy subscription is usually a private URL that provides proxy nodes or a fuller configuration. The client periodically fetches it to refresh available entries. Some providers offer separate formats for different cores, and a subscription may include protocols or configuration fields that an older core cannot use. If an update succeeds but the profile fails to start, check the core’s compatibility and startup messages before repeatedly refreshing the subscription.

TermWhat it describesBeginner check
ClientThe app used to manage a profile and coreConfirm its version and supported operating system
CoreThe engine that parses settings and routes connectionsFind its name and full version in the client or startup log
NodeAn individual outbound proxy definitionCheck whether it is selected and whether its test succeeds
SubscriptionA remote source for nodes or configuration dataKeep its URL private and check its update time
ProfileThe configuration selected for the active sessionVerify that you are editing the profile currently in use

3. How a Connection Reaches a Node

Using a proxy involves more than selecting a node. First, the application’s traffic must reach the core. Then the core must decide what to do with the connection. Finally, the chosen outbound must be able to connect to the destination. A failure at any one of these stages can look like “the proxy is not working,” but each stage has a different fix.

System proxy and TUN are different traffic-entry methods

When a client enables the system proxy, it asks the operating system to direct supported applications through a local HTTP or SOCKS proxy listener. This is often enough for browsers and other applications that honor system proxy settings. It does not force every program to use the proxy: some apps ignore the setting, use their own network stack, or make connections that the system proxy does not cover.

TUN mode creates a virtual network interface and can capture a broader range of device traffic. It may be useful for applications that do not honor system proxy settings, but it also involves routing, DNS, permissions, and sometimes a background service. TUN does not mean that every connection will use a remote proxy. Captured traffic still passes through the core’s routing rules, which may select a proxy, a direct connection, or another policy.

Rules choose the outbound policy

In Rule mode, the core evaluates routing rules in order and uses the first matching rule. A rule may match a domain, destination IP range, process, or other supported attribute, depending on the core and its configuration. The result is typically a policy such as DIRECT or a named proxy group. A policy group may let you choose a node manually, select one automatically, or fall back among several nodes; the exact behavior depends on its type and settings.

Global mode usually sends matching traffic through the currently selected global policy rather than following the ordinary rule list. Direct mode bypasses proxy routing. These modes can be useful for controlled tests, but if you are checking a rule, make sure the client is actually in Rule mode. Also confirm that the target connection appears in the client’s connection list; if it does not, investigate traffic capture before changing routing rules.

  1. Traffic entry: Does the application reach the local core through the system proxy, TUN, or another configured path?
  2. Rule match: Which rule or policy handles the destination?
  3. Outbound: Which node or group was selected, and can that outbound connect?
  4. Destination: Does the remote site respond after the proxy connection succeeds?

4. First Setup: A Safe, Practical Test

Start with one client, one profile, and one ordinary test destination. Avoid changing DNS, TUN, custom rules, and multiple proxy groups at the same time. A small test makes it easier to identify whether the issue is an invalid profile, a failed node, a missing traffic-entry method, or a destination-specific problem.

  1. Choose the correct client build. Check the operating system and processor architecture before downloading. Use the site’s download page or the project’s verified distribution channel, and compare the publisher and package details before installing. Avoid repackaged installers from file-sharing pages.
  2. Check the core information. Open the client’s core, version, or startup-log screen. Record the core name and full version number. If a provider specifies a required core or configuration format, make sure it matches what the client is running.
  3. Import one trusted profile. Use the provider’s documented import method. If you are importing a subscription URL, keep it private and avoid pasting it into a public browser or a shared note. Wait for the update to finish and note any error message rather than repeatedly clicking refresh.
  4. Confirm the profile is active. Select the imported profile and check that the core starts without configuration errors. A profile appearing in the client’s list does not prove that it has been selected or loaded successfully.
  5. Choose a node or policy group. If the client offers a latency test, use it as a basic reachability check, not as a guarantee that every site will work. A test may use a particular URL and may measure only one part of the route.
  6. Enable the simplest suitable traffic path. For a browser that respects the operating-system proxy, begin with the client’s system-proxy switch. Use TUN only when you need broader capture or the client’s instructions require it; grant elevated permissions only to software you trust.
  7. Test one page and inspect the connection. Open a single ordinary HTTPS site, then check the connection list or logs for the destination, matched policy, and selected outbound. If no connection appears, check traffic entry. If it appears but fails, examine the matched rule and node status.
Profile selected
      ↓
Application traffic reaches the core
      ↓
Rule or mode selects a policy
      ↓
Policy selects an outbound node
      ↓
Node attempts the destination connection

This sequence is a troubleshooting map, not a promise that every client uses identical menu names. Interfaces vary, and a subscription client may regenerate its runtime configuration. Use the client’s effective configuration or status screens when available; an edit to a downloaded source file may be overwritten on the next update.

5. Safe Downloads, Updates, and Privacy

Proxy software can affect network traffic, so downloading it safely is part of configuration—not an optional extra. Prefer the project’s established release channel or a known client download page. Check that the package matches your platform and architecture, and be cautious if an installer asks you to disable security software, install unrelated extensions, or run an unfamiliar command with administrator privileges. A familiar app name alone does not establish that a download is authentic.

Keep the client and core updated through trusted channels, but do not assume that every update is interchangeable. A new client release can bundle a different core, while a profile may depend on particular protocols or fields. Before a major update, note the current client and core versions and keep a backup of any local configuration you have edited. If the updated core reports unsupported fields, compare its requirements with the profile’s format rather than deleting settings at random.

Remember that a proxy service is part of your trust boundary. Depending on the protocol and application, the provider may be able to observe connection metadata such as destinations, timing, or data volume. HTTPS protects content between your device and the destination when certificates validate normally, but it does not make an unknown provider trustworthy or hide all metadata. Do not install a certificate or accept a browser warning simply because a proxy provider or download page tells you to.

  • Use a unique account password and enable additional account protection if the provider supports it.
  • Do not share subscription URLs, node credentials, controller secrets, or screenshots containing tokens.
  • Review which apps are being routed, especially when using TUN or rules that send broad traffic through a proxy.
  • Do not use a profile or script from an unknown source unless you understand what it changes.
  • Redact credentials and personal identifiers before sharing logs for troubleshooting.

A local control interface is another sensitive component. Some clients expose a controller API so that the interface can change policies or inspect connections. Keep it bound to the local device unless remote access is deliberately configured and protected. Never publish a controller port or leave its secret empty on an untrusted network.

6. Common First Problems and What to Check

If the core fails to start immediately after import, first look for a configuration parsing message in the startup log. Check whether the active core supports the subscription’s protocols and fields, whether required values are missing, and whether you selected the intended profile. Changing the system proxy will not repair invalid YAML or an unsupported outbound type.

If the core starts but a browser has no connection, verify that a usable node or group is selected, the system proxy is enabled when appropriate, and the client is in the intended mode. Check the connection list while loading one page. A browser that bypasses the system proxy may need a different traffic-entry method, but enabling TUN should be a deliberate next step—not the first response to every failure.

If some websites work and others do not, compare their matched rules and outbounds. A rule can send a destination directly even when you expected a proxy, or a policy group can be selecting a node that is unavailable. DNS can also affect which address is connected to, but changing DNS settings without evidence may introduce a second problem. Start from the destination’s connection record and inspect the rule and outbound shown there.

If a subscription refresh fails, check the network connection, provider status, account limits, and the exact error returned by the client. Do not expose the full subscription URL when asking for help. If the profile updated but the core then stopped, the new contents may have introduced a compatibility issue; compare the last working configuration or restore a backup if one is available.

For effective troubleshooting, record the client and core versions, operating system, active profile, mode, traffic-entry method, and the time of a single reproducible test. Include the matched rule and error message, but redact credentials, subscription tokens, and controller secrets. This information is much more useful than a screenshot that shows only a disconnected status icon.