升级 sing-box v1.14.4 后报错或无法使用怎么办?
简答:先别覆盖旧配置:先备份配置和订阅,再确认当前内核并执行 sing-box check。配置报错优先按迁移字段处理;能启动但 TUN 或 VPN 失效,则检查授权、系统网络扩展和客户端组件,最后再考虑回退。
定义:sing-box v1.14.4 升级排查,是通过确认内核版本、备份配置、校验 JSON、处理对应迁移项,并分别验证代理入站与 TUN/VPN 接管来定位故障的过程。
30 秒速查卡:先判断是配置、TUN 还是客户端问题
如果升级 sing-box v1.14.4 后突然无法使用,先不要覆盖旧配置,也不要立即删除客户端。先停止当前进程,复制配置、订阅地址和日志,再确认故障发生在哪一层。截至 2026 年 10 月 24 日,v1.14.4 官方发布说明只概括为“修复与改进”,没有按用户报错逐项给出处理方案,因此应结合实际日志和官方迁移文档判断。查看 v1.14.4 官方发布说明
| 看到的现象或关键词 | 先做什么 | 判定标准 |
|---|---|---|
unknown field、decode error、启动即退出 | 备份后执行 sing-box check | check 仍报错,优先处理配置字段或 JSON 结构 |
| 配置能启动,但 TUN 或 VPN 无流量 | 关闭 TUN,只测试本地代理入站 | 代理入站正常而 TUN 不通,转查权限、路由或网络扩展 |
| macOS standalone 升级后配置消失 | 先用 ls 检查旧容器目录 | 确认旧目录存在后,再按官方迁移步骤操作 |
| Android 或 iOS 无法建立 VPN | 重新授权 VPN 并重新导入配置 | 授权和配置恢复后,再判断节点或 DNS 是否异常 |
sing-box version
sing-box check -c "/path/to/config.json"预期结果是版本命令显示当前内核版本,check 正常退出且不输出配置错误。官方配置文档列出了 check、format 和 merge 命令;图形客户端可能会封装参数,入口以当前版本界面为准。查看官方配置与 check 说明
先确认升级路径,再处理 v1.14.0 迁移项
如果你是从 v1.13.x 或更早版本直接升级到 v1.14.4,才需要重点检查下面的 v1.14.0 迁移项目;如果原本已经是 v1.14.0、v1.14.1、v1.14.2 或 v1.14.3,通常不应因为这些历史迁移项重复改动配置。修改前保留一份原始副本,并且每次只改一个字段。
| 配置线索或日志关键词 | 处理方式 | 判断结果 |
|---|---|---|
independent_cache | 从 dns 对象中移除该字段 | check 不再提示该字段,DNS 配置可以继续解析 |
store_rdrc | 在启用缓存文件时改为 store_dns | 配置中的缓存文件字段能够通过 check |
ip_cidr、ip_is_private 与 match_response、evaluate 混用 | 按响应匹配方式迁移,检查旧地址过滤字段和规则集组合 | 不再因 DNS 规则组合在启动阶段被拒绝 |
DNS 规则同时使用 ip_version 或 query_type 与旧地址过滤方式 | 使用 evaluate 获取 DNS 响应,再用 match_response 匹配地址 | 启动日志不再提示旧过滤方式冲突 |
旧式 domain_strategy | 只有在 check 明确提示该字段时,才按对应配置位置迁移到 domain_resolver | 不再把旧字段直接放在不支持的位置 |
官方 Migration 页面明确列出了独立 DNS 缓存、store_rdrc、DNS 地址过滤和 DNS 规则行为变化。domain_strategy 属于旧的 Dial Fields 选项,官方建议改用新的域名解析器配置;它并不等同于旧 DNS 服务中的同名概念。独立 DNS 缓存迁移、store_rdrc 迁移、DNS 地址过滤迁移、domain_strategy 迁移
如果配置来自订阅转换或模板,优先让配置提供方重新生成兼容 v1.14.x 的格式,再在副本上手动修改。只有在能够定位具体字段时,才进行单变量修改;不要一次删除多个 DNS、路由和节点字段。
配置能启动但无法联网:分开验证代理入站与 TUN
check 通过只代表配置结构能够被当前内核读取,不代表节点、DNS、TUN 或系统 VPN 一定正常。先关闭 TUN,使用客户端实际显示的本地入站端口测试。以下示例分别使用 HTTP 端口 8080 和 SOCKS 端口 1080,实际以客户端设置页为准。
curl -I -x http://127.0.0.1:8080 https://example.com
curl -I --proxy socks5h://127.0.0.1:1080 https://example.com如果其中一个代理测试成功,而开启 TUN 后系统应用仍不能联网,说明排查重点应转向 TUN 接管、系统路由、VPN 授权或网络扩展。关闭 TUN 时再测基线,不要把“带 -x 的代理测试”和“开启 TUN 后不带 -x 的测试”混为一谈。
curl -I https://example.com- 代理入站失败:检查本地端口是否监听、入站类型是否为 HTTP 或 SOCKS,以及客户端是否仍在运行。
- 代理入站成功、TUN 失败:重新授权 VPN 或网络扩展,检查是否有其他应用占用系统 VPN,再单独重启 TUN。
- 启动日志提示 DNS 规则错误:回到迁移表,优先检查旧地址过滤字段、
ip_version、query_type和match_response的组合。 - 只有个别域名失败:检查 DNS 服务器、域名解析器和分流规则,不要先更换全部节点或重写整份配置。
当前 TUN 配置文档列出的 stack 值是 system、gvisor 和 mixed。不要为了修复 v1.14.4 的问题随意切换 stack;先确认是 TUN 授权、路由还是配置解析问题。查看官方 TUN 配置说明
macOS、Android 和 iOS 的客户端异常处理
命令行内核与图形客户端属于不同层。官方图形客户端页面列出了 Android、iOS/macOS/Apple tvOS,以及 Windows 和 Linux 的 Desktop 客户端;具体菜单、内置内核版本和权限流程仍以当前应用界面为准。查看官方图形客户端列表
macOS standalone 配置消失
官方迁移说明称,Apple 平台客户端更换开发者账户后,macOS standalone 可能成为新的应用,配置和设置不会自动继承。执行任何移动或删除操作前,先确认源目录存在,并整体复制目录备份。下面使用 $HOME,避免把波浪号放在双引号中导致路径无法展开。
ls -ld "$HOME/Library/Group Containers/287TTNZF8L.io.nekohasekai.sfavt"
ls -ld "$HOME/Library/Group Containers/P8XK3KHB48.io.nekohasekai.sfamt"
cp -R "$HOME/Library/Group Containers/287TTNZF8L.io.nekohasekai.sfavt" "$HOME/Library/Group Containers/287TTNZF8L.io.nekohasekai.sfavt.backup"只有确认旧目录存在、备份命令成功且应用已经退出后,才执行迁移命令:
mv "$HOME/Library/Group Containers/287TTNZF8L.io.nekohasekai.sfavt" "$HOME/Library/Group Containers/P8XK3KHB48.io.nekohasekai.sfamt"
xattr -c "$HOME/Library/Group Containers/P8XK3KHB48.io.nekohasekai.sfamt"
rm "$HOME/Library/Group Containers/P8XK3KHB48.io.nekohasekai.sfamt/.com.apple.containermanagerd.metadata.plist"重启应用后检查配置是否恢复。rm 会删除元数据文件,因此不应跳过前面的目录检查和备份。若仍出现权限提示,应停止继续删除文件,改为按官方迁移页中的后续权限处理步骤核对。核对 macOS standalone 官方迁移步骤
Android 或 iOS 无法建立 VPN
- 关闭应用后重新打开,并重新确认系统 VPN 授权。
- 确认配置已重新导入,且应用内显示的内核版本、配置版本或错误提示符合当前应用说明;无法显示时,以应用内提示为准。
- 先使用最小化配置验证启动,再逐项恢复 DNS、规则和 TUN 高级选项。
- 检查是否有其他 VPN、网络过滤器或系统网络扩展正在占用接管权限。
- 导出日志求助前,遮挡节点地址、密码、UUID、订阅令牌、私钥、Cookie 和个人域名。
Android、Apple 平台和 Desktop 客户端的系统权限与内核封装不同,因此移动端出现“配置能导入但 VPN 不接管流量”时,不能只按命令行内核的结果判断。
后续版本提示:tun.stack 不属于 v1.14.4 的迁移原因
官方 Migration 页面把 TUN stack 变化归在 v1.15.0:该版本开始使用新的 sing-tun TCP/IP stack,stack 在 v1.15.0 标记为弃用,并计划在 v1.17.0 移除。这不是从 v1.13.x 升级到 v1.14.4 时应优先处理的字段。
因此,在 v1.14.4 排障时,如果现有 tun.stack 能通过 check,不要为了“提前迁移”而删除或切换它。只有升级到 v1.15.0 或更高版本时,才根据官方迁移说明评估是否移除。查看官方 TUN stack 迁移说明
满足这些条件,再安全回退到上一版本
满足以下任一条件就可以考虑回退:当前版本始终无法通过 check;同一份升级前配置在上一版本可正常加载,而 v1.14.4 持续报告字段或组件错误;或者客户端升级后系统 VPN、网络扩展和辅助组件反复异常。回退前不要只保存截图,应保存原始配置、订阅地址或订阅文件、当前版本日志,以及升级前实际使用的版本号。
- 停止 sing-box 或图形客户端,确认旧进程不再占用配置和本地端口。
- 复制当前配置并注明版本,例如
config-v1.14.4.json,同时保留升级前的配置备份。 - 根据升级前实际使用的版本选择回退目标,不要默认固定为 v1.14.3;如果升级前是 v1.13.x,就应使用对应的 v1.13.x 版本。
- 使用与平台和 CPU 架构匹配的安装方式。官方安装脚本支持通过
--version指定版本。 - 回退后只加载升级前的配置备份,先执行 check,再验证本地 HTTP 或 SOCKS 入站,最后才重新开启 TUN。
curl -fsSL https://sing-box.app/install.sh | sh -s -- --version <升级前版本>上面的命令只适用于由官方安装脚本管理的环境。应用商店客户端、内置内核、Homebrew、APT、DNF 或其他包管理方式,应使用对应的版本切换入口。注意,v1.14.x 配置可能无法直接反向兼容 v1.13.x,因此回退到更早版本时必须加载升级前的配置备份。查看官方安装与指定版本说明
常见问题
从 v1.14.0 升级到 v1.14.4,也需要处理 v1.14.0 迁移项吗?
通常不应重复处理。本文列出的 v1.14.0 迁移项主要针对从 v1.13.x 或更早版本升级的情况;如果原本已经运行 v1.14.x,应先以当前日志和 check 结果为准。
出现 unknown field,是不是节点或订阅失效?
不一定。这个关键词首先说明当前内核不认识配置中的字段或字段位置。先执行 sing-box check,定位完整路径,再只改这一处;如果配置来自订阅转换,优先重新生成兼容 v1.14.x 的配置。
配置 check 通过,但 TUN 还是不能用怎么办?
先关闭 TUN,只测试本地 HTTP 或 SOCKS 入站。若代理入站正常,再重新授权 VPN 或网络扩展,并检查是否有其他应用占用系统 VPN。这样可以把配置问题与系统接管问题分开。
macOS 迁移命令执行失败怎么办?
先用 ls -ld 检查源目录是否存在,再确认路径中的空格已经正确引用。命令中使用 $HOME,不要把 ~ 放在双引号内;源目录不存在时不要继续执行 mv、xattr 或 rm。
升级前是 v1.13.x,能否直接回退到 v1.14.3?
不建议把 v1.14.3 当作默认回退目标。应优先恢复升级前实际使用的版本,并加载升级前的配置备份;v1.14.x 配置改动可能无法直接反向兼容 v1.13.x。
分享日志求助时需要隐藏哪些内容?
至少遮挡节点域名或 IP、端口、密码、UUID、订阅令牌、私钥、Cookie 和个人域名。保留错误关键词、系统平台、内核版本、配置字段路径和复现步骤即可。
常见问题
从 v1.14.0 升级到 v1.14.4,也需要处理 v1.14.0 迁移项吗?
通常不应重复处理。相关迁移项主要针对从 v1.13.x 或更早版本升级的情况,应先以当前日志和 check 结果为准。
出现 unknown field,是不是节点或订阅失效?
不一定。它首先表示当前内核不认识配置字段或字段位置。先执行 sing-box check,定位路径后只修改这一处;订阅配置优先重新生成兼容 v1.14.x 的格式。
配置 check 通过,但 TUN 还是不能用怎么办?
先关闭 TUN,只测试本地 HTTP 或 SOCKS 入站。若代理正常,再重新授权 VPN 或网络扩展,并检查其他应用是否占用系统 VPN。
macOS 迁移命令执行失败怎么办?
先用 ls -ld 检查源目录,再确认空格路径已正确引用。命令中使用 $HOME,不要把波浪号放在双引号内;源目录不存在时不要继续执行移动或删除命令。
升级前是 v1.13.x,能否直接回退到 v1.14.3?
不建议。应恢复升级前实际使用的版本,并加载升级前的配置备份,因为 v1.14.x 配置改动可能无法直接反向兼容 v1.13.x。
分享日志求助时需要隐藏哪些内容?
至少遮挡节点域名或 IP、端口、密码、UUID、订阅令牌、私钥、Cookie 和个人域名,保留错误关键词、内核版本、字段路径和复现步骤即可。