这次比对结论很明确:截至 2026-05-24,SagerNet/sing-box 的 GitHub releases 列表顶部是 v1.14.0-alpha.25,但它是 prerelease;GitHub 的稳定版 Latest 仍指向 v1.13.12v1.13.12 release notes 只写了 naiveproxy 更新和 fixes/improvements,没有声明新的 DNS 或 route 迁移项。

所以这篇不是把 alpha 内容当成稳定版升级通知,而是给自维护 JSON 的用户一张比对表。你要确认自己看的 release 类型,再决定是否按官方 Migration 页面处理 DNS server、DNS rule、route rule action 和 domain_resolver。如果你还在补基础配置,可先看 sing-box 下载与配置入门

今天比对到哪个版本?

比对入口2026-05-24 结果DNS/route 结论
GitHub releases 列表顶部v1.14.0-alpha.25,发布时间为 2026-05-22顶部不是稳定版;release notes 主要写 Tailscale endpoint 字段回退和 fixes/improvements
GitHub Latest releasev1.13.12,发布时间为 2026-05-15release notes 没有新的 DNS/route 迁移大项
官方 Migration 页面列出 1.14.01.12.0 等迁移章节DNS/route 配置改动要从这里逐项确认
官方 changelogv1.14.0-alpha.21 曾列出 TUN DNS mode、mDNS DNS server、preferred_by、route rule action 支持这些属于 alpha 链路,生产配置先单独测试

这张表的用法是先排除误读:不要看到 v1.14.0-alpha.25 就把所有 1.14.0 migration 当成稳定版已落地,也不要因为 v1.13.12 没写迁移就忽略自己配置里还没处理的 1.12.0 旧字段。

为什么不能只看 release notes?

sing-box 的 release notes 经常很短,尤其是 patch 版本。v1.13.12 的公开说明只有 naiveproxy 版本更新和 fixes/improvements,无法覆盖历史迁移项,也不会替你判断旧 JSON 是否还在使用 deprecated 字段。

真正要看的顺序是三步,看 GitHub release 类型,再看官方 changelog 是否有同版本能力变化,最后看 Migration 页面是否出现与你配置字段同名的迁移章节。DNS 和 route 这类配置项尤其要这样比对,因为旧字段常常还能短期运行,但下一次大版本可能变成启动时报错。

DNS 迁移要查哪几个关键词?

官方 Migration 里,DNS 相关的高优先级关键词有 DNS serversindependent_cachestore_rdrcip_versionquery_typematch_responseevaluateFakeIP

1.12.0 的重点是 DNS server 新格式。旧写法常见是把 address 写成 1.1.1.1tls://1.1.1.1https://1.1.1.1/dns-queryfakeip;新写法改成按类型拆开,例如 type: udptype: tlstype: httpstype: fakeip,再用 servertaginet4_range 等字段描述细节。

1.14.0 的重点更偏行为变化。官方 Migration 写到,ip_versionquery_type 在 DNS rule 里的评估范围会变化;如果还混用旧地址过滤字段、旧 strategy DNS rule action option,或旧 rule_set_ip_cidr_accept_empty,配置可能在启动阶段被拒绝。站内已有 sing-box 1.14 legacy DNS rule-set 迁移清单 可以和官方字段交叉比对。

route 迁移要查哪几个关键词?

route 相关先搜 domain_resolverdefault_domain_resolverresolvehijack-dnsroute-optionsRoute Rule Action。这些词比“规则分流失效”更直接,因为它们对应官方字段。

1.12.0 以后,legacy outbound DNS rule items 可以迁移到 domain_resolver。这类变更容易被误判成 DNS 小改动,实际影响的是出站拨号解析:某个 outbound 自己解析域名时,要不要指定本地 DNS、重写 TTL、带 client_subnet,都可能从 dns.rules 移到 outbound 或 route options。

旧的 special outbounds 也要看 route rule actions。比如 DNS 出站不再只是保留一个特殊 outbound 标签,官方示例把 DNS 流量匹配到 hijack-dns 等 action。你如果维护的是服务端、旁路由或多出站 JSON,这一类迁移比图形客户端用户更容易踩到。

release 变更比对表怎么用?

比对项在哪里看命中后怎么处理
release 是否为 prereleaseGitHub releases 列表或 API 的 prerelease 字段alpha 版本只进测试 profile,不直接覆盖长期使用配置
稳定版 Latest 是哪个 taghttps://github.com/SagerNet/sing-box/releases/latest以该 tag 判断普通用户是否需要升级 core
release notes 是否点名 DNS/route当前 tag 的 notes没点名时,不自行推断为迁移大版本
Migration 是否出现同名字段官方 Migration 页面搜索字段名命中 deprecatedrejected at startup 时,备份再改配置
changelog 是否有 alpha 能力官方 changelog 搜 TUN DNSmDNSpreferred_by只在测试环境验证,不写进生产配置模板

比对路径是先打开 GitHub releases,再打开 /releases/latest,最后在 Migration 页面搜 DNSroutedomain_resolverquery_type。这个顺序可以避免一个常见误差:把 alpha changelog 的能力项,误写成稳定版 patch release 的迁移要求。

哪些配置现在最该自查?

第一类是还在用旧 DNS server address 形式的配置。比如 address: "https://dns.google/dns-query"address: "fakeip" 这类写法,要按 1.12.0 Migration 对照新 server 类型。

第二类是 DNS rule 里用了 ip_cidrip_is_privatequery_typeip_version 的配置。尤其是引用了只包含 IP CIDR 的 rule-set 时,要看是否需要用 evaluate 先拿 DNS response,再用 match_response 匹配。

第三类是为 outbound 单独指定解析策略的配置。旧的 outbound DNS rule items、domain_strategy 和新 domain_resolver 不是同一个层级的概念,不能只做字符串替换。

第四类是 TUN 和 DNS 劫持相关配置。v1.14.0-alpha.21 changelog 提到 TUN DNS mode、接口 DNS hijack、mDNS DNS server 和 preferred_by,这些对桌面、Android 和软路由的表现都可能不同;没有单独测试前,不要把 alpha 示例当成长期模板。遇到日志层面的判断,可以配合 sing-box TUN/DNS/route 日志排查 做最小化复现。

升级前怎么验证没有改坏?

保存当前 JSON 和客户端内置 core 版本。命令行用户至少记录 sing-box version、启动命令、配置路径和第一条启动错误;图形客户端用户则记录客户端版本、core 版本、导入的 profile 名称。

再用最小配置验证 DNS。只保留一个 DNS server、一个 direct outbound 和一条可观察的 DNS rule,确认日志里没有 deprecatedunknown fieldrejected at startupinvalid rule 这类关键词。

最后再合并 route。把 domain_resolverdefault_domain_resolverresolvehijack-dns 这几类改动分批加入,每加一批就启动一次。DNS 与 route 同时改,出错时很难判断是解析规则、出站拨号还是 rule action 写法导致的。

这篇不确认什么?

本文只比对到 2026-05-24 的 GitHub releases、GitHub Latest、官方 Migration 和官方 changelog。v1.14.0-alpha.25 之后如果又发布 alpha 或稳定版,结论要重新看对应 tag。

本文也不替代你的客户端兼容性测试。SFA、Windows GUI、OpenWrt 包、Docker 镜像和 systemd 服务读取配置的路径不同,core 能解析某个字段,不代表图形界面已经提供对应开关。

相关阅读