v2rayN-3.29-VLESS 支持 tlsHello分片

参数设置Outbound sockopt里选tlsHello分片
需求

最近 wss 的翻墙方式被GFW针对SNI阻断了. 大家发现设置tls hello 分片能解决此问题.
shadowrocket已经支持.
节点里开启片段设置

那么, 怎么在v2rayN里面进行设置呢?

========

思路

原理上是这样子的 
VLESS wss的outbound, 下一步继续灌到另一个outbound里面去. 
语法用 streamSettings 里面的 sockopt 里面的 dialerProxy, 指定下一个outbound.
这个第二个outbound是一个freedom, 里面设置了fragment分片.

这个数据流向 有一点相似 之前我们实现的 指定下一跳 socks 端口.

参数没有使用xray默认值, 使用的是shadowrocket的默认值.
填片段长度范围和间隔参数


========

具体实践

先修改默认配置文件
打开Sample文件夹里的SampleClientConfig.txt

C#代码可以直接从json读取到数据结构. 但是数据结构本身的C#定义要一致.

比如, 新增的配置文件部分
配置里加fragment与tlshello参数

代码里就要新增这样的数据结构定义
新增Fragment类的length和interval属性

也涉及到数据结构之间的关系.
Outboundsettings类里加fragment属性

设计了一下配置窗口界面.
配置窗口加了tlsHello分片选项

对应的, 程序本身的配置数据结构添加这几个参数.
public class V2rayNappConfig
V2rayNappConfig里加tlsHelloFgmLength参数

相应的, 读取和保存的函数要处理这几个新增的参数.
InitSockopt里读sockoptTag决定用哪个
SaveSockopt里保存tls分片参数

========

完

Github 
https://github.com/crazypeace/v2rayN-3.29-VLESS/releases/tag/v3.29.0.9beta

========

后记

一开始读xray的官方文档没搞明白原理, 所以也就不知道配置文件要怎么写.
后来所幸得到xray群友指点. 
Xray群里问到的tls hello分片方案


评论