FnCloud蜂鸟加速返回首页

sing-box macOS 配置文件:从导入到启动的完整指南

更新于 2026-10-27 · lulian.buzz

简答:sing-box macOS 配置文件必须是完整的 JSON 配置,不能直接把 Clash YAML、单条节点链接或普通节点列表当作配置文件导入。新手建议先使用 SFM 图形客户端导入本地 JSON 或远程配置;需要命令行运行时,再用 sing-box check 校验配置,并按“编辑—保存—校验—重新载入—查看日志—验证业务”的顺序排查。

定义:sing-box macOS 配置文件,是由 sing-box 使用的 JSON 文件,包含日志、DNS、入站、出站和路由等配置段。

先判断:你手里的文件能不能直接导入

本文是第三方使用指南,不代表 sing-box 项目或任何服务商的官方页面。sing-box 官方配置结构使用 JSON,常见顶层字段包括 log、dns、inbounds、outbounds 和 route。因此,文件扩展名叫 .json 只是外观,真正能否运行还要看字段结构是否符合当前版本文档。

你手里的内容能否直接作为 sing-box 配置正确处理方式
完整 sing-box JSON可以,先校验导入 SFM 本地配置,或使用命令行检查
Clash YAML不可以直接使用使用支持 sing-box 的转换工具生成完整 JSON,再人工核对
单条节点链接不可以直接使用根据协议字段写入对应 outbound
订阅链接通常不是配置文件本体作为远程 Profile 导入,或先生成 sing-box JSON
只有服务器、端口、UUID 的节点列表通常不完整补齐协议、TLS、传输层和路由字段

官方图形客户端将配置分为 Local、iCloud 和 Remote Profile。Remote Profile 以 URL 作为更新来源,客户端可以按配置更新周期重新获取内容;本地文件则需要你自己保存、备份和替换。可参考 sing-box 通用客户端文档。

macOS 客户端怎么选:SFM 还是命令行内核

如果你需要菜单栏开关、配置分组、TUN 权限和运行状态展示,优先选择 sing-box for macOS 的独立版图形客户端,简称 SFM。官方 Apple 平台页面列出的 macOS 要求为 macOS 13.0 或更高版本,并提供 Homebrew Cask 和 GitHub Releases 入口。需要注意的是,图形客户端和命令行内核不是同一个使用方式:前者适合日常导入和切换配置,后者适合脚本、服务器式运行和终端日志查看。详情见 sing-box for Apple platforms。

场景建议选择注意事项
第一次使用 macOS 客户端SFM 图形客户端需要允许网络扩展或 VPN 相关权限
想导入本地或远程配置SFM配置内容必须是完整 JSON 或可识别的远程 Profile
需要终端自动化Darwin 命令行内核自行管理配置路径、进程和日志
Apple Silicon MacApple/arm64 安装包适用于 Apple 芯片设备
Intel MacIntel/x86_64 安装包适用于 Intel 处理器设备
不确定设备架构Universal 通用包文件通常更大,但兼容两类 Mac

可以在 macOS“关于本机”中查看芯片信息:显示 Apple 芯片时选择 Apple 版本,显示 Intel 处理器时选择 Intel 版本。无法确认时使用 Universal 包,或先打开终端执行 uname -m:返回 arm64 通常对应 Apple Silicon,返回 x86_64 对应 Intel。

先用这份最小 JSON 配置测试文件是否可运行

下面的模板只包含日志、DNS、混合代理入站、TUN 入站、直连出站和基础路由,适合先验证配置文件格式、客户端权限和本机网络。它不会凭空生成远程节点;如果要连接某个远程服务,必须把服务商提供的完整 outbound 按官方字段补入,不能把示例地址当成真实节点。

带说明版结构:

{ "$schema": "https://sing-box.sagernet.org/schema.json", "log": { "level": "info", "timestamp": true }, "dns": { "servers": [ { "tag": "local", "address": "local" } ], "final": "local", "strategy": "prefer_ipv4" }, "inbounds": [ { "type": "mixed", "tag": "mixed-in", "listen": "127.0.0.1", "listen_port": 2080 }, { "type": "tun", "tag": "tun-in", "address": ["172.18.0.1/30"], "auto_route": true, "strict_route": true, "dns_mode": "hijack" } ], "outbounds": [ { "type": "direct", "tag": "direct" }, { "type": "block", "tag": "block" } ], "route": { "auto_detect_interface": true, "final": "direct" } }

复制时不要把说明文字、Markdown 代码围栏或中文注释放进 JSON。这个模板中的 mixed 入站同时提供 SOCKS 和 HTTP 服务;官方文档说明,未设置用户认证时不会要求用户名和密码。TUN 的 auto_route 用于将默认路由指向 TUN,strict_route 会收紧路由处理;相关字段应结合当前版本文档使用,见 TUN 入站文档。

macOS 导入本地或远程配置:按这 6 步操作

  1. 备份原文件。把现有 JSON 复制一份,例如保存为 config.backup.json。订阅 URL、UUID、密码、Reality 私钥或 API secret 不要发布到论坛、截图或公开仓库。
  2. 准备配置。本地配置保存为 UTF-8 编码的 .json 文件;远程配置则确认 URL 返回的是完整 sing-box JSON,而不是网页、登录页、Clash YAML 或单条节点文本。
  3. 导入 Profile。在 SFM 中添加 Local Profile 选择本地文件;需要远程更新时选择 Remote Profile 并填入配置 URL。官方通用客户端文档也定义了远程 Profile 的 URL Scheme,但菜单名称可能随客户端版本变化。
  4. 保存后校验。如果使用命令行内核,在配置文件所在目录执行 sing-box check -c config.json。官方配置文档将 sing-box check 列为配置检查命令;校验无错误后再启动,不要跳过这一步。参考 sing-box 配置结构与命令文档。
  5. 重新载入并授权。在 SFM 中停止后重新启动 Profile;首次启用 TUN 时,按 macOS 弹窗允许网络扩展、VPN 或辅助服务权限。若权限被拒绝,先到“系统设置—隐私与安全性”检查相关提示,再重新启动客户端。
  6. 查看日志并验证业务。先看服务是否启动、DNS 是否有响应、出站是否被选中,再测试浏览器或终端访问。只看到 TUN 已建立,不代表远程出站一定可用。

订阅、节点和分组应该放在哪里

一个可运行的 sing-box 配置通常至少要解决三件事:入站接收本机流量,outbound 定义直连或远程连接,route 决定流量最终交给哪个 outbound。只有节点地址而没有完整 outbound 字段时,配置仍可能无法启动或无法建立连接。

  • 只有一个远程出口:将远程 outbound 加入 outbounds,再把 route.final 改为对应的 tag。
  • 需要手动切换:使用 selector,其候选项必须引用已经存在的 outbound tag。
  • 需要自动测试:使用 urltest,并填写候选 outbound、测试 URL、间隔和容忍延迟。官方文档说明,urltest 的 outbounds 为必填字段,空测试 URL 时会使用默认地址。参考 URLTest 出站文档。
  • 需要按域名或地址分流:在 route.rules 中匹配域名、IP、入站或规则集,再通过规则动作指定 outbound。规则顺序很重要,越具体的规则通常应放在更前面。

不要直接把 Clash 的 proxy-groups、rules 或 YAML 顶层字段粘贴进 sing-box JSON;两套配置格式和字段命名不同,必须经过转换并逐项检查。

TUN 与 DNS:macOS 上最容易混淆的字段

dns_mode 属于 TUN 入站字段,不等同于 DNS 配置段中的 strategy、servers 或 DNS 规则。官方文档说明,TUN 的 dns_mode 可为 disabled、native 或 hijack;启用 auto_route 时默认使用 hijack。因此,不要把 dns_mode 随意放到 dns 段,也不要把它当成 fake-ip 或 redir-host 开关。

检查项建议观察结果异常时下一步
TUN 状态接口建立,服务没有立即退出检查权限、地址格式和版本字段
DNS 日志查询被处理且有响应检查 DNS server、hijack 设置和路由顺序
IPv4/IPv6至少一种地址族能稳定访问临时设置 prefer_ipv4 对比 IPv6 影响
规则命中日志显示预期 outbound tag检查规则顺序、域名匹配和最终出口
代理模式浏览器或终端请求能完成先用 mixed 入站测试,再启用 TUN

如果 TUN 能启动但网页打不开,先关闭 TUN,只保留本地 mixed 入站,用支持代理的应用测试 127.0.0.1:2080。若 mixed 可用而 TUN 不可用,问题通常集中在网络扩展权限、DNS 劫持、默认路由或 IPv6;若 mixed 也不可用,则先检查出站字段和远程服务连通性。

升级后配置失效或丢失,怎么处理

sing-box 1.14 的 macOS 独立版涉及 Apple 开发者账号迁移,官方迁移文档明确提醒:新的独立版应用不会自动继承旧应用的 Profile 和设置。升级前应导出或复制配置,升级后重新添加 Local 或 Remote Profile。具体迁移命令应严格按官方迁移页执行,不要直接删除旧目录。

sing-box 1.15 还调整了 TUN stack 行为:官方迁移文档要求移除旧配置中的 stack 字段,因为自 1.15 起 sing-tun 使用自己的 TCP/IP stack,旧字段已被弃用。换句话说,不能继续照抄含有 "stack": "system" 的旧模板;先备份,删除该字段,再执行 sing-box check。可核对 sing-box Migration 文档。

常见错误与排查顺序

  • JSON 解析错误:检查最后一个字段后是否多了逗号、字符串是否使用英文双引号、数组和对象括号是否成对,再运行 sing-box check -c config.json。
  • 导入后没有分组:确认配置中确实存在 selector 或 urltest 类型的 outbound,并且其引用的 tag 都已定义;只有一个 direct 出站时不会出现节点切换组。
  • 服务启动后没有流量:先检查 route.final 是否指向可用 outbound,再查看远程出站的服务器地址、端口、认证和 TLS 字段。
  • TUN 开关自动关闭:查看 macOS 权限提示、客户端日志和配置校验结果;必要时先用 mixed 入站验证配置,再重新申请网络扩展权限。
  • 升级后突然不能用:先确认客户端版本,再对照 Migration 文档检查 Profile 是否迁移、旧的 stack 是否仍存在,以及配置是否使用了已废弃字段。

结论:一份合格的 macOS 配置文件应满足什么条件

合格的 sing-box macOS 配置文件至少应满足:文件是完整 JSON;inbounds、outbounds 和 route 的引用关系完整;DNS 字段放在正确配置段;TUN 字段符合当前版本;敏感信息没有公开;导入后经过配置校验、重新载入、日志检查和实际联网验证。

如果你只是想先确认客户端能否运行,可以从本文最小模板开始;如果你已经有远程订阅,则优先判断它返回的是完整 sing-box JSON 还是其他格式,再决定直接导入、转换或手动补齐。版本更新后不要继续沿用未经核对的旧模板,尤其要检查 TUN 和 Profile 迁移变化。

常见问题

sing-box macOS 配置文件应该是什么格式?

应当是符合当前 sing-box 配置结构的完整 JSON,通常包含 log、dns、inbounds、outbounds 和 route 等字段。Clash YAML、单条节点链接和普通节点列表不能直接当作完整配置使用。

macOS 上 sing-box 配置文件放在哪里?

使用 SFM 图形客户端时,可以作为 Local Profile 导入,也可以添加为 Remote Profile;命令行运行时则由启动命令通过 -c 指定文件路径。不要只依赖固定目录,因为不同客户端和安装方式可能使用不同工作目录。

为什么 JSON 配置导入后没有节点或分组?

检查 outbounds 中是否真的有远程 outbound,以及是否存在 selector 或 urltest 分组。只有 direct 出站时,客户端不会凭空生成节点列表;订阅内容也必须是完整 sing-box JSON。

sing-box macOS 开启 TUN 后无法联网怎么办?

先停止 TUN,使用 mixed 入站测试本地代理是否可用;再检查网络扩展权限、dns_mode、auto_route、route.final、DNS 日志和 IPv6。若配置含有旧版 stack 字段,还应按照 Migration 文档核对版本兼容性。

升级 sing-box 后原来的配置不见了怎么办?

先不要删除旧应用数据,检查是否从旧版 macOS 独立客户端迁移到新版应用。官方 Migration 文档说明 1.14 独立版的 Profile 和设置不会自动继承,升级前应备份,升级后重新添加本地或远程 Profile。

相关阅读

参考资料

  1. sing-box 配置结构与 check、format、merge 命令
  2. sing-box for Apple platforms:macOS 要求与下载方式
  3. sing-box 通用客户端:Local、iCloud 与 Remote Profile
  4. sing-box TUN 入站字段与 DNS 模式
  5. sing-box URLTest 出站配置
  6. sing-box 版本迁移说明