Clash and mihomo Terminology Guide
From cores and proxy protocols to Fake-IP, TUN mode, and rule-based routing, this guide explains common concepts through their configuration relationships. Each entry covers the problem it solves, where it usually appears, and what to watch for when reading a configuration.
Cores and Clients
The core handles network connections, while the GUI client turns those capabilities into an interface users can operate. Understanding the split helps identify whether an issue comes from the configuration, core, or client layer.
- mihomo
-
mihomo is a proxy core developed from Clash Meta. It establishes protocol connections, handles DNS, matches rules, and forwards traffic. Most GUI clients call on the core and add configuration management, system proxy controls, and log views.
When troubleshooting, first separate client-interface settings from core configuration. Rule matches, DNS queries, and connection errors shown in logs are usually generated directly by the core.
- Clash Meta
-
Clash Meta is an extended implementation in the Clash core ecosystem, adding more proxy protocols, rule capabilities, and network-processing options. In related documentation, Meta fields usually refer to this extended syntax or compatibility layer.
Current materials may use both Clash Meta and mihomo. When reading older configurations, check the fields and core version rather than inferring feature support from the name alone.
- GUI Client
-
A GUI client is a desktop or mobile app with a graphical interface. Common features include subscription updates, policy switching, system proxy controls, TUN toggles, and log viewing. The client and proxy core can be updated separately, so their versions may not match.
A setting missing from the interface does not necessarily mean the core lacks support. Some advanced fields must be enabled through an override or by editing the YAML configuration directly.
- YAML
-
YAML is a common data format for Clash configurations and expresses field hierarchy through indentation. It is sensitive to spaces, colon placement, and list markers; tabs, misaligned levels, or missing spaces can cause parsing failures.
Keep indentation consistent at the same level when editing a configuration. Strings containing special characters can be quoted to prevent them from being misread as booleans, numbers, or comments.
- Configuration File
-
The configuration file stores settings such as ports, operating mode, DNS, nodes, proxy groups, and rule sets. It is the main input read when the core starts, and subscription content is also loaded as a configuration file.
A configuration that downloads successfully is not necessarily valid for the core. When loading fails, check YAML syntax first, then verify that the fields are supported by the current core.
Proxy Protocols
The protocol determines how the client connects to the proxy server. HTTP and SOCKS5 used by the system proxy entry point are different concepts from Shadowsocks and Trojan used by nodes.
- HTTP Proxy
-
The HTTP proxy interface accepts requests from apps that support proxy settings and is commonly used by browsers, download tools, and developer tools. HTTPS sites typically establish a tunnel with CONNECT; a proxy does not turn the destination into ordinary HTTP.
The HTTP port in a Clash configuration is a local listening entry. It has no direct correspondence with the protocol used by a remote node.
- SOCKS5
-
SOCKS5 is a widely supported proxy protocol that can carry various higher-level connections and let apps resolve domain names locally or through the proxy. Many command-line and developer tools accept a SOCKS5 address directly.
With a form such as
socks5h, domain resolution is usually handled by the proxy; ordinarysocks5resolution behavior depends on the application. - Shadowsocks
-
Shadowsocks is an encrypted-transport proxy protocol. A node definition usually includes the server address, port, password, and encryption method; any mismatch can cause the connection to fail.
The encryption method in the configuration must match the server. Algorithms with similar names are not interchangeable, so preserve the original spelling when copying node parameters.
- Trojan
-
Trojan uses TLS to establish an encrypted connection. Node settings usually include the server, port, password, and certificate domain. With certificate verification enabled, a domain mismatch causes the handshake to fail.
snispecifies the server name used during the TLS handshake. It may differ from the connection address, but must match the server deployment and certificate configuration.
Rules and Routing
Rules match connections from top to bottom. Once a rule matches, traffic is handed to a proxy group, node, or built-in action. Ordering, target names, and rule-data freshness all affect the final route.
- Rule-Based Routing
-
Rule-based routing determines where a connection goes using its domain, IP, port, process, or a rule set. Rules are generally checked from top to bottom, and the first match determines the policy used.
Putting broad rules first can prevent later, more specific rules from ever matching. When editing a rule set, check both its order and the target policy name.
- Rule Provider
-
Rule Provider loads rule sets from a separate file or remote URL. The main configuration only needs to reference the collection name, while the rules can be updated independently at a defined interval.
A rule set must declare the correct behavior type and data format. Download failures, incorrect paths, or format mismatches can prevent the referenced rules from working properly.
- Proxy Group
-
A proxy group combines multiple nodes or other policies into one logical entry. Rules usually point to the group, while the user, latency testing, failover, or load balancing determines the actual route.
Proxy groups can reference other proxy groups, but names must match exactly. Circular references or missing names cause configuration errors.
- DIRECT
-
DIRECT is a built-in direct-connection policy. It means the connection bypasses proxy nodes and reaches the destination directly from the current device. LAN addresses, device services, and connections suited to a local route commonly use it.
Direct connections are still affected by local routing, firewalls, and DNS results. A DIRECT match only means the core selected a direct route; it does not guarantee that the destination is reachable.
- REJECT
-
REJECT is a built-in action that rejects connections, commonly blocking specific domains, addresses, or request types. It stops the matching traffic at the rule layer instead of selecting a proxy node.
An overly broad reject rule can affect web resources, app APIs, or system services. When content loads incompletely, check the logs to see whether the request matched REJECT.
- GeoIP
-
GeoIP matches traffic by the region associated with its destination IP and relies on a local geolocation database. It works well once the destination IP is known, but results depend on database coverage and freshness.
A domain’s server address can change with region, network conditions, and CDN routing. GeoIP is useful as one routing condition, not as a permanent statement of where an address belongs.
- GeoSite
-
GeoSite is a collection of domains organized by purpose, service, or region. Rules can reference a category to match related domains in bulk, reducing the need to maintain domain suffixes individually.
GeoSite and GeoIP match different objects: GeoSite targets domains, while GeoIP targets IPs. When the database is outdated, new domains or category changes may not be reflected promptly.
DNS and Resolution
DNS converts domain names into addresses and can also affect whether rules retain domain information. When troubleshooting resolution, check the enhancement mode, resolution servers, and the actual query route together.
- DNS Leak
-
A DNS leak occurs when domain lookups bypass the intended proxy or encrypted resolution path and are handled by the system default DNS, router, or another resolver. It concerns where queries actually go, not just which route the web connection uses.
Assess this alongside system DNS, browser secure DNS, client DNS settings, and the scope of TUN interception. Changing one nameserver does not necessarily cover every source of queries.
- Fake-IP
-
In Fake-IP mode, the core first returns a reserved address and maintains a mapping between that address and the original domain. When an app later connects to the address, the core can restore the domain information and continue applying domain rules.
Some LAN devices, connectivity checks, and services that require real addresses may need to be added to
fake-ip-filter. Do not expand exceptions indefinitely, or the domain-mapping benefits may be weakened. - Redir-Host
-
Redir-Host mode returns the real resolved address to the app while attempting to preserve the association between the domain and connection. Its address-return behavior differs from Fake-IP, so compatibility and rule-matching paths differ as well.
For apps that depend on real IPs, compare both enhancement modes. After switching, retest the DNS route, domain rules, and local service discovery.
- Nameserver
-
Nameserver is the list of servers used for ordinary domain resolution. It can contain traditional DNS, DoH, or other supported addresses. How multiple servers are selected depends on the core configuration and query results.
If an encrypted DNS address itself uses a domain name, the core must resolve that server name first. Incorrect bootstrap-resolution settings can create a dependency chain that never completes.
- DoH
-
DoH stands for DNS over HTTPS and sends DNS queries over HTTPS. It can encrypt queries between the device and resolver, but it does not automatically determine whether subsequent website connections use a direct or proxy route.
A browser may enable its own DoH settings, bypassing system or client DNS. When tracing the resolution path, check for additional DNS entry points in both the browser and operating system.
Subscriptions and Configuration Files
A subscription delivers configuration content that can be updated; nodes define connections, while overrides preserve local changes. Latency tests and TUN are common client-side utilities during use.
- Subscription
-
A subscription is a server-provided collection of configurations or nodes that can be updated periodically. The client retrieves it from a subscription URL and parses it into usable nodes, proxy groups, rules, and other items.
Updating a subscription may overwrite earlier direct edits. Local rules or DNS settings that must persist are better placed in a client-supported override or merge configuration.
- Node
-
A node is the connection definition for one proxy server, usually containing the protocol, server address, port, and authentication parameters. Its name is only a display label and does not prove line quality or actual location.
The same node can be referenced by multiple proxy groups. After renaming or deleting a node, update every proxy group that references its name.
- Latency
-
Latency usually means the response time measured after a client probes a specified test address. It helps assess reachability and make an initial speed comparison, but it is not the same as download speed or sustained stability.
Clients may use different test addresses, timeouts, and connection reuse methods, so latency values should not be compared directly across clients. Consider occasional results alongside repeated tests.
- TUN Mode
-
TUN mode takes over traffic through a system virtual network interface, allowing apps without manual proxy support to enter the core’s rule-processing flow. It usually covers more traffic than system proxy settings alone.
Enabling TUN may require system permissions and can conflict with other VPNs, virtual adapters, or security software. If the network goes offline, check the default route, DNS hijacking, and other network tools.
- Override
-
An override adds, replaces, or removes configuration fields without directly editing the original subscription. Common uses include fixing the port, adjusting DNS, adding rules, and modifying proxy groups.
Clients may differ in how they name and order overrides, merges, and scripts. After making changes, inspect the final generated configuration rather than checking only the override fragment.