@@ -117,8 +117,9 @@ Reality 是目前最安全的传输加密方案, 且外部看来流量类型和
117
117
"pinnedPeerCertificateChainSha256" : [" " ],
118
118
"curvePreferences" : [" " ],
119
119
"masterKeyLog" : " " ,
120
+ "echServerKeys" : " " ,
120
121
"echConfigList" : " " ,
121
- "echServerKeys " : " "
122
+ "echForceQuery " : " "
122
123
}
123
124
```
124
125
@@ -269,25 +270,41 @@ x25519Kyber768Draft00
269
270
270
271
(Pre)-Master-Secret log 文件路径,可用于Wireshark等软件解密Xray发送的TLS连接。
271
272
273
+ > ` echServerKeys ` : string
274
+
275
+ 仅服务端参数,用于服务端启用 Encrypted Client Hello.
276
+
277
+ 使用 ` xray tls ech --serverName example.com ` 生成可用的 ECH Server Key 和对应的 Config, 其中 example.com 是在 SNI 被加密用用于暴露在外部的 SNI, 可以随便填。Server Key 包含了 ECHConfig, 如果你不慎弄丢了客户端用的 Config 可以使用 ` xray tls ech -i "你的 server key" ` 重新获得。你可以把它发布到 DNS 的 HTTPS 记录中,格式参考[ 这里] ( https://dns.google/query?name=encryptedsni.com&rr_type=HTTPS ) 或者 RFC 9460
278
+
279
+ 注意服务端配置 ECH 后仍然接受正常的非 ECH 连接。
280
+
272
281
> ` echConfigList ` : string
273
282
274
283
仅客户端参数,配置 ECHConfig, 不为空则代表客户端启用 Encrypted Client Hello. 支持两种格式
275
284
276
285
第一种直接 固定 ECHConfig, 如 ` "AF7+DQBaAAAgACA51i3Ssu4wUMV4FNCc8iRX5J+YC4Bhigz9sacl2lCfSQAkAAEAAQABAAIAAQADAAIAAQACAAIAAgADAAMAAQADAAIAAwADAAtleGFtcGxlLmNvbQAA" `
277
286
278
- 第二种从 DNS 服务器查询,比方说使用 CDN 时可以通过 HTTPS 记录动态获取其配置的 ECHConfig, 且 Xray 会遵守服务器下发的 TTL,查询目标会是配置的 SNI, 或者配置的服务器域名(如果 SNI 为空且目标为一个域名)
287
+ 第二种从 DNS 服务器查询,比方说使用 CDN 时可以通过 HTTPS 记录动态获取其配置的 ECHConfig, 如果获取到有效 ECH Config, Xray 会遵守服务器下发的 TTL,查询目标会是配置的 SNI, 或者配置的服务器域名(如果 SNI 为空且目标为一个域名)
279
288
280
- 基础格式为 ` "udp://1.1.1.1" ` 表示从 UDP DNS 1.1.1.1 查询,也可以使用 ` "https://1.1.1.1/dns-query" ` 这样的格式,代表使用 DOH 进行查询(实际使用请替换成当地可用的服务器). 上述两种均支持修改端口号 ,如 ` udp://1.1.1.1:53 ` ,没写会按照协议默认 53/443.
289
+ 基础格式为 ` "udp://1.1.1.1" ` 表示从 UDP DNS 1.1.1.1 查询,也可以使用 ` "https://1.1.1.1/dns-query" ` (或者 ` h2c:// ` ) 这样的格式,代表使用 DOH(h2c) 进行查询(实际使用请替换成当地可用的服务器). 上述三种均支持修改端口号 ,如 ` udp://1.1.1.1:53 ` ,没写会按照协议默认 53/443.
281
290
282
291
特别地,可以使用指定的域名用于查询 ECHConfig, 格式为 ` "example.com+https://1.1.1.1/dns-query" ` 这样 Xray 会强制使用 example.com 的 DNS 记录中的 ECHConfig 用于连接,如果你想从 DNS 获取 ECHConfig 但又不想暴露自己在查询这个域名的 HTTPS 记录或者在这个域名下发布 HTTPS 记录时有一些用。
283
292
284
- > ` echServerKeys ` : string
293
+ > ` echForceQuery ` : string
285
294
286
- 仅服务端参数,用于服务端启用 Encrypted Client Hello.
295
+ 控制使用 DNS 查询 ECH Config 时的策略,可选 ` none ` (默认) ` half ` ` full `
287
296
288
- 使用 ` xray tls ech --serverName example.com ` 生成可用的 ECH Server Key 和对应的 Config, 其中 example.com 是在 SNI 被加密用用于暴露在外部的 SNI, 可以随便填。Server Key 包含了 ECHConfig, 如果你不慎弄丢了客户端用的 Config 可以使用 ` xray tls ech -i "你的 server key" ` 重新获得。你可以把它发布到 DNS 的 HTTPS 记录中,格式参考[ 这里] ( https://dns.google/query?name=encryptedsni.com&rr_type=HTTPS ) 或者 RFC 9460
297
+ ` none ` : 查询一次,如果没能获取有效 ECH Config 五分钟后才会继续查询。如果查询失败** 不会使用 ECH** .
298
+
299
+ ` half ` : 查询一次,失败后每次请求都会尝试查询。如果查询失败** 不会使用 ECH** 。如果查询成功得到响应但是不包含 ECH Config 也** 不会使用 ECH** ,并且五分钟内不会再次查询。
300
+
301
+ ` full ` : 查询一次,强制要求得到了有效 ECH Config 才会成功连接,否则连接会失败。确定要使用 ECH 推荐此选项,前两种模拟 fallback 行为确保可用性但是可能会导致明文 SNI 被发送。
302
+
303
+ 无论查询成功与否,只有第一次连接才会阻塞等待查询响应结果,后续更新不会阻塞连接。
304
+
305
+ > ` echSockopt ` : [ SockoptObject] ( #sockoptobject )
289
306
290
- 注意服务端配置 ECH 后仍然接受正常的非 ECH 连接,但是客户端配置 ECH 后如果未能正确执行 ECH 握手会直接失败,不会回退到明文 SNI.
307
+ 调整使用 DNS 查询 ECH 记录时使用的连接的底层 socket 选项。
291
308
292
309
### RealityObject
293
310
@@ -666,7 +683,7 @@ OCSP 装订更新间隔,单位为秒,默认值为 0. 任意非 0 值将启
666
683
透明代理需要 Root 或 ` CAP_NET_ADMIN ` 权限。
667
684
668
685
::: danger
669
- 当 [ Dokodemo-door] ( ./inbounds/dokodemo.md ) 中指定了 ` followRedirect ` 为` true ` ,且 Sockopt 设置中的` tproxy ` 为空时,Sockopt
686
+ 当 [ Dokodemo-door] ( ./inbounds/tunnel( dokodemo) .md ) 中指定了 ` followRedirect ` 为` true ` ,且 Sockopt 设置中的` tproxy ` 为空时,Sockopt
670
687
设置中的` tproxy ` 的值会被设为 ` "redirect" ` 。
671
688
:::
672
689
0 commit comments