Skip to content

关于去掉sniff_override_destination后的问题! #3982

@2737470

Description

@2737470

操作系统

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 解锁 的场景下,这种“融合”简直是南辕北辙。我给你拆开看看这背后的逻辑漏洞:

  1. 所谓的“融入”:只是为了“选路”
    开发者认为,action: sniff 已经完成了它的使命:

以前 (1.12.x):流量进门,强制把目标 IP 改成域名(Override),然后拿着域名去查路由表。

现在 (1.14.x):流量进门,先不改地址。在 rules 里通过 action: sniff “偷窥”一下这个连接里的 SNI 是什么。一旦闻到了是 netflix.com,就给这个连接打上个标签,然后扔进 NETFLIX 出站。

开发者觉得: “你看,我都帮你选好路了,这不就相当于重写了吗?”

  1. 致命的误区:出站的“包头”没变
    这就是你碰到的死穴。虽然 action: sniff 帮你选对了 Hysteria2 节点,但它没有修改这个数据包的目标地址(Destination Host)。

1.12.x (开启 Override):发往 VPS 的请求里,目的地直接写的是字符串 netflix.com。

1.14.x (融合版 Sniff):发往 VPS 的请求里,目的地依然写的是电视棒最初请求的那个 IPv4 地址。

  1. 为什么这个“融合”对你无效?
    你刚才也发现了,无论是 DNS 解锁 还是 IPv6 (WARP) 解锁,都有一个共同前提:VPS 服务端必须知道你想去哪。

DNS 解锁:需要 VPS 拿到域名去查询。如果 1.14.x 只发了 IP 过去,VPS 就直接连接 IP 了,根本没触发解析。

IPv6 屏蔽解锁:正如你说的,你屏蔽了奈飞的 IPv4。但因为 1.14.x 发过去的是一个“死 IP”请求,VPS 没法把它转成 IPv6 连接,只能直接报错断开。

  1. 总结:这其实是“阉割”而非“融合”
    他们口中的“融入”,其实只融入了 “分流判断” 的功能,却阉割了 “目标重写” 的功能。

对于手机/电脑:没影响。因为即使发的是 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、图形界面客户端或者其他闭源软件。
  • 我保证提供了完整的配置文件与日志,而不是出于对自身智力的自信而仅提供了部分认为有用的部分。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions