Surge TestFlight Feed
新版本已完成 TCP 的路由自动判定,现在对于这种情况规则只需要使用 DIRECT 即可,会遵循系统路由表。
最新版本与 Tailscale 联合使用的配置样例
[Host]
*.ts.net = server:100.100.100.100
[Rule]
IP-CIDR,100.64.0.0/10,DIRECT,no-resolve
Surge Mac Beta 更新日志
所有主机名列表参数类型新增关键字 <simple-hostname>,用于匹配不带 . 的主机名,如
(上述配置可以用来在增强模式中使用 NetBIOS 主机名连接 SMB 服务器)
所有主机名列表参数类型新增关键字 <simple-hostname>,用于匹配不带 . 的主机名,如
always-real-ip = <simple-hostname>
(上述配置可以用来在增强模式中使用 NetBIOS 主机名连接 SMB 服务器)
Surge iOS Beta 更新日志
- 支持在始终开启开关打开的情况下,通过小组件/控制中心/捷径关闭 Surge
- 支持在 Surge VPN Profile 未被选中的情况下(其他 VPN 运行时),通过小组件/控制中心/捷径开启 Surge
- 支持在始终开启开关打开的情况下,通过小组件/控制中心/捷径关闭 Surge
- 支持在 Surge VPN Profile 未被选中的情况下(其他 VPN 运行时),通过小组件/控制中心/捷径开启 Surge
由于 Surge Ponte 所依赖的一个公共 STUN 服务器突然关闭,导致 Surge Ponte 功能不可用,我们已进行紧急替换,请更新 Surge Mac 至最新版本。同时将在未来自建 STUN 服务器以避免这类问题。
Surge TestFlight Feed
由于 Surge Ponte 所依赖的一个公共 STUN 服务器突然关闭,导致 Surge Ponte 功能不可用,我们已进行紧急替换,请更新 Surge Mac 至最新版本。同时将在未来自建 STUN 服务器以避免这类问题。
Surge tvOS TF 版本更新将在 5 分钟后可用,今日提交商店版本
Surge TestFlight Feed
Surge tvOS TF 版本更新将在 5 分钟后可用,今日提交商店版本
tvOS 版本已在 App Store 更新
Surge Mac Beta 更新日志
- 为网页增加规则时,可以选择加入已存在的规则集。(支持本地规则文件和 inline 规则集)
- 为网页增加规则时,可以选择加入已存在的规则集。(支持本地规则文件和 inline 规则集)
Surge TestFlight Feed
Photo
新版本中已统一 Dashboard 中快速增加规则的面板,同样可以使用该新特性(仅限操作本机实例时)
Surge iOS Beta 更新日志
新的订阅功能:自定义策略组图标
(仅 Lucid 主题下可用)
- 可通过 UI 进行编辑,增加外部图标库,支持搜索,图标库索引文件定义如下:
{
"name": "Icon Set Name",
"icons": [
{ "name": "Icon1", "url": "https://…"},
{ "name": "Icon2", "url": "https://…"},
]
}
配置后写入策略组的 icon-url 参数,也可以直接配置该参数。
- 可在动态资源页面中,清理图标缓存。
新的订阅功能:自定义策略组图标
(仅 Lucid 主题下可用)
- 可通过 UI 进行编辑,增加外部图标库,支持搜索,图标库索引文件定义如下:
{
"name": "Icon Set Name",
"icons": [
{ "name": "Icon1", "url": "https://…"},
{ "name": "Icon2", "url": "https://…"},
]
}
配置后写入策略组的 icon-url 参数,也可以直接配置该参数。
- 可在动态资源页面中,清理图标缓存。
Surge Mac Beta 更新
- DNS 转发子系统优化
- 当处理的 DNS 请求的域名为不应向公网转发的域名时(如 .home.arpa,1.0.168.192.in-addr.arpa),将自动判断上游的 DNS 地址,仅向 LAN DNS 转发。
- 现在 Surge 可以正确的应答 fake IP 的 PTR 请求了,即使用
- DNS 转发器现在将依据 [Host] 段配置转发 DNS 请求到特定上游服务器。
- 对针对 Fake IP 的 DNS-SD PTR 请求直接响应 NOTIMP,不再进行转发。
- DNS 转发子系统优化
- 当处理的 DNS 请求的域名为不应向公网转发的域名时(如 .home.arpa,1.0.168.192.in-addr.arpa),将自动判断上游的 DNS 地址,仅向 LAN DNS 转发。
- 现在 Surge 可以正确的应答 fake IP 的 PTR 请求了,即使用
dig -x 198.18.23.87
命令可用于确定 fake IP 对应的域名。- DNS 转发器现在将依据 [Host] 段配置转发 DNS 请求到特定上游服务器。
- 对针对 Fake IP 的 DNS-SD PTR 请求直接响应 NOTIMP,不再进行转发。
Surge TestFlight Feed
Surge Mac Beta 更新 - DNS 转发子系统优化 - 当处理的 DNS 请求的域名为不应向公网转发的域名时(如 .home.arpa,1.0.168.192.in-addr.arpa),将自动判断上游的 DNS 地址,仅向 LAN DNS 转发。 - 现在 Surge 可以正确的应答 fake IP 的 PTR 请求了,即使用 dig -x 198.18.23.87 命令可用于确定 fake IP 对应的域名。 - DNS 转发器现在将依据 [Host] 段配置转发 DNS 请求到特定上游服务器。…
关于 PTR 请求的转发
我们收到部分用户回报,Surge 中配置的上游 DNS 收到了大量的 PTR 请求,询问是否是 Surge 的问题。
Surge 本身并不会产生任何 PTR 请求,Surge 的 DNS 转发器只是将收到的请求转发至所配置的 DNS 服务器。出现该问题的原因是某进程或者所接管的设备产生了大量 PTR 请求。
关于 .home.arpa 等内部 DNS 请求是否应该被转发
Surge 增强模式的 DNS 转发器核心是作为 hijack 系统 DNS 解析的用途,所以对于非 A/AAAA 查询,应该遵循系统逻辑单纯的将捕获的 DNS 请求转发给上游,Surge DNS 并不适用于 RFC 8375 的描述。
从另一个角度看,如果在系统中直接配置公网 DNS,系统也会将 .home.arpa 的请求直接发往公网 DNS,产生这个问题的原因,一是没有文档约束 DNS 客户端设备对于此类请求的行为,二是客户端其实没有办法判定配置的 DNS 是否为内网 DNS,依据 LAN IP Block 判定是一种不完备的方案。
我们收到部分用户回报,Surge 中配置的上游 DNS 收到了大量的 PTR 请求,询问是否是 Surge 的问题。
Surge 本身并不会产生任何 PTR 请求,Surge 的 DNS 转发器只是将收到的请求转发至所配置的 DNS 服务器。出现该问题的原因是某进程或者所接管的设备产生了大量 PTR 请求。
关于 .home.arpa 等内部 DNS 请求是否应该被转发
Surge 增强模式的 DNS 转发器核心是作为 hijack 系统 DNS 解析的用途,所以对于非 A/AAAA 查询,应该遵循系统逻辑单纯的将捕获的 DNS 请求转发给上游,Surge DNS 并不适用于 RFC 8375 的描述。
从另一个角度看,如果在系统中直接配置公网 DNS,系统也会将 .home.arpa 的请求直接发往公网 DNS,产生这个问题的原因,一是没有文档约束 DNS 客户端设备对于此类请求的行为,二是客户端其实没有办法判定配置的 DNS 是否为内网 DNS,依据 LAN IP Block 判定是一种不完备的方案。
Surge TestFlight Feed
关于 PTR 请求的转发 我们收到部分用户回报,Surge 中配置的上游 DNS 收到了大量的 PTR 请求,询问是否是 Surge 的问题。 Surge 本身并不会产生任何 PTR 请求,Surge 的 DNS 转发器只是将收到的请求转发至所配置的 DNS 服务器。出现该问题的原因是某进程或者所接管的设备产生了大量 PTR 请求。 关于 .home.arpa 等内部 DNS 请求是否应该被转发 Surge 增强模式的 DNS 转发器核心是作为 hijack 系统 DNS 解析的用途,所以对于非 A/AAAA…
但是鉴于绝大多数情况下,往公网 DNS 发送 .home.arpa 的 PTR 查询都是不合理的,新版 Surge 内置了阻断逻辑,将只向 LAN IP Block 转发此类请求。如果该 hardcode 行为与你的需求产生了冲突,请在社区提出,我们会考虑为该功能增加开关。
Surge iOS & tvOS Beta 更新日志
- 同步 Mac 版本关于 DNS 转发系统的修改
- 使用 CloudKit 重写 Surge tvOS 配置部署流程,稳定性得到大幅提升。请注意需要将 iOS 和 tvOS 都升级至最新版本后才可以使用配置部署功能,且 tvOS 版本需要先启动一次完成注册
- 同步 Mac 版本关于 DNS 转发系统的修改
- 使用 CloudKit 重写 Surge tvOS 配置部署流程,稳定性得到大幅提升。请注意需要将 iOS 和 tvOS 都升级至最新版本后才可以使用配置部署功能,且 tvOS 版本需要先启动一次完成注册
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。