-
-
Notifications
You must be signed in to change notification settings - Fork 3.8k
关于去掉sniff_override_destination后的问题! #3982
Description
操作系统
Linux
系统版本
Immortwrt
安装类型
sing-box 原始命令行程序
如果您使用图形客户端程序,请提供该程序版本。
No response
版本
sing-box 1.14.0 alpha 8描述
下面是关于去掉sniff_override_destination后奈飞在chromecast解锁播放失败的AI分析,不知道对不对,大神给点指导,是不是就真的没办法了?电脑端浏览器是没问题的,解锁正常快速
老兄,这就是 sing-box 1.14.x 最让人吐血的“文档陷阱”。
开发者的逻辑是:“既然我已经在路由阶段嗅探到了域名,那我就直接用这个域名去匹配出站规则,不需要再像以前那样多此一举地去‘改写’原始地址了。”
但在实际应用,尤其是你这种 Google TV + VPS 解锁 的场景下,这种“融合”简直是南辕北辙。我给你拆开看看这背后的逻辑漏洞:
- 所谓的“融入”:只是为了“选路”
开发者认为,action: sniff 已经完成了它的使命:
以前 (1.12.x):流量进门,强制把目标 IP 改成域名(Override),然后拿着域名去查路由表。
现在 (1.14.x):流量进门,先不改地址。在 rules 里通过 action: sniff “偷窥”一下这个连接里的 SNI 是什么。一旦闻到了是 netflix.com,就给这个连接打上个标签,然后扔进 NETFLIX 出站。
开发者觉得: “你看,我都帮你选好路了,这不就相当于重写了吗?”
- 致命的误区:出站的“包头”没变
这就是你碰到的死穴。虽然 action: sniff 帮你选对了 Hysteria2 节点,但它没有修改这个数据包的目标地址(Destination Host)。
1.12.x (开启 Override):发往 VPS 的请求里,目的地直接写的是字符串 netflix.com。
1.14.x (融合版 Sniff):发往 VPS 的请求里,目的地依然写的是电视棒最初请求的那个 IPv4 地址。
- 为什么这个“融合”对你无效?
你刚才也发现了,无论是 DNS 解锁 还是 IPv6 (WARP) 解锁,都有一个共同前提:VPS 服务端必须知道你想去哪。
DNS 解锁:需要 VPS 拿到域名去查询。如果 1.14.x 只发了 IP 过去,VPS 就直接连接 IP 了,根本没触发解析。
IPv6 屏蔽解锁:正如你说的,你屏蔽了奈飞的 IPv4。但因为 1.14.x 发过去的是一个“死 IP”请求,VPS 没法把它转成 IPv6 连接,只能直接报错断开。
- 总结:这其实是“阉割”而非“融合”
他们口中的“融入”,其实只融入了 “分流判断” 的功能,却阉割了 “目标重写” 的功能。
对于手机/电脑:没影响。因为即使发的是 IP,浏览器在握手时还会带一份 SNI 域名,VPS 有机会识别。
对于电视棒:这是灭顶之灾。电视棒的 App 逻辑很死,如果本地代理不强行把目的地改成域名,它发出的 IP 请求到了 VPS 端就是一坨“死数据”,根本触发不了你的任何解锁逻辑。
💡 现在的真相:
1.14.0-alpha.8 的 action: sniff 并没有完全替代 sniff_override_destination。 它只是让 sing-box 变聪明了(会闻味儿了),但没让它变勤快(不帮你在包头上改名了)。对于需要“换头手术”才能解锁的流媒体环境,现在的 1.14.x 依然是残血状态。
重现方式
chromecast & google TV 4K电视棒设备播放解锁奈飞就有这个问题,逻辑应该是如下:
电脑:域名请求-VPS 嗅探成功-触发解锁-全内容播放。
电视棒(自制剧):IP 请求 - VPS 嗅探失败- 原生 IP 出站-Netflix 识别为代理-仅限自制剧。
电视棒(非自制剧):IP 请求 -VPS 嗅探失败- 原生 IP 出站 -Netflix 严查版权 -报错/无法播放。
日志
支持我们
- 我已经 赞助
完整性要求
- 我保证阅读了文档,了解所有我编写的配置文件项的含义,而不是大量堆砌看似有用的选项或默认值。
- 我保证提供了可以在本地重现该问题的服务器、客户端配置文件与流程,而不是一个脱敏的复杂客户端配置文件。
- 我保证提供了可用于重现我报告的错误的最简配置,而不是依赖远程服务器、TUN、图形界面客户端或者其他闭源软件。
- 我保证提供了完整的配置文件与日志,而不是出于对自身智力的自信而仅提供了部分认为有用的部分。