← 返回 xn--mes358abvns79a.shop 本地视觉备份 首页

Mihomo 连接不上节点怎么办?按日志、DNS、TUN 逐步排查

更新于 2026-10-25 · xn--mes358abvns79a.shop

简答:Mihomo 节点可见但连接不上时,先关闭 TUN 和系统代理,手动测试单个节点,再按日志区分端口、DNS、节点或规则问题。单节点失败通常查节点参数,全部节点失败则优先查订阅、DNS、系统时间和网络环境。

定义:Mihomo 连接不上节点,是指配置已经加载、节点能够显示,但节点测速、代理握手或实际连接无法完成的情况。

先做这一分钟判断:节点可见但连接失败,先不要改 DNS

本文是第三方使用指南,不代表 Mihomo 或任何客户端项目的官方页面。假如配置已经导入、节点列表也能显示,请先按下面顺序缩小范围:关闭 TUN,暂时关闭系统代理和其他代理软件,切换到手动选择的单个节点,再执行一次延迟测试或打开一个普通网页。

现象优先检查下一步
只有一个节点失败节点域名、端口、认证参数或该节点状态换同一订阅中的另一个节点对比
全部节点都失败订阅、DNS、系统时间、本地网络、代理端口先检查配置加载和域名解析
测速失败但网页偶尔能开测速地址、策略组、URL-test 条件手动选择节点并用实际网页复测
连接成功但应用打不开规则模式、TUN、DNS 劫持和应用代理设置先用全局模式或关闭 TUN 做对照
节点列表为空或更新失败订阅地址、订阅有效期、网络和更新时间先解决订阅更新,再测试节点

代理端口、控制器地址和配置字段以你使用的客户端设置页为准。Mihomo 官方文档说明,代理流量可以通过 HTTP、SOCKS、mixed-port、TUN 或 listeners 接入,不同客户端可能会自行分配端口,因此不要直接套用其他教程里的端口值。参考:Mihomo 入站配置。

第一步:确认内核运行、配置加载和代理端口监听

节点显示出来,不等于 Mihomo 内核已经正常工作。先在客户端日志或内核状态页确认没有配置解析错误,再确认代理端口确实处于监听状态。

  1. 检查配置是否加载成功:重新加载配置后观察日志,重点看是否出现 unknown field、配置解析失败、provider 更新失败或启动后立即退出。配置字段应以 Mihomo 官方配置文档为准;不认识的字段不要直接保留。
  2. 检查代理端口:在客户端设置页找到当前 mixed、HTTP 或 SOCKS 端口,记下实际值,不要使用示例中的固定端口。
  3. Windows:打开 PowerShell,替换占位符后执行:
Get-NetTCPConnection -State Listen -LocalPort <混合端口>
  1. macOS 或 Linux:打开终端执行:
lsof -nP -iTCP:<混合端口> -sTCP:LISTEN

如果没有监听结果,优先回到客户端检查内核是否启动、端口是否被其他程序占用,以及配置是否能通过校验。Mihomo 的运行模式包括 rule、global 和 direct;如果当前处于 direct,节点本身可能不会被实际使用。模式定义见 Mihomo 全局配置。

第二步:手动选择单个节点,区分节点故障和全局故障

不要一开始就依赖自动选择或 URL-test。进入代理组,手动选一个节点,记录结果,再换第二个节点复测。这样可以把“某个节点失败”和“所有节点失败”分开。

测试结果较可能的故障层建议动作
A 节点失败,B 节点成功单节点地址、端口、协议、认证或节点侧状态检查订阅是否更新,暂时使用可连接节点
所有节点都超时订阅参数、DNS、系统时间、本地网络或出口网络继续做 DNS 和基础网络测试
节点能测速,实际网页打不开规则、模式、DNS 或应用没有走代理切换 global 做对照,再检查应用代理
自动组总是选到失效节点URL-test 测试地址、超时或策略组成员手动选节点,并检查 url、interval、timeout

URL-test 只会测试代理组中配置的 proxies;如果节点是通过 provider 或筛选条件加入,还要确认它确实进入了目标组。官方字段说明见 proxy-groups 配置和 url-test 配置。测速失败只说明指定测试请求没有按预期完成,不等同于所有业务都不可用,最好再用手动节点访问实际业务页面复测。

第三步:按日志关键词判断是端口、DNS 还是节点连接问题

把日志级别临时调整为 debug,重新发起一次连接,然后只截取与本次连接相关的几行,并删除订阅地址、用户名、密码、节点域名和 API 密钥。Mihomo 官方 API 提供实时日志接口,并支持 info、warning、error、debug 等级别,详见 Mihomo API 文档。

日志关键词或现象常见判断方向最小改动
connection refused目标端口没有接受连接,或本地代理端口、节点端口填写错误核对客户端实际监听端口和节点参数
timeout连接在规定时间内没有完成,可能是节点、路由、丢包或防火墙换一个节点,并用普通网络对比
no such host、dns resolve failed域名没有解析成功,可能是订阅域名、节点域名或目标域名先用 nslookup 或 dig 单独验证对应域名
unknown field配置使用了当前内核不识别的字段定位字段并对照官方文档删除或改正
连接成功但无流量策略组未选中、规则走 DIRECT,或应用没有使用代理切换 global,确认代理组当前选中的节点

这些关键词只能作为定位线索,不能脱离上下文直接下结论。特别是 timeout,既可能是节点问题,也可能是本地网络丢包、DNS 延迟或 TUN 路由异常。

第四步:检查节点域名解析和 DNS 配置

如果日志出现 no such host 或 dns resolve failed,先确定失败的是哪个域名:订阅地址、节点服务器域名,还是目标网站域名。三者处理方式不同。

  1. Windows:打开命令提示符或 PowerShell,执行:
nslookup <节点域名>
  1. macOS 或 Linux:执行:
dig <节点域名>
  1. Android:暂时关闭系统的私人 DNS,再关闭 Mihomo 的 TUN,使用普通代理测试;Android 开启私人 DNS 时,Mihomo 官方文档说明 DNS 请求可能无法被自动劫持。
  2. 配置层面:确认 default-nameserver 能解析 DNS 服务器地址,nameserver 用于普通域名解析,proxy-server-nameserver 专门用于解析代理节点域名。不要把一个无法通过当前网络访问的 DNS 地址同时作为唯一解析路径。

官方 DNS 文档明确区分了 default-nameserver、nameserver、fallback 和 proxy-server-nameserver 的作用。修改时只改一层,改完重新加载配置并复测,不要同时替换所有 DNS 字段。参考:Mihomo DNS 配置。

dns:
  enable: true
  default-nameserver:
    - <可用的 DNS IP>
  nameserver:
    - <你的 DNS 地址>
  proxy-server-nameserver:
    - <用于解析节点域名的 DNS 地址>

上面的地址只是占位符,必须替换为你已核验、且适合当前网络环境的 DNS 地址;不要直接复制占位符。

第五步:关闭 TUN、系统代理和其他代理软件做最小化对照

同时开启 TUN、系统代理、浏览器代理和其他网络工具时,可能出现端口冲突、路由重复、DNS 劫持互相覆盖或应用走错出口。排查时先只保留一种接管方式。

  1. 退出其他代理客户端、网络过滤器和可能修改系统代理的工具。
  2. 在 Mihomo 中暂时关闭 TUN。
  3. 关闭系统代理自动脚本或手动代理,只保留 Mihomo 的普通 HTTP、SOCKS 或 mixed 代理。
  4. 让浏览器或测试工具明确指向客户端设置页显示的代理地址和端口。
  5. 手动选择一个节点,重新测试 DNS、节点延迟和实际网页。

如果关闭 TUN 后恢复,问题范围就集中到 TUN 权限、路由、DNS 劫持、网卡选择或防火墙。Mihomo 官方 TUN 文档说明,auto-route 用于自动设置路由,auto-detect-interface 用于选择出口网卡,strict-route 会强化路由约束;dns-hijack 会把匹配的 DNS 请求导入内部 DNS 模块,具体行为还与系统有关。参考:Mihomo TUN 配置。

Windows、macOS、Linux 和 Android 的差异可按下面判断:

第六步:检查规则模式、策略组和代理是否真的被使用

如果节点本身可以连接,但浏览器或应用仍然直连,重点看运行模式和规则。rule 模式会按 rules 从上到下匹配;global 模式要求在 GLOBAL 策略组中选择代理;direct 模式则是全局直连。规则顺序越靠前优先级越高,最终的 MATCH 规则通常应放在规则末尾。参考 Mihomo 路由规则。

  1. 把模式临时切换为 global,并在 GLOBAL 或对应策略组手动选择节点。
  2. 如果 global 可以使用,rule 模式不可用,检查是否存在 GEOIP、DOMAIN、RULE-SET 或 MATCH 规则把请求送到了 DIRECT。
  3. 如果只有某个应用打不开,检查该应用是否使用独立代理设置、是否被 TUN 的 include 或 exclude 条件排除。
  4. 检查代理组当前的 now 或 selected 状态,不要只看节点是否出现在列表里。
rules:
  - IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
  - GEOIP,CN,DIRECT
  - MATCH,<你的代理组名称>

这是结构示例,不是可直接套用的完整配置;代理组名称必须替换为实际存在的名称。不要把不存在的组名写进 MATCH,也不要在不清楚作用时同时修改多条规则。

第七步:订阅、系统时间和网络环境检查

如果所有节点都失败,或节点列表刚刚更新后突然全部不可用,继续检查订阅和基础网络:

如果更换网络后只有部分节点恢复,优先比较 DNS、丢包、出口策略和防火墙差异;如果所有网络都失败,再回到订阅、节点参数和配置解析检查。

复测标准:什么结果可以说明问题已定位

不要只看“节点列表变绿”或一次测速结果。完成修改后,按同一顺序复测并记录结果:

  1. 配置可以重新加载,日志不再出现新的 unknown field 或配置解析错误。
  2. 代理端口处于监听状态,客户端界面显示内核仍在运行。
  3. 手动节点测试至少完成一次,能区分单节点失败还是全部节点失败。
  4. 代理域名可以解析,且日志不再出现对应的 no such host 或 dns resolve failed。
  5. 关闭 TUN 的普通代理测试与开启 TUN 的系统流量测试结果一致,或已明确知道差异来自 TUN。
  6. 在当前模式下确认请求实际命中了目标代理组,而不是 DIRECT。

如果仍然失败,提交问题时只提供脱敏后的系统类型、客户端版本、配置字段片段、日志关键词和复现步骤。不要公开订阅链接、API 密钥、节点密码、完整节点地址或个人 IP。

常见问题

为什么 Mihomo 能看到节点,但节点测速全部失败?

节点显示只说明配置被读取,不代表代理握手成功。先手动选择单个节点,关闭 TUN 和系统代理,再检查节点域名解析、代理参数和日志中的 timeout、connection refused 或 no such host。

测速失败是不是说明节点一定失效?

不一定。URL-test 依赖测试地址、超时、预期状态和策略组成员;测速失败可能来自测试地址不可达、DNS 或网络丢包。应使用手动节点测试和实际业务页面复测。

出现 no such host 时应该改 nameserver 还是 proxy-server-nameserver?

先看日志中失败的域名。如果是节点服务器域名,优先检查 proxy-server-nameserver;如果是普通目标域名,再检查 nameserver、nameserver-policy 和系统 DNS。订阅地址解析失败则应先查当前网络和订阅地址本身。

关闭 TUN 后能用,打开 TUN 后不能用怎么办?

优先检查 TUN 权限、auto-route、auto-detect-interface、strict-route、dns-hijack、系统 VPN 权限和防火墙。Android 还要检查私人 DNS及应用是否被排除;Linux 还要检查路由和透明转发规则。

为什么切换到 global 后能用,rule 模式却不能用?

这通常说明节点本身可用,但规则或策略组没有把请求送到目标代理。检查规则顺序、DIRECT、GEOIP、RULE-SET、MATCH 和当前策略组选择,并确认应用没有单独配置直连。

连接失败时可以直接把配置全部换成网上的示例吗?

不建议。不同订阅、客户端和内核版本支持的字段可能不同。应先备份配置,只修改一个变量,并优先对照 Mihomo 官方配置文档核验字段。

常见问题

为什么 Mihomo 能看到节点,但节点测速全部失败?

节点显示只说明配置被读取,不代表代理握手成功。先手动选择单个节点,关闭 TUN 和系统代理,再检查节点域名解析、代理参数和日志中的 timeout、connection refused 或 no such host。

测速失败是不是说明节点一定失效?

不一定。URL-test 依赖测试地址、超时、预期状态和策略组成员;测速失败可能来自测试地址不可达、DNS 或网络丢包。应使用手动节点测试和实际业务页面复测。

出现 no such host 时应该改 nameserver 还是 proxy-server-nameserver?

先看失败的域名。如果是节点服务器域名,优先检查 proxy-server-nameserver;如果是普通目标域名,再检查 nameserver、nameserver-policy 和系统 DNS。

关闭 TUN 后能用,打开 TUN 后不能用怎么办?

优先检查 TUN 权限、auto-route、auto-detect-interface、strict-route、dns-hijack、系统 VPN 权限和防火墙。Android 还要检查私人 DNS及应用是否被排除。

为什么切换到 global 后能用,rule 模式却不能用?

这通常说明节点本身可用,但规则或策略组没有把请求送到目标代理。检查规则顺序、DIRECT、GEOIP、RULE-SET、MATCH 和当前策略组选择。

连接失败时可以直接把配置全部换成网上的示例吗?

不建议。不同订阅、客户端和内核版本支持的字段可能不同。应先备份配置,只修改一个变量,并优先对照 Mihomo 官方配置文档核验字段。

相关阅读

参考资料

  1. Mihomo Configuration 官方配置文档
  2. Mihomo 入站配置
  3. Mihomo 全局配置
  4. Mihomo proxy-groups 配置
  5. Mihomo url-test 配置
  6. Mihomo 路由规则
  7. Mihomo DNS 配置
  8. Mihomo TUN 配置
  9. Mihomo API 文档