铁皮保温VLESS 公约 ​

VLESS 是个景况的轻量传输公约丽江铝皮保温,可以行为 Xray 客户端和就业器之间的桥梁。

Request & Response ​1 字节16 字节1 字节M 字节1 字节2 字节1 字节S 字节X 字节公约版块等价 UUID附加信息长度 M附加信息 ProtoBuf提醒端口地址类型地址恳求数据1 字节1 字节N 字节Y 字节公约版块,与恳求的致附加信息长度 N附加信息 ProtoBuf反馈数据

VLESS 早在二个测试版 ALPHA 2 时就还是是上述结构了(BETA 是五个测试版):

“反馈认证”被替换为“公约版块”并移至前,使 VLESS 可以升换代,同期放弃了生成伪随即数的支拨。羞辱敲结构被替换为附加信息(ProtoBuf)并前移,赋予公约自己可膨胀,敲支拨也小(gogo/protobuf),若附加信息则敲支拨。

我直计“反馈认证”不是要的,ALPHA 时为了进步生成随即数的能,还用 math/rand 替换 crypto/rand,而面前都不需要了。

“公约版块”不仅能起到“反馈认证”的作用,还赋予了 VLESS 痛升公约结构的智商,带来限的可能。 “公约版块”在测试版块中均为 ,郑再版块中为 1,以后若有不兼容的公约结构变则应升版块。

VLESS 就业端的贪图是 switch version,即同期守旧系数 VLESS 版块。若需要升公约版块(可能到不了这步),荐的作念法是就业端提前个月守旧,个月后再改客户端。VMess 恳求也有公约版块,但它的认证信息在外面,提醒部分则度耦且有固定加密,致内部的公约版块毫意旨,就业端也莫得进行判断,反馈则莫得公约版块。Trojan 的公约结构中莫得公约版块。

接下来是 UUID,我原本计 16 字节有点长,也曾探讨过裁减它,但自后看到 Trojan 用了 56 个可印字符(56 字节),就消了这个念头。就业端每次都要考证 UUID,是以能也很迫切:VLESS 的 Validator 阅历了屡次重构/升,相较于 VMess,它十分简易且耗资源很少,可以同期守旧尽头多的用户,能也十分强悍,考证速率快(sync.Map)。API 动态增删用户则顺滑。 https://github.com/XTLS/Xray-core/issues/158

引入 ProtoBuf 是个独创,等下会详备培育。“提醒”到“地址”的结构面前与 VMess 交流,相似守旧 Mux。

总体上,ALPHA 2 到 BETA 主若是:结构进化、计帐整、能进步、加完善。这些都是点滴的,详见 VLESS Changes。

邮箱:215114768@qq.comProtoBuf ​

似乎独一 VLESS 可选内嵌 ProtoBuf丽江铝皮保温,它是种数据交换要领,信息被细巧编码成二进制,TLV 结构(Tag Length Value)。

启事是我看到篇著述称 SS 有些纰谬,如莫得贪图特地答复机制,客户端没主义凭证不同的特地经受跳动的动作。 (但我并不招供系数特地都要答复,否则不了主动探伤。下个测试版中,就业器可以复返串自界说信息。) 于是念念到个可膨胀的结构是很迫切的,改日它也可以承载如动态端口提醒。不啻反馈,恳求也需要雷同的结构。 原本算我方贪图 TLV,接着发觉 ProtoBuf 即是此结构、现成的轮子,适应用来作念这件事,各谈话守旧等也可以。

面前“附加信息”独一 Scheduler 和 SchedulerV,它们是 MessName 和 MessSeed 的替代者,当你不需要它们时,“附加信息长度”为 ,也就不会有 ProtoBuf 序列化/反序列化的支拨。其实我闲隙称这个流程为“拼接”,因为 pb 现实旨趣上也仅仅这样作念良友,敲支拨小。拼接后的 bytes 十分紧凑,和 ALPHA 的案出入几,有兴致的可以别离输出并对比。

为了指导对附加信息(Addons,也可以剖释成插件,以后可以有许多个插件)的不同守旧进度,下个测试版会在“附加信息长度”前新增“附加信息版块”。256 - 1 = 255 字节是够用且理的(65535 就太多了,还可能有东说念主坏心填充),现存的只用了十分之,以后也不会同期有那么多附加信息,且大多半情况下是莫得附加信息的。真不够用的话,可以升 VLESS 版块。

为了减少逻辑判断等支拨,暂定 Addons 不使用多结构。个月前出现过“可变公约要领”的念念法,pb 是可以作念到乱功令,但没要,因为当代加密的贪图不会让旁不雅者看出两次传输的头部交流。

底下先容 Schedulers 和 Encryption 的构念念,它们都是可选的,个交代流量时序特征问题,铝皮保温个交代密码学上的问题。

Schedulers Flow ​

华文名暂称:流量更正器(22-9-3 新:华文名确定为“流控”),提醒由 ProtoBuf 承载,截止的是数据部分。

我之前发现,VMess 原有的 shake “元数据羞辱”在 TLS 上不会带来挑升旨的改变,只会降阴险,是以 VLESS 弃用了它。况兼,“羞辱”这个表述容易被诬陷成伪装,也弃用了。趁便提,我直是不看好伪装的:作念不到样,那不即是强特征吗?作念获取样,那为什么不屈直用伪装方针?我开动用的是 SSR,自后发现它仅仅名义伪装骗运营商,就再也没用过了。

那么,“流量更正器”要惩处什么问题?它影响的是宏不雅流量时序特征,而不是微不雅特征,后者是加密要惩处的事情。流量时序特征可以是公约带来的,比如 Socks5 over TLS 时的 Socks5 捏手 ,TLS 上不同的这种特征关于监测者来说即是不同的公约,此时限 Schedulers 就相当于限公约(再行分拨每次发送的数据量大小等)。流量时序特征也可以是行为带来的,比如探访 Google 页时加载了几许文献、功令、每个文献的大小,多套层加密并不可有遮掩这些信息。

Schedulers 没要像底下的 Encryption 样通盘套在外面,因为头部的丁点数据联系于背面的数据量来说太微不及说念了。

BETA 2 预测出两个初的 Scheduler:Zstd 压缩、数据量动态论。进阶操作才是从宏不雅层面来截止、分拨,暂时咕咕。

Encryption ​

与 VMess 的度耦不同,VLESS 的就业端、客户端不久后可以提前商定好加密式,仅在外面套层加密。这有点雷同于使用 TLS,不影响承载的任何数据,也可以剖释成底层即是从 TLS 换成预设商定加密。联系于度耦,这种式理且生动:种加密式出了安全问题,平直扔掉并换用其它的就行了,十分便。VLESS 就业端还会允许不同的加密式共存。

对比 VMess,VLESS 相当于把 security 换成 encryption,把 disableInsecureEncryption 换成 decryption,就惩处了系数问题。面前 encryption 和 decryption 只禁受 "none" 且不可留空(即使以后有勾搭安全查验),详见 VLESS 竖立文档。encryption 并不需要往外移,是因为法复用许多代码,二是因为会影响截止粒度,看改日的哄骗就昭彰了。

加密守旧两类体式,类是加密立,需要疏淡密码,适应自用,另类是结已有的 UUID 来加密,适应公用。 (若用类加密体式,且密码是以某种体式公开的,比如多东说念主共用,那么中间东说念主挫折就不远了) 再行贪图的动态端口可能会随加密同期出,提醒由 ProtoBuf 承载,具体收场和 VMess 的动态端口也会有许多不同。

套现成加密是件很毛糙的事情,也就多层 writer & reader。BETA 3 预测守旧 SS 的 aes-128-gcm 和 chacha2-ietf-poly135: 客户端的 encryption 可以填 “auto: ss_aes-128-gcm__123456, ss_chacha2-ietf-poly135__987654”,auto 会选拔适应现时机器的, 代表测试版,后的是密码。就业端的 decryption 亦然雷同填法,收到恳求时会逐尝试解密。

并不是系数组都需逐尝试:VMess 的加密分为三段,段是认证信息,结了 UUID、alterId、时间身分,二段是提醒部分,以固定算法加密,提醒中含罕有据部分使用的加密算法,三段才是迫切的数据部分。可以看出,VMess 的加解密式现实上是多对(就业端适配),而不仅是结 UUID。但仅是结 UUID 来加密亦然件相对落魄的事情,短时间内不会出,鉴于咱们面前有 VMessAEAD 可用,也并不火暴。若 VLESS 出了结 UUID 的加密式,相当于重构了通盘 VMess。

UDP issues ​

XUDP:VLESS & VMess & Mux UDP FullCone NAT

客户端竖立指引 ​VLESS 公约自己还会有不兼容升,但客户端竖立文献参数基本上是只增不减的。iOS 客户端的公约收场则需紧跟升。视觉圭臬:UI 标志聘统用 VLESS,而不是 VLess / Vless / vless,竖立文献不受影响,代码内则顺其当然。encryption 应作念成输入框而不是选拔框,新竖立的默许值应为 none,若用户置空则应代填 none。VLESS 共享王人集圭臬 ​

感谢 @DuckSoft 的提案!

笃定请见 VMessAEAD / VLESS 共享王人集圭臬提案丽江铝皮保温

相关词条:不锈钢保温施工
塑料管材生产线
钢绞线厂家玻璃棉板