Surge TestFlight Feed
7.82K subscribers
12 photos
1 video
1 file
34 links
该频道用于提供关于 Surge iOS/Mac/tvOS 的最新 beta 版本信息
Download Telegram
关于 Pre-Matching 功能的一些补充说明:
1. Pre-Matching 规则的 REJECT 策略依然有意义,对于 REJECT/REJECT-NO-DROP 策略,TCP 请求会在 SYN 时立刻收到 TCP RST(客户端表现为 Connection refused),DNS 请求会收到 No Record 响应。
而对于 REJECT-DROP 策略,TCP 的 SYN 包与 DNS 查询包将被直接丢弃,不做任何响应。
REJECT 同样会在一定频次后(30 秒内 50 次触发),自动升级为 REJECT-DROP。
除有明确的特殊需求外,建议使用默认的 REJECT,没必要主动使用 REJECT-DROP。
更新中加入了对代理模式接管的请求的 pre-matching 处理,REJECT 行为是进行 TCP RST,DROP 行为是将 socket 挂起。
REJECT-NO-DROP 改进
接到部分用户回报,在用于去广告等用途时,如果 DNS 返回 NXDOMAIN/No Record 可能导致应用等待,而返回 127.0.0.1 会使得应用立刻认为请求失败。

出现该区别的原因,是因为应用开发者对于不同错误的处理逻辑不同。然而在 DNS 中返回 127.0.0.1 进行屏蔽,是一项非常不标准的行为,本质是将请求导向了回环网络 lo0,由本地系统产生一个 TCP refused 响应拒绝请求。

1. 如果本地系统上正好监听了访问的端口,会导致对应监听服务收到该请求,产生非预期结果。
2. 如果被屏蔽的应用重试逻辑非常暴力,由于 connect 127.0.0.1 会被系统极快的拒绝,可能导致 CPU 占用 100%。(即手机发热)

为此 Surge 提供了一个全新的解决方案,对于使用 REJECT-NO-DROP 的请求,Surge DNS 将固定返回特殊 IP 地址 198.18.0.244。对于该地址的所有 TCP 请求,将由 Surge VIF 产生 TCP refused,同时当发现往该地址的 TCP SYN 极高时,进行丢包处理以避免引发高 CPU 占用。

这种处理方式既保留了返回 127.0.0.1 的优点,同时消灭了可能导致的副作用。如果在使用 REJECT 时,出现了 app 等待过长的问题,可尝试使用 REJECT-NO-DROP。
Surge Mac & iOS Beta 更新日志
- 增加 pre-matching 标记规则的校验,在不支持的规则上配置该标记将直接产生配置错误。(请注意 PROTOCOL 语句不可用,逻辑规则的子规则也会被校验,但是 RULE-SET 的子规则若不支持仅会该子规则不生效而不会报错)
- 对 TCP RST 拒绝方式增加了全局防御,当 3 秒内触发 100 次后,将临时暂停以避免应用死循环导致 CPU 异常,同时输出日志
- pre-matching 的请求日志,由每 30 分钟一条,下调至 5 分钟
- [iOS] 为 iOS 18.1 下,Poor Network Quality 无法被从通知中心自动消除的问题加入了一个 workaround
关于 Pre-matching REJECT 的说明已加入到手册中:https://manual.nssurge.com/policy/reject.html
Surge Mac & iOS Beta 更新日志
- 新的订阅功能
Body Rewrite 支持使用 JQ 表达式对 JSON 进行操作

http-response-jq ^http://httpbingo.org/anything '.headers |= with_entries(select(.key | test("^X-") | not))'

JQ 表达式说明详见:https://jqlang.github.io/jq/
根据一些用户的回报,我们发现在支持 hysteria2 的端口跳跃时,对 QUIC 在网络切换时进行的优化,可能会在网络切换时触发系统 Bug,导致 Surge iOS 有概率在切网后所有的连接均超时。(系统路由表紊乱)
最新 TF 版本中移除了该优化,请有遇到这类问题的用户测试确认问题是否改善。
Surge Mac 更新日志
- UDP 整体架构进行重构,UDP 相关功能可能出现问题,如有遇到请回报。
- shadowsocks 协议支持配置 udp-port 参数,用于单独指定 UDP 模式的服务端端口号,可在使用 ShadowTLS 时使用原端口号。
Surge Mac & iOS Beta 更新日志
- 修改 HTTP 脚本的终止逻辑,如果需要打断请求,应使用 $done({abort: true}),除此之外的失败将对请求不做修改而不会终止
- 修正 Body Rewrite 规则的处理逻辑,如果遇到非 UTF-8/非 JSON 请求,行为修改为不做修改而非失败
- 优化 QUIC 流控,降低在上传测速时出现的内存占用
Surge Mac 5.9.0 与 iOS 5.14.0 已进入 RC 阶段,iOS 版本由于审核的一些离谱原因,默认图标更换为了 5.0 图标,如果想使用经典图标请手动修改。
Surge Mac 5.9.0 版本已正式发布,iOS 与 tvOS 5.14.0 版本已在 App Store 正式发布。
Surge iOS Beta 更新日志
- 脚本编辑页面支持传入 $argument
- 在脚本列表页面执行脚本也会传入 $argument 的内容了
- 脚本的 $trigger 参数新增 "editor" 和 "http-api" 两个来源
- 修正 iOS 16 下 WireGuard 可能无法使用的问题
- 修正部分代理协议的流量统计中,未计算上传的 UDP 流量的问题
提示
我们的客服邮箱 support@nssurge.com 向 @icloud.com 域所回复的邮件,最近几日经常被拒绝,原因不明,如需联系请换用其他邮箱,请见谅。
Screenshot 2024-11-08 at 2.56.38 PM.png
15.1 KB
Surge Mac Beta 最新版本在状态栏图标加入了出站模式指示,如果不需要可在外观设置中关闭