Connectivity Troubleshooting · Clash Technical Blog

Clash Is Connected but There Is No Internet: Troubleshooting DNS, Fake-IP, and Rules

“Connected” only means the client and core are running; it does not prove DNS, rules, and nodes are healthy. Compare the system proxy with Direct to determine whether requests are entering Clash.

  • No internet access
  • DNS
  • Troubleshooting
On this page

If Clash says connected but there is no internet access, first identify the specific type of failure

The same “Clash is connected” message may mean only that the core process is running; it does not prove that the system-proxy port works, the node is reachable, or DNS is healthy. Record one specific error, one destination address, and the current mode to establish a starting point.

First check for each symptom

SymptomCheck first
Every website immediately reports a proxy connection failureThe local address and port configured in the system proxy
Domains fail, but direct access by IP respondsDNS and browser secure DNS
Domestic sites work, while sites requiring proxying time outNode, policy group, and matched rule
The system proxy works, but enabling TUN breaks all connectivityService, virtual adapter, default route, and other VPN software
Only one app failsWhether that process enters Clash, plus the app's own status code

Use two toggles to narrow the failure domain first

Disable TUN, keep only Rule mode and the system proxy, and reopen the same page. If the system proxy works while TUN breaks connectivity, the subscription and node have at least one viable basic path, so focus on services, routes, and DNS. If both modes fail, leave the virtual adapter alone for now.

Then disable the system proxy to restore direct access and confirm that the underlying network works. If direct access also fails, address the Wi-Fi, broadband connection, corporate authentication, or router first. Clash cannot repair an underlying connection that has no internet access.

Whether this request appears on the connections page is the most important branch

Clear the connection records and visit one fixed domain. If no new request appears, the browser may not use the system proxy, the port may be wrong, or the app may bypass the current capture method. Changing more rules and nodes will not affect that.

If the request appears, record the destination, matched rule, policy group, and error. Unexpected DIRECT, REJECT, timeout, and connection refused results point to different layers. The tray icon's color omits the most useful evidence.

One minimal reproduction

  1. Keep the configuration and node fixed

    Temporarily disable automatic switching and keep one egress.

  2. Clear the connection and log views

    Do not mistake a background update for the page request you just made.

  3. Visit the same HTTPS address

    Record whether it enters Clash, which rule it matches, and what error appears.

  4. Change only one variable and retry

    Do not change the node, rule, DNS, and TUN together.

For an immediate error, verify the system proxy and listening port

If the browser immediately says it cannot connect to the proxy server, Windows or macOS may still point to an old port on 127.0.0.1 while the current client is not listening. Read the actual mixed-port from client settings, then verify it with netstat, lsof, or ss.

If the port exists, make an explicit request with curl -x to distinguish the local proxy entry point from system-proxy configuration. If the explicit proxy works but the browser fails, the problem is in system or browser settings. If the explicit proxy also fails, return to the core, node, and logs.

Check the local entry point
# 将 7890 换成客户端实际端口
curl -I -x http://127.0.0.1:7890 https://example.com

# Windows
netstat -ano | findstr :7890

# macOS / Linux
lsof -nP -iTCP:7890 -sTCP:LISTEN

Investigate DNS only when resolution behavior is abnormal

Give DNS priority only when a domain request lacks a destination address for a long time, nslookup fails, or disabling browser secure DNS changes the behavior. First route the browser, system, and Clash through one resolution path, then check whether nameserver is reachable.

If the system uses router DNS while the browser independently enables secure DNS, Clash may not receive the complete domain. During troubleshooting, temporarily disable browser DoH so a domain follows only one resolution path from the system to Clash; afterward, decide whether to enable it again.

With Fake-IP, distinguish a normal virtual address from a stale cache first

In Fake-IP mode, a domain resolving to an address such as 198.18.0.0/15 is usually normal: the app connects to the virtual address first, then Mihomo restores the domain and evaluates rules. Seeing 198.18.x.x does not itself mean DNS poisoning. What matters is whether the connections page retains the original domain and matches the intended policy.

The real problem occurs when the system and app retain old results after switching configurations, changing rules, or moving from Redir-Host to Fake-IP. Close the test app, clear the system DNS cache, restart the Mihomo core, and test again. Do not retain old connections while repeatedly switching enhanced modes.

If a NAS, printer, router dashboard, or corporate internal domain must return a real intranet address, add it to the current configuration's fake-ip-filter or send it to the appropriate internal DNS. Verification should show that these local domains still resolve to real LAN addresses while public domains reappear by name on the connections page and route correctly.

Clear the cache after changing DNS modes on Windows
ipconfig /flushdns

After the request enters the client, separate rule, node, and TUN issues

The request times out after matching DIRECT

Common cause:A specific rule was matched early by a broader direct rule

Resolution:Inspect the final rule order and place exact rules before GEOIP and MATCH.

The request matches a proxy group but reports dial timeout

Common cause:The current node, protocol, or remote endpoint is unreachable

Resolution:Compare against another known-working pinned node without changing DNS first.

The local proxy reports connection refused

Common cause:The port is not listening, or the system proxy is configured incorrectly

Resolution:Check mixed-port, process status, and port conflicts.

All connectivity fails only under TUN

Common cause:Service permissions, default route, virtual adapter, or another VPN conflict

Resolution:Restore the system proxy and check each item separately; do not reset the entire computer's network.

The final diagnosis should fit in one concrete sentence—for example, “the request entered Clash, matched PROXY, and the fixed node returned dial timeout”—rather than “the app is green but there is no internet.” That sentence already identifies the layer to address next.

References