Xray-core v1.4.0
Topic: WebSocket 0-RTT & gRPC Transport,均可用于 CDN
WebSocket 0-RTT
快速上手
- 客户端、服务端均升至 Xray-core v1.4.0+,注意不需要改服务端的任何配置
- 只需在客户端的 path 后加上
?ed=2048
即可减少 1-RTT,2048 代表 early data 的长度上限,目前建议写 2048
比如 path 本来是 /example
,则只需改为 /example?ed=2048
- Xray-core WebSocket 0-RTT 整体设计理念
长度上限
- 取决于整个反代链路均可接受的 header 长度,比如 Nginx 默认 4K,而 Fallbacks 不是反代故没有限制
- Base64 编码会使数据膨胀 4/3,比如 2048 长度编码后约长 2731,这还不包括 header 中其它部分
所以订阅下发者应确保该值有效,若无特殊需求,2048 即可 - 其实你现在就可以下发带 ?ed=2048
的订阅
gRPC Transport
我们在此版本中引入了对 gRPC Transport 的试验性支持,它的积极意义在于:
- 能够以 alpn h2, http/1.1 通过 CDN
- 自带的 mux 可以降低延迟、减少特征
Xray-core 专门对它进行了性能优化,并且支持 multi 模式,详见 gRPC 文档
十分感谢 @DuckSoft @JimhHan @xiaokangwang
Features
Fake DNS
- Add Fake DNS support, and more contribution @yuhan6665
- Use 198.18.0.0/16 as default Fake IP Pool, and more contribution @JimhHan
DNS and Dialer
- Dialer 支持先用内置 DNS 服务器解析出 IP:配置
sockopt
的domainStrategy
@JimhHan - 支持带传输层链式代理:配置
sockopt
的dialerProxy
@JimhHan - 增加 DNS 查询日志 @JimhHan
- 修复 DoH 遗留问题 @JimhHan
TCP Fast Open
- Linux Server 支持指定 TCP Fast Open 队列长度 @risetechlab
"tcpFastOpen": true
的默认队列长度由 1 改为 256
VMess
- Add VMess
zero
encryption (but still slower than VLESS and Trojan) @AkinoKaede - You can set
XRAY_VMESS_AEAD_FORCED = true
at server side @AkinoKaede
Fixes
UDP
- Skip Port 53, 443 before using single XUDP for VLESS & VMess,这项改变带来了更强的兼容性
- Freedom Outbound will use buf.PacketReader when UDPOverride is available(UDP 重定向)
Fallbacks related
- Stop at '?' when reading HTTP PATH before shunting,这是配合 WebSocket 0-RTT 的重要更改
- Do not cause error when
json:"fallback"
isnull
@RManLuo
Others
- Fix panic: Header called after Handler finished @JimhHan, Thank @liang-chang
- Fix panic: runtime error: slice bounds out of range [15:14], Thank @rurirei
Chores
- Adjust release.yml @AkinoKaede @JimhHan
- linux-rppc64le -> linux-ppc64le
- Use Go 1.16.2
- Upgrade dependencies
Notices
- 毫无悬念:下个版本会有 uTLS
- 欢迎讨论:想象一下用浏览器中转 WSS、H2、QUIC?现在我们正式发布这一想法 v2ray/discussion#754 (comment)