好文集ChatGPT Plus¥119

sing-box 回 App Store 了:免费、开源,小白也能三分钟上车

文章目录

一年前,iOS 上唯一免费开源的代理客户端被苹果一纸"误判"冻在 App Store 里:不能更新,不能下架重传,连申诉都石沉大海。内核停在 1.9,机场上的新协议节点一个接一个连不上,官网只能把 App Store 链接划掉,留一句"TestFlight 用户不受影响"。用户能做的只有等。

换成任何一个闭源软件,故事到这里就结束了。

但 sing-box 是开源的。作者等了一年,然后做了一件只有开源项目才做得到的事:换个账号,重新上架,内核直接拉到最新。

今天,它回来了。

先说事

打开美区 App Store 搜 sing-box,多了一个新条目:sing-box MT,开发者 Metamerism LLC,版权署名 nekohasekai,官网指向 sing-box.sagernet.org。就是那个 sing-box,换了个开发者账号、新的 Bundle ID,核心版本从 1.9 时代直接跳到 1.14,和桌面端彻底对齐。作者的处理方式非常互联网:打不过就换号。

几个硬数据:

  • 名字:sing-box MT(不是 VT,别下错了)

  • 价格:免费

  • 系统:iOS / iPadOS 15+,tvOS 17+,visionOS 1.0+

  • 体积:约 96 MB

  • 当前版本:1.14.4

  • 门槛:需要一个非中国大陆地区的 Apple ID(这一点和小火箭、Loon 一样,谁也躲不掉)

一句话总结:iOS 上唯一免费、开源、内核跟上游同步的代理客户端,回来了。


sing-box 到底是个啥

给完全没接触过的朋友一个心智模型。

你手机上装的"代理软件",其实分两层:

  1. 内核:真正干活的那部分,负责把流量按协议打包、加密、发到你的服务器。

  2. 壳:你看到的界面,按钮、订阅管理、开关。

小火箭、Loon 是"内核 + 壳"一体的闭源软件,内核是各家自己写的。sing-box 反过来:内核是一个开源的通用代理平台,然后作者给每个系统各套了一个壳:

  • SFI:sing-box for iOS

  • SFA:sing-box for Android

  • SFM:sing-box for macOS

  • SFT:sing-box for tvOS

App Store 里的 sing-box MT 就是 SFI 的最新马甲。

这个"内核和壳分离"的设计,是后面所有优势的根。


这次 MT 带了什么新东西

对比老 VT,MT 不只是换壳:

1. 内核 1.14.x 老 VT 因为无法更新,内核停在 1.9 时代,很多机场新上的节点根本连不上。MT 直接对齐当前最新内核,Hysteria2、TUIC、AnyTLS、VLESS+Reality 这些一个不落。

2. 配置编辑器带语法高亮和实时检查 以前手写 JSON 少一个逗号,点启动才报错,还得自己数括号。现在编辑器边写边标红,对新手是实打实的减负。

3. 工作目录对"文件"App 开放 你可以在系统"文件"里直接看到 sing-box 的目录,往里拖文件。这意味着——

4. 支持本地 rule-set 自己写的分流规则集,不用再上传到哪个 URL 再让手机下回来,直接放本地目录引用。玩规则的人懂这有多爽。

5. 一个提醒 因为是新条目,VT 里的配置不会自动继承。如果你手上还有能打开的 VT,先把配置复制出来。


为什么我建议你放弃小火箭和 Loon

先声明立场:我是来站台的。

小火箭和 Loon 都是好软件,我也用过很多年。但 2026 年了,如果你是今天才开始选 iOS 客户端,我不觉得还有理由去付费买闭源。

sing-box MTShadowrocketLoon
价格免费$2.99$9.99
开源GPLv3,代码可审计闭源闭源
内核sing-box 上游同步自研闭源自研闭源
配置格式JSON,全平台通用私有格式私有格式(Surge 风格)
跨平台iOS / Android / macOS / Windows / Linux / 路由器 / Apple TV / Vision ProiOS / macOS / tvOSiOS / macOS
规则来源官方 geosite / geoip 二进制 rule-set,社区海量自有格式,依赖第三方维护自有格式,依赖第三方维护
策略组selector / urltest 原生支持有有
面板内置 Clash API,可接任意面板无无
本地规则文件支持(MT 新增)支持支持

表格看着平,展开讲几个真正拉开差距的点。

  1. 免费且开源,不是"免费"就完了

免费的代理软件 App Store 里一堆,绝大多数是流氓。sing-box 不一样的地方在于代码全公开、协议是 GPLv3,你不信作者可以自己编译。App Store 隐私标签写的是"不收集任何数据",这个词在开源软件嘴里和在闭源软件嘴里的分量不一样。

  1. 一份配置,全家桶通吃

这是我最看重的一点。你在 iPhone 上调好的那份 JSON,原封不动扔到 Mac、Windows、安卓、OpenWrt 路由器上,行为完全一致。学一次,到处用。

小火箭和 Loon 的配置只能在它们自己的 App 里生效。换个设备换个系统,从头再来。

  1. 内核跟上游走,新协议不用等

闭源客户端支持新协议,得等作者一个人手写实现。sing-box 本身就是很多新协议的参考实现(AnyTLS 就是这么来的),客户端拿内核过来就有了。

老 VT 停更那一年,多少人被"节点连不上"折磨,本质就是内核跟不上。MT 把这个问题解决了:内核在哪,客户端就在哪。

  1. 规则集生态

sing-box 的 rule-set 是编译好的二进制格式(.srs),加载快、内存省,这在 iOS 这种给 VPN 扩展限死内存的平台上不是小事。官方维护的 geosite / geoip 规则集一行 URL 就能引用,社区还有大量按应用、按地区拆好的现成集合。

  1. JSON 是好朋友,不是敌人

很多人被"要手写 JSON"吓退。但换个角度:JSON 是一种全世界通用的、有严格语法的格式,意味着——

  • 可以直接把配置扔给 AI 让它帮你改

  • 可以放 GitHub 上做版本管理

  • 可以直接发给朋友,对方粘贴即用

  • 出错了报错信息精确到字段

私有格式做不到这些。而且 MT 这次的高亮和实时检查,把 JSON 最大的痛点也补上了。

  1. 不用担心"一个人的软件"

小火箭是一个人的公司,Loon 也是。开发者哪天不干了,软件就停在那里。sing-box 也是一个人主导,但它是开源的:作者不干了,社区可以接着干。这次 VT 被苹果卡死、作者换号重来,就是最好的压力测试——闭源软件遇到这种事,你只能等。


安装

  1. 切换到非中国大陆地区的 Apple ID(美区、港区、日区都行)。

  2. App Store 搜索 sing-box MT。

  3. 确认开发者是 Metamerism LLC,图标是那个熟悉的盒子。搜索结果里可能混着蹭名字的山寨货,认准开发者。

  4. 下载,首次打开允许添加 VPN 配置。

装好就是一个几乎空白的界面,别慌,接下来分两条路。


路线 A:机场党,导入订阅(三分钟)

适合大多数人。

如果机场提供 sing-box 订阅

现在主流机场基本都有。在机场面板找到"sing-box"或"SFI"格式的订阅链接,复制。

打开 sing-box MT:

  1. 底部切到 Profiles(配置)

  2. 右上角 + → New Profile

  3. Name 随便填,比如机场名

  4. Type 选 Remote

  5. URL 粘贴订阅链接

  6. 打开 Auto Update,间隔默认即可

  7. 保存

回到 Dashboard,确认选中的是刚建的配置,点那个大大的开关。第一次启动会去下载规则集,等十几秒。

Dashboard 下方有 Groups,里面就是你的节点列表和策略组,点一下切节点。

如果机场只给 Clash / V2Ray 订阅

两个办法:

办法一:直接把机场的 Clash 订阅链接填进去试试。不少机场后端会根据客户端 User-Agent 自动返回 sing-box 格式,试一下不亏。

办法二:用 Sub-Store 转换。Sub-Store 是一个开源订阅管理器,可以把任意格式的订阅转成 sing-box JSON,还能顺便加上分流规则。搜"Sub-Store sing-box 模板"能找到很多现成方案,这里不展开。


路线 B:自建党,手写 VLESS + Reality(十分钟)

适合有自己 VPS 的人。下面这份配置是针对 sing-box 1.14 写的,没有任何已废弃字段,可以直接抄。

在 MT 里:Profiles → + → Type 选 Local → 保存后点进去 → Edit Content,把下面的内容粘贴进去。

{
  "log": {
    "level": "info",
    "timestamp": true
  },
  "dns": {
    "servers": [
      {
        "type": "udp",
        "tag": "dns-cn",
        "server": "223.5.5.5"
      },
      {
        "type": "https",
        "tag": "dns-proxy",
        "server": "1.1.1.1",
        "detour": "proxy"
      }
    ],
    "rules": [
      {
        "rule_set": "geosite-cn",
        "action": "route",
        "server": "dns-cn"
      }
    ],
    "final": "dns-proxy",
    "strategy": "prefer_ipv4"
  },
  "inbounds": [
    {
      "type": "tun",
      "tag": "tun-in",
      "address": ["172.19.0.1/30"],
      "auto_route": true,
      "strict_route": true
    }
  ],
  "outbounds": [
    {
      "type": "vless",
      "tag": "proxy",
      "server": "你的服务器IP或域名",
      "server_port": 443,
      "uuid": "你的UUID",
      "flow": "xtls-rprx-vision",
      "tls": {
        "enabled": true,
        "server_name": "www.microsoft.com",
        "utls": {
          "enabled": true,
          "fingerprint": "chrome"
        },
        "reality": {
          "enabled": true,
          "public_key": "你的公钥",
          "short_id": "你的shortId"
        }
      }
    },
    {
      "type": "direct",
      "tag": "direct"
    }
  ],
  "route": {
    "rules": [
      {
        "action": "sniff"
      },
      {
        "protocol": "dns",
        "action": "hijack-dns"
      },
      {
        "ip_is_private": true,
        "outbound": "direct"
      },
      {
        "rule_set": ["geosite-cn", "geoip-cn"],
        "outbound": "direct"
      }
    ],
    "rule_set": [
      {
        "tag": "geosite-cn",
        "type": "remote",
        "format": "binary",
        "url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-cn.srs",
        "download_detour": "proxy"
      },
      {
        "tag": "geoip-cn",
        "type": "remote",
        "format": "binary",
        "url": "https://raw.githubusercontent.com/SagerNet/sing-geoip/rule-set/geoip-cn.srs",
        "download_detour": "proxy"
      }
    ],
    "final": "proxy",
    "auto_detect_interface": true,
    "default_domain_resolver": "dns-cn"
  },
  "experimental": {
    "cache_file": {
      "enabled": true
    }
  }
}

你需要替换的只有五个地方

全在 outbounds 第一段里:

字段填什么从哪来
serverVPS 的 IP 或域名你自己知道
uuid客户端 UUID服务端配置里的 clients[].id
server_nameReality 伪装的域名服务端 serverNames 里的那个,必须一致
public_keyReality 公钥生成密钥对时输出的 Public key
short_idReality shortId服务端 shortIds 里的一个,可以是空字符串

server_port 如果不是 443 也改一下。其他一个字都不用动。

每一段在干什么(看懂了以后自己改)

log:日志级别。排错时改成 debug,平时 info 就够。

dns:两个 DNS 服务器。国内域名走阿里 DNS 直连,其他走 Cloudflare 的 DoH,并且通过代理去查(detour: proxy),防止 DNS 污染。rules 那一条的意思是:命中国内域名列表的,用国内 DNS。

inbounds:TUN 模式,iOS 上只能这么接管流量。auto_route 自动接管全部流量,strict_route 堵住绕过 VPN 的漏网之鱼。

outbounds:两个出口。proxy 是你的 VLESS+Reality 节点,direct 是直连。这就是分流的"两条腿"。

route.rules:分流规则,从上往下匹配:

  1. sniff:嗅探流量里的域名,不然只看得到 IP,规则没法按域名匹配

  2. hijack-dns:把系统的 DNS 请求劫持到 sing-box 自己的 DNS 模块,交给上面 dns 那段处理

  3. 局域网 IP 直连

  4. 国内域名 + 国内 IP 直连

  5. 剩下的全部走 final: proxy

route.rule_set:上面用到的两个规则集从哪下载。download_detour: proxy 是因为 GitHub 直连不稳,下载规则集本身也走代理。

experimental.cache_file:把下载好的规则集缓存到本地,不用每次启动都下。

想加第二个节点?

在 outbounds 里再加一段 vless(或者 hysteria2、随便什么),tag 起个不一样的名字,然后加一个策略组:

{
  "type": "selector",
  "tag": "proxy",
  "outbounds": ["节点A", "节点B"]
}

把原来那个 vless 的 tag 从 proxy 改成 节点A,新节点叫 节点B。这样 proxy 变成一个可以在 Dashboard 里手动切换的选择器。想自动测速选最快的,把 selector 换成 urltest 即可。


小白必踩的坑,我先替你踩了

1. 多了一个逗号 / 少了一个引号 JSON 最后一项后面不能有逗号。MT 的编辑器现在会标红,看到红色先检查这个。

2. 从网上抄的老配置启动报 legacy / deprecated 1.14 内核把 1.12 之前废弃的老格式全删了。典型的:dns.servers 用 address 字段、outbounds 里有 type: block 或 type: dns、tun 用 inet4_address。看到这类报错,别修,直接换本文这份。

3. 规则集别堆太多 iOS 给 VPN 扩展的内存上限很紧(几十 MB 级别)。有人把 geosite 全家桶几十个规则集全塞进去,一启动就被系统杀。日常两三个够用,按需加。

4. Reality 的 server_name 和服务端不一致 最常见的连不上原因。客户端填的 server_name 必须是服务端 serverNames 列表里的其中一个,一个字母都不能差。

5. 开了代理 App Store 变慢 苹果的 CDN 有时走代理反而慢。加一条规则:

{
  "rule_set": "geosite-apple",
  "outbound": "direct"
}

对应的 rule_set 地址把 geosite-cn.srs 换成 geosite-apple.srs 即可。

6. 装错 App 再说一遍:sing-box MT,开发者 Metamerism LLC。不是 VT,不是任何带"Pro""Plus""VPN"后缀的东西。


最后

sing-box 这个项目最迷人的地方,是它把"代理"这件事从一个个封闭的 App 里拆出来,变成一份可以随身携带的、明明白白的配置文件。你不再是某个软件的用户,你是自己网络的管理员。

这个理念以前在 iOS 上有一道门槛:App 更不了,内核老了,配置写好了也没地方跑。今天这道门槛没了。

免费的,开源的,内核最新的,全平台一份配置。去装吧,装完把这篇文章的 JSON 抄进去,十分钟以后你就再也不想付那 $2.99 了。

(VT 的用户记得把配置抄出来,MT 不认老账。)

全文完
查看原文