Clash Verge为什么有时不可用

Clash Verge为什么有时不可用,这个问题我详细很多人都遇到过,到底是什么问题呢?

Clash Verge为什么有时不可用

一、先理解:什么是 DNS 泄露?

当你通过 Clash 走代理时,DNS 查询仍然走本机或 ISP 的 DNS(而不是通过代理或加密的上游 DNS),就会泄露你访问的网站给 ISP 或第三方。表现为即便代理生效,DNS 查询的提供者显示为你的真实 ISP 或本地 DNS。

二、关键解决思路(概括)

  1. 让 DNS 查询走 Clash 而不是系统/ISP(把 DNS 监听到 Clash 提供的本地端口)

  2. 使用加密的上游 DNS(DoH/DoT/DoQ)或远程 DNS(避免明文 UDP 到 ISP)

  3. 确保流量路由方式正确:使用 TUN/VPN 模式或启用全局转发(redir/tproxy)以拦截并转走本地发出的 DNS 请求(53 端口/UDP)

  4. 在系统层面指向 Clash 的本地 DNS(127.0.0.1:端口)并禁用 IPv6 的系统 DNS(若必要)

三、逐步修复(适用于多数平台)

1)配置 Clash 的 dns 节(config.yaml)

把 DNS 交给 Clash,用加密上游(DoH/DoT)。示例(放在你的 config.yaml 的 dns: 下):

dns: enable: true listen: 0.0.0.0:53 # 或 127.0.0.1:53(根据系统安全策略) default-nameserver: - 1.1.1.1 enhanced-mode: fake-ip # 或 'redir-host'(根据需要) fake-ip-range: 198.18.0.1/16 nameserver: - https://cloudflare-dns.com/dns-query # Cloudflare DoH - https://dns.google/dns-query # Google DoH(可选) - tls://9.9.9.9:853 # Quad9 DoT(可选) fallback: - 8.8.8.8 use-hosts: true fake-ip-filter: - "+.*" # 或更严格规则,排除局域网

重点:enhanced-mode: fake-ip 能避免部分软件直接解析原始 IP 导致泄露;listen 决定 Clash 在本机监听哪个地址/端口来提供 DNS 服务。

2)让系统/浏览器使用 Clash 的本地 DNS

  • Windows:将本地网络适配器的 DNS 改为 127.0.0.1(若 Clash 监听 127.0.0.1:53);或把 DNS 改为 127.0.0.1:53(图形界面某些系统不直接支持端口,推荐使用 Clash 的系统代理/代理模式 + TUN)。

  • macOS / Linux:修改 /etc/resolv.conf(或 Network settings)指向 127.0.0.1,或在 NetworkManager 中设置。

  • Android:若使用 Clash for Android(Tun 模式),打开「代理 DNS」/「通过代理解析 DNS」选项,或者在系统 DNS 里指向 127.0.0.1(需要 root 或使用内置 VPN)。

  • 浏览器:不要单独启用浏览器的 DoH(除非它指向同样的上游且通过代理)。若浏览器的 DoH 配置绕过系统代理,会造成泄露。

3)启用 TUN / redir / TProxy(拦截本机 53 端口)

  • Clash Verge:启用 System Proxy + TUN 模式(如果可用)。TUN 能把本地发出的 UDP/53 请求也导入 Clash。

  • Clash for Android:启用 Tun 模式(VPN 模式) 并开启「阻止本机 DNS 泄露 / DNS via Proxy」。

  • Linux 服务器(clash service):使用 iptables 或 nftables 将 53 端口的流量重定向到 Clash(redir 模式),例如(示例,仅供参考,应按环境调整):

# 将本地发出的 udp:53 重定向到本地 1053(clash listen) iptables -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to-ports 1053

(注意:Windows 下用 TUN,Linux 可用 iptables。操作前备份规则。)

4)禁用系统级的 IPv6 DNS(如果存在问题)

部分系统会优先用 IPv6 的 DNS,导致绕过。临时禁用 IPv6 或确保 Clash 的 DNS 同时监听 IPv6。

5)重启 Clash / 清空本地 DNS 缓存

  • Windows:ipconfig /flushdns

  • macOS:sudo killall -HUP mDNSResponder 或对应命令

  • 重启 Clash 客户端以加载新 config。

四、如何验证 DNS 泄露是否修复

  1. 打开(在启用代理并且确保浏览器走代理的情况下):

  2. 测试步骤:

    • 先在未启用 Clash 时测一次(记录 ISP DNS)

    • 启用 Clash(并完成上面配置)后再测一次。

    • 若显示的 DNS 提供商变成 Cloudflare/Google/Quad9(或你配置的上游),且不是原 ISP,则无泄露。

    • 也可打开开发者工具看网络请求,或使用 dig @127.0.0.1 example.com 手动测试。

五、常见坑与解决方法

  • 浏览器自带 DoH 绕过代理:Chrome/Firefox 的 DoH 若设置为直接到 DoH 服务器,可能绕过系统代理。关闭或设置为“由操作系统决定”/指向与 Clash 相同的上游。

  • 某些应用硬编码 DNS(例如某些插件、系统服务):需用 TUN 或 iptables 强制拦截。

  • Clash 未监听 0.0.0.0 导致无法从其它应用访问:确保 listen 配置正确并与系统 DNS 设置一致。

  • Windows 有 DNS over HTTPS 客户端(Windows 10/11):检查系统 DoH 设置,避免绕过 Clash。

  • 端口被占用(53):如果占用,Clash 监听失败,可改用例如 1053 并用重定向规则把 53 转到 1053。

六、示例:完整 minimal DNS 配置(Clash config.yaml 片段)

dns: enable: true listen: 127.0.0.1:53 default-nameserver: - 1.1.1.1 enhanced-mode: fake-ip fake-ip-range: 198.18.0.1/16 nameserver: - https://cloudflare-dns.com/dns-query - tls://9.9.9.9:853 fallback: - 8.8.8.8 use-hosts: true fake-ip-filter: - "+.*"

记得把 listen 与系统 DNS 指向一致。

分享

你的反应是什么?

喜欢 喜欢 0
不喜欢 不喜欢 0
爱 0
有趣的 有趣的 0
生气的 生气的 0
伤心 伤心 0
哇 0