v2rayN icon indicating copy to clipboard operation
v2rayN copied to clipboard

[Feature request]: Sing-Box Mux增加padding选项

Open Lightmani opened this issue 1 year ago • 5 comments

相关问题

Sing-Box在1.3-beta9版本后,Multiplex添加了padding选项。当前V2rayN客户端尚未跟进

描述你希望的解决方案

当使用Sing-Box内核,且开启Mux时,能够Enable padding选项

描述你所考虑的替代方案

No response

我确认已查询历史issues

  • [X] 是

Lightmani avatar Aug 16 '24 12:08 Lightmani

{ "enabled": true, "protocol": "smux", "max_connections": 4, "padding": false }

Lightmani avatar Aug 16 '24 12:08 Lightmani

有什么用?

2dust avatar Aug 18 '24 02:08 2dust

根据https://github.com/Shadowsocks-NET/shadowsocks-specs/blob/main/2022-1-shadowsocks-2022-edition.md

`Padding 的作用主要是防止通过包的大小来推测或检测所使用的协议,增强通信的隐私和安全性。具体来说,Padding 的作用包括以下几点:

隐藏包的实际大小:

在发送请求头时,如果没有可用的实际负载 (payload),则需要添加一个非零的随机长度的填充 (padding)。这使得外部观察者难以通过分析数据包的大小推测出传输内容或通信协议。 防止协议检测:

通过随机长度的 Padding,可以防止攻击者通过探测服务器消耗的字节数来检测服务器使用的协议或进行流量分析。例如,攻击者可能会通过逐字节发送数据包的方式来探测服务器何时关闭连接。随机填充可以混淆这种探测手段。 应对TCP Fast Open (TFO):

在客户端实现中,可以选择始终发送随机长度的填充,以防止早期请求中的协议信息泄露。特别是在启用 TCP Fast Open 的情况下,客户端可能会等待一段时间以允许客户端优先协议写入第一个有效载荷,然后再继续建立代理连接并写入头部。Padding 可以在这个等待过程中帮助隐藏通信模式。 确保请求的有效性:

服务器会拒绝任何包含变长头部块的请求,如果该块不包含有效负载且填充长度为 0。这可以确保请求头的格式正确,并且不会泄露请求的字节数。 通过添加随机长度的填充,通信双方可以有效地隐藏真实数据的长度,增加协议的模糊性,从而提高通信的隐私性和安全性。`

Lightmani avatar Aug 18 '24 02:08 Lightmani

此属性是否需要服务端支持?

2dust avatar Aug 18 '24 02:08 2dust

根据SIng-Box文档 https://sing-box.sagernet.org/configuration/shared/multiplex/ 需要在双端Mux中设置"padding": true

Lightmani avatar Aug 18 '24 03:08 Lightmani

退出v2rayN,打开安装目录下的文件guiNConfig.json,找到padding,修改 true ,保存,重启

2dust avatar Aug 31 '24 01:08 2dust

https://github.com/2dust/v2rayN/wiki/Description-of-some-parameters

2dust avatar Aug 31 '24 05:08 2dust

https://github.com/2dust/v2rayN/wiki/Description-of-some-parameters

谢谢开发者。新Release发布后我测试下该参数选项。

Lightmani avatar Aug 31 '24 06:08 Lightmani