Connectivity Troubleshooting · Clash Technical Blog

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

Connected status does not prove the target request succeeded. Check the relevant settings for local-proxy errors, resolution failures, node timeouts, or TUN-only disconnections. Compare the system proxy, direct access, and Connections, and record the rule, exit, and log error.

  • No internet access
  • DNS
  • Troubleshooting
On this page

An app showing “Connected” is only the start of troubleshooting; check whether the target you just accessed returned a result. An immediate proxy error on a web page, failures only with domain names, and losing internet access across the device after enabling a virtual network adapter require different checks. Recording the exact symptom helps avoid changing rules, nodes, and system settings all at once.

Connected Status Does Not Mean Requests Succeed

Record the failing target, exact error, and current mode, then use the table below to choose a check. A running core does not prove that the proxy port works, and a reachable node does not prove that DNS works; verify these separately.

The system-proxy comparison and port checks below apply to Windows/macOS. On Android, check VPN permission and per-app settings using the mobile guide. Once there are connection records, the DNS, rule, and node checks later in this article still apply.

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

Compare System Proxy, TUN, and Direct Access

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.

For the direct test, use a page that your current network can normally open without a proxy, rather than the target that requires one. If that page also fails after disabling the system proxy, check Wi-Fi, broadband, corporate authentication, or the router. Clash cannot fix a network that already lacks internet access.

Does the Web Request Appear on the Connections Page?

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.

Once the request appears, record its target, matched rule, group, and error. Unexpected DIRECT, REJECT, timeout, and connection refused indicate different causes and need separate checks. Looking only at the tray icon color misses this concrete 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

If a domain has no target address, nslookup fails, or disabling browser secure DNS changes the result, inspect the resolution path. Temporarily disable browser DoH for comparison, then check the paths actually used by the OS and Clash and whether nameserver is reachable. Disabling one toggle does not automatically give them the same resolution settings.

After recovery, decide whether to re-enable the browser’s independent resolution. When router and browser resolution coexist, Clash may not receive the full domain name.

How to Distinguish Fake-IP Addresses from Stale Cache

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:An unintended direct rule may match, or the local network or destination service may be unreachable

Resolution:First check whether the request should connect directly. Only if it should use a proxy, place the precise rule before GEOIP and MATCH, then repeat the same request.

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.

References