Surge iOS & tvOS 5.12.0 App Store 版本更新已发布
- 新的订阅功能:自定义策略组图标
- 使用 CloudKit 重构 Surge tvOS 配置部署流程,稳定性得到大幅提升。请注意需要将 iOS 和 tvOS 都升级至最新版本后才可以使用配置部署功能,且 tvOS 版本需要先启动一次完成注册
- 在请求列表里使用增加规则功能时,可以选择加入已存在的规则集。(支持本地规则文件和 inline 规则集)
- 模块支持配置 client-source-address 参数
- 修正导出 HAR 时的一些问题
- UI 恢复兼容模式(接管模式)设置并增加详细描述
- 优化 No Default Route 模式下开启 IPv6 VIF 时的行为
- 修正 UI 编辑规则时的一些细节问题,如开启状态和注释
- 优化在外部资源页面查看巨型资源时的表现
- 其他细节优化与问题修正
- 新的订阅功能:自定义策略组图标
- 使用 CloudKit 重构 Surge tvOS 配置部署流程,稳定性得到大幅提升。请注意需要将 iOS 和 tvOS 都升级至最新版本后才可以使用配置部署功能,且 tvOS 版本需要先启动一次完成注册
- 在请求列表里使用增加规则功能时,可以选择加入已存在的规则集。(支持本地规则文件和 inline 规则集)
- 模块支持配置 client-source-address 参数
- 修正导出 HAR 时的一些问题
- UI 恢复兼容模式(接管模式)设置并增加详细描述
- 优化 No Default Route 模式下开启 IPv6 VIF 时的行为
- 修正 UI 编辑规则时的一些细节问题,如开启状态和注释
- 优化在外部资源页面查看巨型资源时的表现
- 其他细节优化与问题修正
Surge iOS Beta 更新日志
- 新增 Ponte 诊断功能,用于快速定位 Ponte 相关问题,从 Ponte 设备页面进入
- 修正 subnet 组无法配置自定义图标的问题
- 修正当存在名为 Global 组时,使用全局模式可能出现的问题
- 新增 Ponte 诊断功能,用于快速定位 Ponte 相关问题,从 Ponte 设备页面进入
- 修正 subnet 组无法配置自定义图标的问题
- 修正当存在名为 Global 组时,使用全局模式可能出现的问题
Surge Mac & iOS Beta 更新日志
- 提高与服务端 quic-go v0.46.0 的兼容性
相关技术细节
QUIC 协议内置了 Idle Timeout 的机制,同时约定了 max_idle_timeout 参数用于服务端和客户端协商空闲超时的具体时间,根据 RFC 9000,该值为 0 的时候表示不使用该机制或遵循对端设置。(Section 18.2)
Surge 目前版本该参数会指定为 0,因为 Surge 不依赖 QUIC 的 Idle Timeout 机制。然而最新版本 quic-go 重写后,错误将值 0 作为了超时时间,在第一个 stream 结束后,立刻认为闲置时间超时关闭了连接。
更糟糕的是,quic-go 也没有完成 stateless reset 机制,对于 Surge 后续发出的数据包,直接予以丢弃而不产生 stateless reset 响应,导致 Surge 需等待一定时间超时后,才会认为连接失效而重新建立连接。
最新版本为规避该问题,将 max_idle_timeout 参数调整为 30s。
- 提高与服务端 quic-go v0.46.0 的兼容性
相关技术细节
QUIC 协议内置了 Idle Timeout 的机制,同时约定了 max_idle_timeout 参数用于服务端和客户端协商空闲超时的具体时间,根据 RFC 9000,该值为 0 的时候表示不使用该机制或遵循对端设置。(Section 18.2)
Surge 目前版本该参数会指定为 0,因为 Surge 不依赖 QUIC 的 Idle Timeout 机制。然而最新版本 quic-go 重写后,错误将值 0 作为了超时时间,在第一个 stream 结束后,立刻认为闲置时间超时关闭了连接。
更糟糕的是,quic-go 也没有完成 stateless reset 机制,对于 Surge 后续发出的数据包,直接予以丢弃而不产生 stateless reset 响应,导致 Surge 需等待一定时间超时后,才会认为连接失效而重新建立连接。
最新版本为规避该问题,将 max_idle_timeout 参数调整为 30s。
Snell Server 版本更新 v4.1.0 beta 1
- 更新 DNS 库 c-ares 至最新版本,以解决和特定 DNS 记录的兼容问题
- 在启动时新增当前使用的 DNS 服务器输出
- 新增 dns 参数,用于自定义 DNS 服务器地址,支持配置多个地址,如
https://dl.nssurge.com/snell/snell-server-v4.1.0b1-linux-amd64.zip
https://dl.nssurge.com/snell/snell-server-v4.1.0b1-linux-i386.zip
https://dl.nssurge.com/snell/snell-server-v4.1.0b1-linux-aarch64.zip
https://dl.nssurge.com/snell/snell-server-v4.1.0b1-linux-armv7l.zip
- 更新 DNS 库 c-ares 至最新版本,以解决和特定 DNS 记录的兼容问题
- 在启动时新增当前使用的 DNS 服务器输出
- 新增 dns 参数,用于自定义 DNS 服务器地址,支持配置多个地址,如
[snell-server]
dns = 1.1.1.1, 8.8.8.8, 2001:4860:4860::8888
https://dl.nssurge.com/snell/snell-server-v4.1.0b1-linux-amd64.zip
https://dl.nssurge.com/snell/snell-server-v4.1.0b1-linux-i386.zip
https://dl.nssurge.com/snell/snell-server-v4.1.0b1-linux-aarch64.zip
https://dl.nssurge.com/snell/snell-server-v4.1.0b1-linux-armv7l.zip
Snell Server 版本更新 v4.1.0 beta 2
- 完善了 DNS 错误时的日志信息
- 修正某种特定的 DNS 无效记录会导致崩溃的问题
https://dl.nssurge.com/snell/snell-server-v4.1.0b2-linux-amd64.zip
https://dl.nssurge.com/snell/snell-server-v4.1.0b2-linux-i386.zip
https://dl.nssurge.com/snell/snell-server-v4.1.0b2-linux-aarch64.zip
https://dl.nssurge.com/snell/snell-server-v4.1.0b2-linux-armv7l.zip
- 完善了 DNS 错误时的日志信息
- 修正某种特定的 DNS 无效记录会导致崩溃的问题
https://dl.nssurge.com/snell/snell-server-v4.1.0b2-linux-amd64.zip
https://dl.nssurge.com/snell/snell-server-v4.1.0b2-linux-i386.zip
https://dl.nssurge.com/snell/snell-server-v4.1.0b2-linux-aarch64.zip
https://dl.nssurge.com/snell/snell-server-v4.1.0b2-linux-armv7l.zip
Snell Server 版本更新 v4.1.0 beta 3
- 更新 libuv 至 v1.48.0,修正在特定系统下,访问 IPv6 地址时可能会出现的崩溃
https://dl.nssurge.com/snell/snell-server-v4.1.0b3-linux-amd64.zip
https://dl.nssurge.com/snell/snell-server-v4.1.0b3-linux-i386.zip
https://dl.nssurge.com/snell/snell-server-v4.1.0b3-linux-aarch64.zip
https://dl.nssurge.com/snell/snell-server-v4.1.0b3-linux-armv7l.zip
- 更新 libuv 至 v1.48.0,修正在特定系统下,访问 IPv6 地址时可能会出现的崩溃
https://dl.nssurge.com/snell/snell-server-v4.1.0b3-linux-amd64.zip
https://dl.nssurge.com/snell/snell-server-v4.1.0b3-linux-i386.zip
https://dl.nssurge.com/snell/snell-server-v4.1.0b3-linux-aarch64.zip
https://dl.nssurge.com/snell/snell-server-v4.1.0b3-linux-armv7l.zip
Snell Server 版本更新 v4.1.0 RC1
- 调整日志输出,将 broken pipe 错误输出降低到 verbose 级别
https://dl.nssurge.com/snell/snell-server-v4.1.0rc1-linux-amd64.zip
https://dl.nssurge.com/snell/snell-server-v4.1.0rc1-linux-i386.zip
https://dl.nssurge.com/snell/snell-server-v4.1.0rc1-linux-aarch64.zip
https://dl.nssurge.com/snell/snell-server-v4.1.0rc1-linux-armv7l.zip
- 调整日志输出,将 broken pipe 错误输出降低到 verbose 级别
https://dl.nssurge.com/snell/snell-server-v4.1.0rc1-linux-amd64.zip
https://dl.nssurge.com/snell/snell-server-v4.1.0rc1-linux-i386.zip
https://dl.nssurge.com/snell/snell-server-v4.1.0rc1-linux-aarch64.zip
https://dl.nssurge.com/snell/snell-server-v4.1.0rc1-linux-armv7l.zip
Surge iOS & Mac Beta 更新日志
Hysteria2 与 TUIC 协议支持端口跳越,用于改善 ISP 对 UDP 的 QoS 问题。详见服务端说明。
配置
参数
- `port-hopping`:用于配置端口范围,逗号分隔,支持以-配置范围
- `port-hopping-interval`:变换端口号的时间间隔,默认为 30s
Hysteria2 与 TUIC 协议支持端口跳越,用于改善 ISP 对 UDP 的 QoS 问题。详见服务端说明。
Proxy = hysteria2, 1.2.3.4, 443, password=pwd, port-hopping=1234
;5000-6000
;7044
;8000-9000, port-hopping-interval=30
配置
port-hopping
参数后,配置前方的主端口号不再生效。参数
- `port-hopping`:用于配置端口范围,逗号分隔,支持以-配置范围
- `port-hopping-interval`:变换端口号的时间间隔,默认为 30s
Surge TestFlight Feed
Snell Server 版本更新 v4.1.0 RC1 - 调整日志输出,将 broken pipe 错误输出降低到 verbose 级别 https://dl.nssurge.com/snell/snell-server-v4.1.0rc1-linux-amd64.zip https://dl.nssurge.com/snell/snell-server-v4.1.0rc1-linux-i386.zip https://dl.nssurge.com/snell/snell-server-v4.1.0rc1…
Surge iOS & Mac Beta 更新日志
- 修正开启端口跳越后,数据统计出现的一些问题
- 调整端口跳越配置参数的分隔符为 ;
- [Mac] 适配 macOS Sequoia,解决了增强模式下的一些兼容性问题
- 修正开启端口跳越后,数据统计出现的一些问题
- 调整端口跳越配置参数的分隔符为 ;
- [Mac] 适配 macOS Sequoia,解决了增强模式下的一些兼容性问题
Surge Mac Beta 5.8.0 重要版本更新
由于传统的 utun 接管方案在新版系统下会产生众多问题,从 Surge Mac 5.8.0 版本开始,Surge Mac 将使用 Network Extension 作为增强模式接管系统网络。
- Surge Mac 的最低系统版本需求调整至 macOS 12
- 由于需要的权限不同,更新后需要手动进行授权操作
- vif-mode 参数将不再生效
- 增强模式现在可以和网络共享功能协同使用了,即可以直接创建出由 Surge 接管的 Wi-Fi(需要有线网络提供外网)
- 相比旧方案,新方案的最大吞吐量略有下降,我们会在之后给出具体数据。(非万兆网络忽略不计)
最近版本可能有诸多小问题,如果希望稳定请先暂缓更新。
由于传统的 utun 接管方案在新版系统下会产生众多问题,从 Surge Mac 5.8.0 版本开始,Surge Mac 将使用 Network Extension 作为增强模式接管系统网络。
- Surge Mac 的最低系统版本需求调整至 macOS 12
- 由于需要的权限不同,更新后需要手动进行授权操作
- vif-mode 参数将不再生效
- 增强模式现在可以和网络共享功能协同使用了,即可以直接创建出由 Surge 接管的 Wi-Fi(需要有线网络提供外网)
- 相比旧方案,新方案的最大吞吐量略有下降,我们会在之后给出具体数据。(非万兆网络忽略不计)
最近版本可能有诸多小问题,如果希望稳定请先暂缓更新。
Surge Mac & iOS Beta 更新日志
- [Mac] 本地 DNS 映射的 syslib 关键字可以在增强模式下使用了,但是非增强模式下是完全交给系统完成解析,增强模式下是读取系统的 DNS 地址后由 Surge 解析。
- 新增 [General] 参数 `show-error-page`,用于控制在出现错误时,是否显示 Surge 的 HTTP错误页,该参数默认为开启,行为与先前版本一致
- [Mac] 本地 DNS 映射的 syslib 关键字可以在增强模式下使用了,但是非增强模式下是完全交给系统完成解析,增强模式下是读取系统的 DNS 地址后由 Surge 解析。
- 新增 [General] 参数 `show-error-page`,用于控制在出现错误时,是否显示 Surge 的 HTTP错误页,该参数默认为开启,行为与先前版本一致
Snell Server 版本更新 v4.1.1 RC1
- 修正 UDP 转发时可能出现的一个崩溃
https://dl.nssurge.com/snell/snell-server-v4.1.1-linux-amd64.zip
https://dl.nssurge.com/snell/snell-server-v4.1.1-linux-i386.zip
https://dl.nssurge.com/snell/snell-server-v4.1.1-linux-aarch64.zip
https://dl.nssurge.com/snell/snell-server-v4.1.1-linux-armv7l.zip
- 修正 UDP 转发时可能出现的一个崩溃
https://dl.nssurge.com/snell/snell-server-v4.1.1-linux-amd64.zip
https://dl.nssurge.com/snell/snell-server-v4.1.1-linux-i386.zip
https://dl.nssurge.com/snell/snell-server-v4.1.1-linux-aarch64.zip
https://dl.nssurge.com/snell/snell-server-v4.1.1-linux-armv7l.zip
Surge Mac & iOS Beta 更新日志
新增参数 proxy-restricted-to-lan/gateway-restricted-to-lan
目前发现部分用户由于不太了解网络安全知识,意外将代理和网关服务暴露于公网(如配置了 DMZ),因此增加了这两个参数,将限制代理和网关服务仅接受来自当前子网下的设备。
这两个参数为默认开启。
新增参数 proxy-restricted-to-lan/gateway-restricted-to-lan
目前发现部分用户由于不太了解网络安全知识,意外将代理和网关服务暴露于公网(如配置了 DMZ),因此增加了这两个参数,将限制代理和网关服务仅接受来自当前子网下的设备。
这两个参数为默认开启。
Surge TestFlight Feed
Snell Server 版本更新 v4.1.1 RC1 - 修正 UDP 转发时可能出现的一个崩溃 https://dl.nssurge.com/snell/snell-server-v4.1.1-linux-amd64.zip https://dl.nssurge.com/snell/snell-server-v4.1.1-linux-i386.zip https://dl.nssurge.com/snell/snell-server-v4.1.1-linux-aarch64.zip https:/…
4.1.1 RC1 版本已作为正式版本发布,二进制已更新,修正了日志中版本号未更新的问题,除此之外无变化。
Surge iOS 使用提示
最近几周接到若干用户回报,米家 app 开启时会产生大量请求,可能导致 Surge 因瞬时内存占用过高导致 Surge 被停止。确认该问题为米家 app 死循环请求所致。
部分用户采用 tun-excluded-routes 和兼容模式参数绕过,这其实是不合适的,即使不开启 Surge,系统仍然会因为米家 app 的疯狂请求而严重发热与大幅消耗电量。
目前的最佳解决方案是配置对应的 REJECT-DROP 规则。由于访问的 IP 是动态解析结果,我们无法提供具体的规则,需要自己根据请求列表结果配置,一个例子:
请向米家 app 团队反馈该问题。
最近几周接到若干用户回报,米家 app 开启时会产生大量请求,可能导致 Surge 因瞬时内存占用过高导致 Surge 被停止。确认该问题为米家 app 死循环请求所致。
部分用户采用 tun-excluded-routes 和兼容模式参数绕过,这其实是不合适的,即使不开启 Surge,系统仍然会因为米家 app 的疯狂请求而严重发热与大幅消耗电量。
目前的最佳解决方案是配置对应的 REJECT-DROP 规则。由于访问的 IP 是动态解析结果,我们无法提供具体的规则,需要自己根据请求列表结果配置,一个例子:
IP-CIDR,106.120.178.9/32,REJECT-DROP,no-resolve
请向米家 app 团队反馈该问题。