Skip to content

Commit 1474411

Browse files
authored
VLESS: Add VLESS encryption
1 parent fb60273 commit 1474411

File tree

2 files changed

+33
-15
lines changed

2 files changed

+33
-15
lines changed

docs/config/inbounds/vless.md

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
# VLESS(XTLS Vision Seed)
22

3-
::: danger
4-
目前 VLESS 没有自带加密,请用于可靠信道,如 TLS。
5-
:::
6-
73
VLESS 是一个无状态的轻量传输协议,它分为入站和出站两部分,可以作为 Xray 客户端和服务器之间的桥梁。
84

95
[VMess](./vmess.md) 不同,VLESS 不依赖于系统时间,认证方式同样为 UUID。
@@ -38,11 +34,24 @@ VLESS 是一个无状态的轻量传输协议,它分为入站和出站两部
3834

3935
> `decryption`: "none"
4036
41-
现阶段需要填 `"none"`,不能留空。
42-
若未正确设置 decryption 的值,使用 Xray 或 -test 时会收到错误信息。
37+
VLESS 加密设置。不能留空,禁用需显式设置为 `"none"`.
38+
39+
推荐大多数用户使用 ./xray vlessenc 自动生成该字段确保编写不会出错。下方详细配置仅推荐高级用户阅读。
40+
41+
其格式为一串字段由 `.` 连接的详细配置。 如 `mlkem768x25519plus.native.0rtt.100-111-1111.75-0-111.50-0-3333.ptjHQxBQxTJ9MWr2cd5qWIflBSACHOevTauCQwa_71U`. 本文档将用点分开的单独部分称之为一个块
42+
43+
- 第1个块为握手方式,目前有且仅有 `mlkem768x25519plus`. 要求服务端与客户端一致
44+
- 第2个块为加密方式,可选 `native`/`xorpub`/`random`, 分别对应: 原始格式数据包/原始格式+混淆公钥部分/全随机数(类似 VMESS/Shadows socks)。要求服务端与客户端一致
45+
- 第3个块为会话恢复票据有效时间。格式为 `600s``100-500s`. 前者将在该时长和该时长的一半之间随机一个时间(如 `600s`=`300-600s`),后者则手动指定随即范围
46+
47+
往后为 padding, 连接建立后服务端发送一些垃圾数据用以混淆长度特征,无需与客户端相同(出站的相同部分为客户端向服务端方向发送的 padding),属于可变长部分,格式为 `padding.delay.padding`+`(.delay.padding)`*n(可插入多个 padding, 要求两个 padding 块之间必须包含一个 delay 块) 比如可以写一个超长的 `padding.delay.padding.delay.padding.delay.padding.delay.padding.delay.padding`
48+
49+
-`padding` 格式为 `probability-min-max``100-111-1111` 含义为 100% 发送一个长度 111~1111 的padding.
50+
-`delay` 格式同样为 `probability-min-max``75-0-111` 含义为 75% 的概率等待 0~111 毫秒
51+
52+
第一个 padding 块存在特殊要求,要求概率为 100% 且最小长度大于 0. 若不存在任何 padding, 核心自动使用 `100-111-1111.75-0-111.50-0-3333` 作为 padding 设置。
4353

44-
注意这里是 decryption,和 clients 同级。
45-
decryption 和 vmess 协议的 encryption 的位置不同,是因为若套一层约定加密,服务端需要先解密才能知道是哪个用户。
54+
最后一个块会被核心识别为认证客户端使用的参数,可用 `./xray x25519`(使用 PrivateKey 部分) 或 `./xray mlkem768`(使用 Seed 部分) 生成,要求与客户端对应。`mlkem768` 属于后量子算法,可以防止(未来)客户端参数泄露后被量子计算机破解出私钥并冒充服务端。该参数仅用于验证,握手过程无论如何都是后量子安全的,现有的加密数据无法被未来出现的量子计算机破解。
4655

4756
> `fallbacks`: \[ [FallbackObject](../features/fallback.md) \]
4857

docs/config/outbounds/vless.md

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
# VLESS(XTLS Vision Seed)
22

3-
::: danger
4-
目前 VLESS 没有自带加密,请用于可靠信道,如 TLS。
5-
:::
6-
73
VLESS 是一个无状态的轻量传输协议,它分为入站和出站两部分,可以作为 Xray 客户端和服务器之间的桥梁。
84

95
[VMess](./vmess.md) 不同,VLESS 不依赖于系统时间,认证方式同样为 UUID。
@@ -89,11 +85,24 @@ VLESS 的用户 ID,可以是任意小于 30 字节的字符串, 也可以是
8985

9086
> `encryption`: "none"
9187
92-
需要填 `"none"`,不能留空。
88+
VLESS 加密设置。不能留空,禁用需显式设置为 `"none"`.
89+
90+
推荐大多数用户使用 ./xray vlessenc 自动生成该字段确保编写不会出错。下方详细配置仅推荐高级用户阅读。
91+
92+
其格式为一串字段由 `.` 连接的详细配置。 如 `mlkem768x25519plus.native.0rtt.100-111-1111.75-0-111.50-0-3333.ptjHQxBQxTJ9MWr2cd5qWIflBSACHOevTauCQwa_71U`. 本文档将用点分开的单独部分称之为一个块
93+
94+
- 第1个块为握手方式,目前有且仅有 `mlkem768x25519plus`. 要求服务端与客户端一致
95+
- 第2个块为加密方式,可选 `native`/`xorpub`/`random`, 分别对应: 原始格式数据包/原始格式+混淆公钥部分/全随机数(类似 VMESS/Shadows socks)。要求服务端与客户端一致
96+
- 第3个块为是否会话恢复。选择 `0rtt` 将跟随服务端设置尝试使用先前生成的票据跳过握手快速连接(可被服务端手动禁用),选择 `1rtt` 将强制执行 1RTT 的握手过程。此处与服务端设置含义不同,详见 VLESS 入站 `decryption` 设置。
97+
98+
往后为 padding, 连接建立后客户端发送一些垃圾数据用以混淆长度特征,无需与服务端相同(入站的相同部分为服务端向客户端方向发送的 padding),属于可变长部分,格式为 `padding.delay.padding`+`(.delay.padding)`*n(可插入多个 padding, 要求两个 padding 块之间必须包含一个 delay 块) 比如可以写一个超长的 `padding.delay.padding.delay.padding.delay.padding.delay.padding.delay.padding`
99+
100+
-`padding` 格式为 `probability-min-max``100-111-1111` 含义为 100% 发送一个长度 111~1111 的padding.
101+
-`delay` 格式同样为 `probability-min-max``75-0-111` 含义为 75% 的概率等待 0~111 毫秒
93102

94-
该要求是为了提醒使用者没有加密,也为了以后出加密方式时,防止使用者填错属性名或填错位置导致裸奔
103+
第一个 padding 块存在特殊要求,要求概率为 100% 且最小长度大于 0. 若不存在任何 padding, 核心自动使用 `100-111-1111.75-0-111.50-0-3333` 作为 padding 设置
95104

96-
若未正确设置 encryption 的值,使用 Xray 或 -test 时会收到错误信息
105+
最后一个块会被核心识别为认证服务端使用的参数,可用 `./xray x25519`使用 Password 部分) 或 `./xray mlkem768`(使用 Client 部分) 生成,要求与服务端对应。`mlkem768` 属于后量子算法,可以防止(未来)客户端参数泄露后被量子计算机破解出私钥并冒充服务端。该参数仅用于验证,握手过程无论如何都是后量子安全的,现有的加密数据无法被未来出现的量子计算机破解
97106

98107
> `flow`: string
99108

0 commit comments

Comments
 (0)