Releases: XTLS/Xray-core
Xray-core v24.12.18
XHTTP client: Refactor "packet-up" mode, chasing "stream-up" #4150
这是 2024 年最后一个版本,包含了大量重要更新:比如再次优化了 XHTTP packet-up 模式的上行,修好了 bug 的同时速率直追 stream-up,还会自动切换连接以避免超过单个连接 HTTP 累计请求数限制,主要利好 H3 及穿透无流式上行的 CDN。 更多的更新内容请看第三版 XHTTP: Beyond REALITY,还讨论了套 CDN 是否属于“滥用”的问题。
为了配合 XHTTP 对 TLS 的广泛使用,Xray-core 已将 "chrome" 设为默认指纹,防止手动输入配置时忘了选指纹。
请支持一个 REALITY NFT:https://opensea.io/assets/ethereum/0x5ee362866001613093361eb8569d59c4141b76d1/2
如果你有余力,请支持一个 Project X NFT:https://opensea.io/assets/ethereum/0x5ee362866001613093361eb8569d59c4141b76d1/1
一个新的 Xray 客户端正在开发中,持有 REALITY NFT 将获得早期内测资格。圣诞节会发布一篇 XUDP UoT Migration 的文章,并公布 Project X 2024 年度贡献者,颁奖一个 Project X NFT。2025.1.1 每个 Project X NFT 将获赠两个 REALITY NFT。
What's Changed
- Transport: Remove HTTP by @RPRX in ae62a0f
- WireGuard inbound: Add missing inbound session information back by @Fangliding in #4126
- XHTTP server: Forbid Mux.Cool except pure XUDP by @RPRX in #4128
- XHTTP, WS, HU: Forbid "host" in
headers
, readserverName
instead by @RPRX in #4142 - Core: Fix memory leaks with RequireFeatures() by @yuhan6665 in #4095
- Chore: "io/ioutil" -> "io" by @ChengenH in #4143
- XHTTP client: Refactor "packet-up" mode, chasing "stream-up" by @RPRX in #4150
- Core: Fix startup error when
dns
exists butfakedns
doesn't by @RPRX in 743435d - XHTTP client: Add decideHTTPVersion() and more logs by @RPRX in 7463561
- XHTTP XMUX: Add
hMaxRequestTimes
andhKeepAlivePeriod
by @RPRX in #4163 - WebSocket config: Fix
headers
by @rosebe in #4177 - REALITY, TLS config: Set "chrome" as the default
fingerprint
by @RPRX in 96fb680 - XHTTP
downloadSettings
: Inheritsockopt
if its own doesn't exist (e.g., inextra
) by @RPRX in 9dbdf92 - XHTTP client:
scMaxEachPostBytes
should be bigger than buf.Size (8192) by @RPRX in ff8b66a
以及更新 README,升级一些依赖,使用 Go 1.23.4 进行编译。
New Contributors
Full Changelog: v24.11.30...v24.12.18
Xray-core v24.12.15
Xray-core v24.11.30
XHTTP: Add "stream-one" mode for client & server #4071
又到了一月一次的大版本更新,让我们补上 XHTTP 近期最后一大块拼图:XHTTP 新增 stream-one 模式,详见 #4071
接棒一个月,给你们一个完全体 XHTTP。客户端 REALITY 已默认使用 stream-one,请及时升级服务端。
新文章已发布:XHTTP: Beyond REALITY
预告已久的 REALITY NFT 现已开售,请多多支持:
- 总数一千个,首发一百个的售价为 0.01 ETH,此后的售价会涨,抢到首发就是纯捡漏
一篇介绍 REALITY 的文章将于接下来几天发布变成了介绍 XHTTP- 持有 REALITY NFT 可获得一个新的 Xray 客户端的早期内测资格,以及下一个 NFT 的空投,就像
- 2025.1.1 时持有 Project X NFT 将获赠两个 REALITY NFT
在大家的支持下,Project X NFT 已翻五六倍,对于 Project X NFT 首发时观望的朋友,这是一次弥补遗憾的好机会:
https://opensea.io/assets/ethereum/0x5ee362866001613093361eb8569d59c4141b76d1/2
What's Changed
- Chore: Refactor tests in app/router by @zonescape in #4019
- Test: Remove temporary directory afterwards by @zonescape in #4045
- Chore: Improved log messaging by @red-avtovo in #4050
- XHTTP: Add "stream-one" mode for client & server by @RPRX in #4071
- XHTTP config: Add
keepAlivePeriod
for client by @Fangliding @RPRX in #4075 - WebSocket config: Add
heartbeatPeriod
for client & server by @hr567 @RPRX in #4065
以及升级一些依赖。
New Contributors
- @red-avtovo made their first contribution in #4050
- @hr567 made their first contribution in #4065
Full Changelog: v24.11.21...v24.11.30
Xray-core v24.11.21
XHTTP client: Add gRPC header to "stream-up" mode by default #4042
这个版本为 stream-up 模式的上行 POST 请求默认加上了 gRPC 标头,经测试 CF H2 支持它,详见 #4042
所以,顺便把客户端 auto 的行为改为了 TLS H2 或 REALITY 时默认 stream-up,请尽快适配
这个版本还修好了 packet-up 模式的上行遗留问题,上行测速再也不会断了
蓦然回首,XHTTP 已经成为了很多场景下,尤其是穿透 CDN 时的最佳选择,Make Xray Great Again!
这次有没有又开启了一个崭新的时代不重要,支持一下 Project X NFT 非常重要:Announcement of NFTs by Project X #3633
What's Changed
- Test: Change address for DNS over QUIC tests by @zonescape in #4002
- REALITY client: Log invalid connections at warning level by @RPRX in 1a238cb
- Update Dockerfile to Use Multiple Config Files by @lxsq in #4010
- Chore: Use a more direct and less error-prone return value by @pinglanlu in #4008
- Chore: Drop dead code in test by @zonescape in #4012
- WireGuard kernelTun: Fix multi-outbounds not work by @Fangliding in #4015
- Chore: Refactor infra/conf.TestToCidrList() by @zonescape in #4017
- XHTTP client: Fix upload issue in "packet-up" mode inherited from SplitHTTP by @RPRX in 2d7b0e8
- XHTTP test: Fix Test_maxUpload by @RPRX in 1f570d9
- Config: Correctly marshal
Address
to JSON by @yiguous in #4021 - WireGuard inbound: Fix leaking session information between requests by @Fangliding in #4030
- Test: Delete temporary file afterwards by @zonescape in #4028
- HTTP transport: Use dest as Host if not set by @Fangliding in #4038
- XHTTP client: Add gRPC header to "stream-up" mode by default by @RPRX in #4042
以及升级一些依赖。
New Contributors
- @lxsq made their first contribution in #4010
- @pinglanlu made their first contribution in #4008
- @yiguous made their first contribution in #4021
Full Changelog: v24.11.11...v24.11.21
Xray-core v24.11.11
XHTTP: Add "stream-up" mode for client & server #3994
正如 v24.10.31 所预告的,这个版本带来了对”合并 HTTP 传输层“的完美替代品:流式上行 stream-up 模式,详见 #3994
XHTTP stream-up 模式旨在取代现有的 H2 / gRPC over REALITY,XHTTP 有 header padding、XMUX,表现会更好
注意:客户端 REALITY XHTTP 已改为默认使用 stream-up 模式,所以服务端需要及时升级
总之,现在正式建议现有的 H2、gRPC 均迁移至 XHTTP,并玩一玩上下行分离,尤其是 H2,它仍有可能被移除
XHTTP 众多参数的分享也有了解决方案,详见 #4000(GUI 可以正式将 SplitHTTP 更名为 XHTTP)
别忘了支持一下 Project X NFT:Announcement of NFTs by Project X #3633
What's Changed
- Chore: Fix some spelling errors by @zonescape in #3976
- XHTTP client: Allow different paths in U-D-S by @RPRX in #3977
- Chore: Fix some comments by @zonescape in #3979
- XHTTP: Add "stream-up" mode for client & server by @RPRX in #3994
- Chore: Run gofmt by @zonescape in #3990
- XHTTP config: Add "extra" for sharing extra fields by @RPRX in #4000
- Chore: Fix versions in some *.pb.go files by @RPRX in 4807484
- Sniff: Prevent crash on QUIC sniffer panic by @Fangliding @RPRX in #3978
- TLS: Add CurvePreferences (to enable kyber768) by @Fangliding @RPRX in #3991
以及升级一些依赖,使用 Go 1.23.3 进行编译。
New Contributors
- @zonescape made their first contribution in #3976
Full Changelog: v24.11.5...v24.11.11
Xray-core v24.11.5
XHTTP client: Enable XMUX for download in U-D-S #3965
虽然 v24.10.31 刚发布不久,但这几天积累的 changes 已经值得发一个新版,主要是懒得 review,请大家测试
XHTTP 上下行分离时的 XMUX 特性说明:#3965
别忘了支持一下 Project X NFT:Announcement of NFTs by Project X #3633
What's Changed
- Wireguard inbound: Do not use kernel TUN by @Fangliding @RPRX in #3960
- API: Add new Get Inbound User by @yuhan6665 in #3644
- XHTTP client: Enable XMUX for download in U-D-S by @RPRX in #3965
- API: Add user online stats by @hossinasaadi @mmmray in #3637
- XHTTP client: Move
dest2
intoMemoryStreamConfig
as well by @RPRX in 9fbb6fb - Test: Fix incorrect output format by @tcpdumppy in #3968
- UDS: Prevent crash when proxying UDP by @Fangliding in #3967
New Contributors
- @tcpdumppy made their first contribution in #3968
Full Changelog: v24.10.31...v24.11.5
Xray-core v24.10.31
XHTTP: The real upload / download splitting #3955 🎃
v1.8.16 第一版 SplitHTTP 发布时,有提到 拆分连接 也有助于反审查,但当时的 SplitHTTP 只是逻辑拆分而没有实际拆分。
现在,#3955 正式将 SplitHTTP 升级为 XHTTP,实现了真正的上下行分离,给 GFW 针对单个连接的分析带来了麻烦。
XHTTP 也已正式支持 REALITY,所以,发挥你的想象力,上下行随意组合,万圣节 have fun!
别急,分离下行的 XMUX #3965、XHTTP 的分享、对 HTTP 传输层的合并等一系列更新也会在接下来的版本中到来。
毫无疑问,XHTTP 又开启了一个崭新的时代。
此外,XMUX 有了非无限复用的默认值,这可以提升默认配置下 XHTTP 的使用体验。REALITY 服务端的 dest
已更名为 target
,XHTTP 的示例均已采用新名,包括 RAW。WireGuard 出站的 kernelMode
已改为 noKernelTun
。
别忘了支持一下 Project X NFT:Announcement of NFTs by Project X #3633
What's Changed
- REALITY config: Add
target
as an alias ofdest
by @RPRX in 75729ce - Chore: Lint common/errors/feature_errors.go by @RPRX in c30f5d4
- Routing: Fix regexp syntax support in UserMatcher by @vnxme in #3900
- Browser Dialer: Revert changes to event listeners by @mmmray in #3906
- HTTP transport: Fix an issue when HTTP client start fail with 403 by @yuhan6665 @RPRX in #3910
- WireGuard kernelTun: Check Capabilities instead of checking UID by @chise0713 @RPRX in #3871
- Refactor: Use struct
Int32Range
widely by @Fangliding in #3867 - Routing: Add mutex for
Attributes
temporarily by @Fangliding in #3908 - XMUX: Change to non-infinity-reuse default values by @RPRX in #3919
- Chore: Generate *.pb.go files with protoc v5.28.2 by @RPRX in 47fad1f
- WireGuard config: Replace
kernelMode
withnoKernelTun
by @RPRX in 9bdf72d - Transport: Remove GUN (an alias of gRPC) by @RPRX in 8809cbd
- Config: Prefer newer alias (REALITY
target
, RAW) by @RPRX in e4939dc - WireGuard createTun: Add more logs by @RPRX in ceb6eac
- Fix: Apply mutex when visiting
Attributes
as well by @Fangliding in #3921 - REALITY: Unblock SplitHTTP transport by @mmmray in #3816
- XHTTP: The real upload / download splitting by @RPRX in #3955
以及更新 README,升级一些依赖,使用 Go 1.23.2 进行编译。
Full Changelog: v24.9.30...v24.10.31
Xray-core v24.10.16
Xray-core v24.9.30
XMUX (multiplex controller) for SplitHTTP
这是 Xray-core 改变版本号规则后的首个 stable 版本,正如 v1.8.24 所预告的,该版本的重要更新主要有:
- SplitHTTP 传输层的 XMUX:https://xtls.github.io/config/transports/splithttp.html
- HTTP 传输层的 H3:https://xtls.github.io/config/transports/http.html
- TCP 传输层更名为 RAW:https://xtls.github.io/config/transports/raw.html
- Freedom 出站的 UDP noises:https://xtls.github.io/config/outbounds/freedom.html
以及 SplitHTTP 仅兼容 v1.8.24(移除了 ok
),移除 QUIC、DomainSocket 传输层,移除对远古配置的兼容代码。
若想引入 Xray-core 作为 lib,参考 2dust/AndroidLibXrayLite#58
下个版本我们会为 XMUX 预设非无限的默认值,把 SplitHTTP 和 HTTP 合并为 XHTTP 传输层(相当于 SplitHTTP 支持了 REALITY,HTTP 也有了默认的 header padding 和 XMUX),XHTTP 允许通过 path 配置参数以方便 GUI 客户端与分享。
What's Changed
- SplitHTTP: Remove
ok
compatibility logic by @mmmray in #3753 - Transport: Remove QUIC by @mmmray in #3754
- Transport: Remove DomainSocket by @mmmray in #3757
- Config: Remove global
transport
by @mmmray @Fangliding in #3751 - Config: Remove legacy
inbound/outbound/detours
by @mmmray in #3769 - Config: Remove some legacy fields from V2Ray 3.x era by @KobeArthurScofield in #3776
- Fix: Return error when Fingerprint does not support TLS 1.3 by @Fangliding in #3774
- Fix: RPC call causes xray panic problem using wrong account type by @bestwishCT in #3744
- Config: Remove legacy config fields again by @KobeArthurScofield in #3782
- Log: Add MaskAddress option to hide IP addresses by @Fangliding in #3783
- Remove remnants of global
transport
by @KobeArthurScofield in #3792 - DNS: do not use cache when returned DNS result has errors by @Fangliding in #3784
- Log: Improve feature deprecation/removal logs by @KobeArthurScofield in #3793
- Routing: Add regexp syntax support to UserMatcher by @vnxme in #3799
- Allow to inject custom validator in VLESS controller by @torikki-tou in #3453
- Sniff: Routing “attrs” support non http inbound by @Fangliding in #3808
- Log: show the matching rule tag by @Fangliding in #3809
- QUIC sniffer: handle multiple initial packets by @Fangliding @Vigilans in #3802
- Fix int overflow on x32 processors causing panic using burstObservatory by @tekig in #3810
- DNS outbound: Add blockTypes by @Fangliding in #3812
- Errors: Add PrintRemovedFeatureError & PrintDeprecatedFeatureWarning by @KobeArthurScofield in #3804
- SplitHTTP: Read and validate HTTP/1.1 responses by @4nd3r5on in #3797
- SplitHTTP client: Add xmux (multiplex controller) for H3 & H2 by @ll11l1lIllIl1lll @mmmray in #3613
- UDP noises: Add base64 and multi-packet support by @dragonbreath2000 @Fangliding @mmmray in #3794
- SplitHTTP client: Fix xmux config deserialization by @mmmray in #3827
- Config: Remove more legacy fields by @KobeArthurScofield in #3817
- Browser Dialer: Change from ES5 to ES6+ for performance by @PoneyClairDeLune in #3832
- Xmux: Value of 0 is treated the same as no value by @mmmray in #3835
- SplitHTTP server: Add global CORS headers for browser dialer by @PoneyClairDeLune in #3830
- Remove legacy code by @KobeArthurScofield in #3838
- Transport: Add HTTP3 to HTTP by @yuhan6665 in #3819
- Transport: Add RAW as an alias of TCP by @RPRX in #3852
- SplitHTTP Config: Add capability to parse int in string format by @Fangliding in #3855
以及更新 README,升级一些依赖,使用 Go 1.23.1 进行编译。
New Contributors
- @bestwishCT made their first contribution in #3744
- @vnxme made their first contribution in #3799
- @torikki-tou made their first contribution in #3453
- @tekig made their first contribution in #3810
- @4nd3r5on made their first contribution in #3797
Full Changelog: v1.8.24...v24.9.30
Xray-core v24.9.19
懒得列详细 changes,总之小白鼠们测试下这个版本有没有问题吧,你们是好人
SplitHTTP xmux:https://xtls.github.io/config/transports/splithttp.html @ll11l1lIllIl1lll @mmmray
UDP noises:https://xtls.github.io/config/outbounds/freedom.html @dragonbreath2000 @Fangliding @mmmray