先建立可复现的测试条件
先暂停自动切换节点,固定一个节点、一个测试网址和一种接管方式。客户端的“已连接”通常只说明内核已经运行,或者系统代理、虚拟网卡已启用;它不代表浏览器流量已经进入内核,也不代表远端节点能完成目标网站的 TLS 握手。
- 记录当前配置名、代理模式、策略组选择,以及系统代理和 TUN 的开关状态。不要公开完整订阅链接。
- 保存当前配置。后续每次只修改一个选项,测试完成后再决定保留还是撤销。
- 退出其他代理客户端和 VPN。企业设备上的安全软件或网络策略应交由管理员核查,不要直接停用防护。
- 打开客户端的连接列表和日志页,先使用
info级别。临时提高到debug时,注意日志可能包含访问域名和本地网络信息。 - 完全退出浏览器后重新启动,避免复用旧连接。所有对照测试都访问同一个地址。
一、确认系统代理指向正确端口
优先使用“系统代理开启、TUN 关闭”建立浏览器测试基线。系统代理主要影响遵循系统代理设置的应用,不等于接管所有进程。游戏、命令行程序、浏览器扩展和自行配置代理的软件可能走另一条路径。
检查系统设置与浏览器扩展
- Windows 11:进入「设置」→「网络和 Internet」→「代理」→「手动设置代理」,核对代理地址和端口。自动配置脚本与手动代理可能同时存在,需要确认实际生效的配置。
- macOS:进入「系统设置」→「网络」→当前网络连接→「详细信息」→「代理」,检查网页代理与安全网页代理是否指向客户端实际监听地址。
- 浏览器:暂时停用控制代理的扩展,检查是否存在独立代理配置或绕过列表。无痕窗口并不一定禁用所有扩展。
本机常用地址是 127.0.0.1。端口必须以当前生效配置为准,不能把 7890 当成所有客户端的固定值。下面只是说明字段用途的 YAML 片段,不是完整配置,也不需要直接覆盖现有订阅:
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
mixed-port 同时接受 HTTP 与 SOCKS 代理连接;只有 socks-port 的端口不能直接当作 HTTP 代理填写。external-controller 常见的 9090 是管理接口端口,不是网页流量入口。本机浏览器排障也不需要开启“允许局域网连接”。
绕过系统设置,直接测试本地代理
以下 Windows 命令显式指定 HTTP 代理,可用于区分“系统设置错误”和“代理链路错误”。如果实际端口不是 7890,先修改命令中的端口。macOS 与 Linux 使用 curl,并将 NUL 换成 /dev/null。
curl.exe --noproxy "" --proxy http://127.0.0.1:7890 --connect-timeout 10 --max-time 20 -o NUL -sS -w "HTTP=%{http_code}\n" https://example.com/
- 显式代理成功,浏览器失败:优先检查系统代理、浏览器扩展与代理绕过项,而不是继续调整节点。
- 立即提示无法连接本地端口:先检查内核是否运行、端口是否填错,以及监听进程是否属于当前客户端。
- 连接建立后超时:进入日志检查节点拨号、DNS 或目标网站访问阶段,不能仅凭超时认定端口有问题。
返回一个 HTTP 状态码说明此次请求至少收到了 HTTP 响应;403 或 451 仍可能是站点策略限制。若要确认走了预期代理,还需要同时查看连接记录中的出口链。
二、检查端口占用与内核启动
系统代理已经写入,但内核因配置错误未启动时,浏览器仍会把请求交给一个没有监听的端口。先查看日志中的启动错误,例如监听失败、配置解析失败或策略组引用不存在,再考虑修改端口。
在 Windows 查看监听进程
在 PowerShell 中执行以下命令。第一条检查监听状态和进程编号,第二条根据结果中的 OwningProcess 查询进程;示例编号 1234 需要替换为实际值。
Get-NetTCPConnection -LocalPort 7890 -State Listen
Get-Process -Id 1234
macOS 可使用 lsof -nP -iTCP:7890 -sTCP:LISTEN。如果监听者是另一个客户端,先正常退出它,再启动要使用的客户端。不要仅凭端口冲突就结束不明系统进程。
- 没有监听结果:检查内核运行状态、有效配置和端口类型,确认客户端界面的开关确实已生效。
- 端口被旧进程占用:退出重复实例,必要时通过任务管理器确认旧进程是否仍在运行。
- 修改为其他端口后:同步更新系统代理与应用内代理设置,避免客户端监听
7891、浏览器仍连接7890。
订阅文件与实际运行配置可能不同。客户端覆写、合并配置和图形设置都可能改变监听端口,应以运行时配置与监听结果为准。有关字段含义可查看端口配置说明。
三、隔离 TUN 权限与路由问题
如果系统代理测试能够访问,而开启 TUN 后失败,排查重点应转向虚拟网卡、路由和 DNS 接管。TUN 将 IP 流量交给内核处理,能覆盖部分不遵循系统代理的软件,但需要对应内核支持,以及创建网卡、修改路由等权限。
- 关闭系统代理,仅开启 TUN,重新启动测试应用。这样可以减少两种入口叠加带来的判断混乱。
- 按当前客户端要求安装或启动服务模式,批准系统权限请求。Windows 常由后台服务完成特权操作;macOS 可能需要授权辅助程序;Linux 通常需要适当的网络管理权限。
- 查看日志是否出现虚拟网卡创建失败、权限不足或路由添加失败。开关亮起但初始化报错,不能视为接管成功。
- 断开其他 VPN 后复测。多个虚拟网卡同时争用默认路由时,节点连接也可能被错误送回隧道,形成回环。
- 若休眠唤醒或切换 Wi-Fi 后才出现故障,重启客户端内核并重新建立 TUN,再检查路由是否恢复。
不要同时尝试更换 TUN 协议栈、开启 IPv6、修改 MTU 和切换 DNS。若只在大文件传输或部分 HTTPS 网站上停住,可以在基础连通后再针对 MTU 排查;它不应成为所有“打不开网页”问题的第一步。
四、区分系统 DNS 与内核 DNS
看到 no such host、lookup failed 或域名解析超时,先确认是哪一层在解析。浏览器可能使用安全 DNS,系统有自己的解析器,Clash 内核也可能单独解析目标域名和代理节点域名。修改系统 DNS,并不一定会改变内核 DNS 的行为。
先观察查询,再清理缓存
在 Windows 中运行以下命令可以观察系统路径的解析结果,但它不能证明浏览器和内核走了同一套 DNS:
nslookup example.com
ipconfig /flushdns
第二条命令仅清理 Windows DNS 客户端缓存。浏览器、内核及上游解析器可能还有各自的缓存。修改配置后,应按客户端支持的方式重启内核,并重新建立浏览器连接。
- 节点服务器使用域名:节点本身也需要先被解析。若解析上游必须经过尚未建立的代理,可能形成启动依赖,应检查节点域名的解析路径。
- 使用 DoH:
https://形式的 DNS 地址仍依赖网络连通与证书验证。检查系统时间,以及解析器域名如何完成初始解析。 - 浏览器使用安全 DNS:临时改为系统解析路径做对照。修改后如果故障消失,再检查浏览器解析流量的规则,而不是长期保留不明配置。
- 仅 IPv6 目标失败:检查本地 IPv6 连通性和代理链路支持。可临时关闭相关 IPv6 选项作对照,但要记录修改范围并在测试后复核。
Fake-IP 地址不是 DNS 错误的直接证据
Fake-IP 模式下,解析结果可能落在配置的合成地址池中,常见配置使用 198.18.0.1/16。内核保存域名与合成地址的映射,再处理后续连接。看到 198.18.x.x 不代表域名遭到错误解析,也不能用单纯的 ping 结果判断网页代理是否正常。
真正需要核查的是:拿到合成地址的流量是否继续经过同一个内核,以及映射是否仍然有效。如果应用拿到 Fake-IP 后绕过 TUN 直接连接,访问就可能失败。局域网设备发现、打印机或依赖真实地址的应用,可按实际需求设置 fake-ip-filter,不要把所有域名都加入过滤。基础概念见地址与 GeoIP 说明及术语手册。
五、用连接记录核对规则出口
如果请求已经进入内核,接着看连接列表中的目标域名、命中规则、策略组和最终节点。Rule 模式按规则顺序匹配,通常由第一条匹配规则决定出口;代理组名称叫“自动选择”,也不意味着该组当前一定选中了可用节点。
短时对照 Rule 与 Global
- 保持当前节点不变,在 Rule 模式打开目标网站,记录命中规则和出口。
- 短时切到 Global,并在 GLOBAL 策略组明确选择同一个节点,然后重新建立连接。
- 若 Global 可访问、Rule 不可访问,检查 Rule 是否把目标交给
DIRECT、REJECT或另一个失效策略组。 - 测试后恢复 Rule。Global 是定位工具,不是对所有流量的永久修复。
规则修改要关注优先级。把新的域名规则放在兜底 MATCH 后面通常不会生效,因为请求已被前面的规则接走。持久化修改应放到客户端支持的覆写或规则合并位置,直接改远程订阅生成的文件可能在下次更新时被覆盖。具体匹配方式可参考规则分流教程。
六、验证节点与目标网站状态
延迟测试通过,只能证明某次探测在指定超时内完成,不等于目标网站可用。例如列表显示 180 ms,但实际页面在 20 秒 后超时,这两个结果并不矛盾:探测地址、连接协议、出口限制和目标服务可能不同。这里的数值是判读示例,不是节点实测数据。
- 所有节点都失败:检查订阅是否到期、账户流量是否耗尽、当前配置是否已启用,以及服务端是否有维护通知。
- 只有一个节点失败:切换同一订阅中的另一节点,再访问相同目标。不要在切节点的同时改 DNS,否则无法判断是哪项修复了问题。
- 只有一个网站失败:检查目标网站状态和区域限制。节点能访问其他 HTTPS 网站时,不应直接归因于本地端口。
- 提示认证或握手错误:检查订阅是否已更新、节点凭据是否有效,以及内核是否支持该协议和参数。
- 提示证书错误:先校准系统日期、时区与证书环境。不要关闭证书验证来掩盖故障。
切换 Wi-Fi 与手机热点是有价值的对照:同一个客户端、同一个节点、同一个网址,只有当前网络失败时,应进一步检查该网络的访问限制、UDP 支持或 DNS 路径。热点会消耗移动数据,测试前注意流量成本。
按现象决定下一步操作
| 观察结果 | 优先检查 | 下一步操作 |
|---|---|---|
| 显式代理成功,浏览器失败 | 系统代理或浏览器独立设置 | 核对地址、端口与扩展,重建浏览器连接 |
| 本地代理端口拒绝连接 | 内核启动与监听状态 | 查启动日志和监听进程,再同步端口 |
| 系统代理成功,TUN 失败 | 网卡权限、路由与 DNS 接管 | 单独启用 TUN,检查初始化日志 |
| Global 成功,Rule 失败 | 规则命中和策略组出口 | 对照同一节点,修正误匹配规则 |
| 日志持续出现域名解析失败 | 系统、浏览器与内核 DNS 路径 | 定位报错层,检查上游连通和启动依赖 |
| 单节点或单网站失败 | 节点状态与目标访问限制 | 保持其他条件不变,换节点或换网络对照 |
仍未恢复时,提交最小诊断记录
向维护者反馈时,提供操作系统、客户端版本、内核版本、故障时间、代理模式、入口方式和可复现步骤。附上发生故障前后约 30 秒 的必要日志,并说明“显式代理是否成功”“关闭 TUN 是否恢复”“Global 是否可访问”。这些结果比一张“已连接”的截图更有定位价值。
发送前删除订阅令牌、节点密码、控制接口密钥和不必要的个人访问记录。排查结束后恢复临时改动,关闭调试日志,并确认系统代理指向当前仍在运行的客户端。更多常见错误可查看疑难解答,订阅入口与配置启用步骤见订阅导入教程。