Releases: v2fly/v2ray-core
v5.0.2 Developer Preview
This is a pre-release version of V2Ray intended for developer preview. Users are not advised to use this version right now. Contributors are encouraged to send pull requests to the V5 version of the codebase.
This release note is being edited to reflect all significant changes made to the codebase, please contact us if you think something is missing.
Most new features are currently undocumented. The documents will be updated over time.
New Features
- Jsonv5 New configuration format. This enables support for automatic component recognition.
- ZH Document is work in progress.
- EN Document is work in progress.
- Thanks @AkinoKaede, @kslr, @mzz2017.
- UDP PacketAddr UDP endpoint independent mapping(aka Full Cone) support.
- Burst Observatory Measure connection quality to a significant amount of outbound at the same time. Thanks @qjebbs.
- Multi Observatory Run more than one Observatory at the same time.
- Router Load balancing strategy LeastLoad. Thanks @qjebbs.
- Jsonv4 Additional representation format for Jsonv4 configure file format. This includes YAML, TOML. Thanks @qjebbs.
- Jsonv4 General purpose merger for all configure formats. Thanks @qjebbs.
- CLI Reworked command line Interface. Thanks @qjebbs.
- Developer Assistance Protobuf configure format reverse engineering.
v5.0.1 Developer Preview
This is a pre-release version of V2Ray intended for developer preview. Users are not advised to use this version right now. Contributors are encouraged to send pull requests to the V5 version of the codebase.
This release note is being edited to reflect all significant changes made to the codebase, please contact us if you think something is missing.
Most new features are currently undocumented. The documents will be updated over time.
New Features
- Jsonv5 New configuration format. This enables support for automatic component recognition.
- ZH Document is work in progress.
- EN Document is work in progress.
- Thanks @AkinoKaede, @kslr, @mzz2017.
- Burst Observatory Measure connection quality to a significant amount of outbound at the same time. Thanks @qjebbs.
- Multi Observatory Run more than one Observatory at the same time.
- Router Load balancing strategy LeastLoad. Thanks @qjebbs.
- Jsonv4 Additional representation format for Jsonv4 configure file format. This includes YAML, TOML. Thanks @qjebbs.
- Jsonv4 General purpose merger for all configure formats. Thanks @qjebbs.
- CLI Reworked command line Interface. Thanks @qjebbs.
- Developer Assistance Protobuf configure format reverse engineering.
v4.44.0
This release includes security enhancement for all users.
!!! Important SECURITY enhancement !!!
- Fix DoS attack vulnerability in CommandSwitchAccountFactory (CVE-2021-4070). (Thanks @geeknik)
Fix
- Apply timeout to DNS outbound. (#1330 Thanks @nekohasekai)
Security Advisory
This update fixes a DoS vulnerability in V2Ray. This vulnerability allows a VMess Server controlled by an attacker to crash a VMess Client by sending a specially crafted handshake response reply with an (optional) VMess SwitchAccount Command that is one byte shorter than expected. This vulnerability does NOT allow the attacker to retrieve any information from a client other than it used an unpatched version of the software and does NOT allow attacker to control the unpatched software or system. It is strongly recommended for all users to apply this security update at the earliest possible opportunity. We would like to thank @geeknik for the responsible disclosure of this vulnerability.
此更新修复了在 V2Ray 中的一个拒绝服务攻击漏洞。这个漏洞允许攻击者控制的 VMess 服务器迫使 VMess 客户端崩溃。这个漏洞可以通过在 VMess 握手阶段向客户端发送一个恶意的回复数据包被触发,触发漏洞数据包的内容是比正确内容少一个字节的 VMess 切换账户指令。 攻击者 无法 通过这个漏洞获取来自客户端任何信息(除客户端尚未应用此安全更新以外),也 不会 允许攻击者控制客户端软件或系统。强烈推荐所有用户在第一时间应用本安全更新。我们在此感谢 @geeknik 将此漏洞负责任的披露给我们。
Important Message
V2Ray(V2Fly) will pre-release its next major version: V2Ray V5. In addition to functionality improvements, it will include a new configuration format and infrastructure changes that streamline the development of new protocols and functionalities.
The V4 version of the V2Ray will then enter maintenance mode. No additional features will be added by core developers, while contributors may still send pull requests for new features. It will receive bug fixes and security updates from core developers for a limited period until the full release of the V5 version. Contributors are encouraged to fork and base their changes from V5 version branch, instead of V4 version to reduce merge conflict. If you have already started the development of a change based on V4 version, you may send your pull request to V4 branch for a limited period. The core developers will cherry-pick that change into V5 version on your behave.
The pre-release version of V2Ray V5 may still contain bugs or inconsistencies. Some breaking updates to it are expected. You will need to change your configuration or codebase alongside us if you switch to V2Ray V5 now.
When V2Ray V5 pre-releases the master branch will switch to V5 version of the codebase, and the new V5 binary will be pre-released in the Github Release. They are not suitable for an automatic update from the V4 version.
Notice
Due to increase in size of the geoip.dat
file recently, devices with insufficient ROM/RAM are experiencing difficulties in using V2Ray. The solution is as follows:
- For RAM insufficient devices: Enable the Geodata loader optimized for memory-constrained devices by setting the environment variable
V2RAY_CONF_GEOLOADER
to valuememconservative
. For more details, see documentation. - For ROM insufficient devices:
- Use the newly added GeoIP file
geoip-only-cn-private.dat
in the zip package or download it from release page, which only contains GeoIP listgeoip:cn
andgeoip:private
, or - Customize your own GeoIP file via project v2fly/geoip.
- Use the newly added GeoIP file
v4.43.0
Features
- Shadowsocks Send Shadowsocks handshake with payload data if available (#1292 Thanks @nekohasekai)
- TFO Custom TCP Fast Open queue length support (#1293 Thanks @AkinoKaede)
Fixes
- Trojan fallback cannot get ALPN (#1286 Thanks @AkinoKaede)
- QueryStrategy ignored (#1285 Thanks @nekohasekai)
- UDP connection transport connection terminated unnecessarily (#1305 Thanks @Ovear)
Chores
- refactor: move from io/ioutil to io and os package (#1298 Thanks @Juneezee)
- Fix some tests to use udp.PickPort() (#1302 Thanks @yuhan6665 )
- Fix flaky TestVMessDynamicPort (#723) (#1289 Thanks @yuhan6665)
!!! Important Message !!!
V2Ray(V2Fly) will pre-release its next major version: V2Ray V5. In addition to functionality improvements, it will include a new configuration format and infrastructure changes that streamline the development of new protocols and functionalities.
The V4 version of the V2Ray will then enter maintenance mode. No additional features will be added by core developers, while contributors may still send pull requests for new features. It will receive bug fixes and security updates from core developers for a limited period until the full release of the V5 version. Contributors are encouraged to fork and base their changes from V5 version branch, instead of V4 version to reduce merge conflict. If you have already started the development of a change based on V4 version, you may send your pull request to V4 branch for a limited period. The core developers will cherry-pick that change into V5 version on your behave.
The pre-release version of V2Ray V5 may still contain bugs or inconsistencies. Some breaking updates to it are expected. You will need to change your configuration or codebase alongside us if you switch to V2Ray V5 now.
When V2Ray V5 pre-releases the master branch will switch to V5 version of the codebase, and the new V5 binary will be pre-released in the Github Release. They are not suitable for an automatic update from the V4 version.
Notice
Due to increase in size of the geoip.dat
file recently, devices with insufficient ROM/RAM are experiencing difficulties in using V2Ray. The solution is as follows:
- For RAM insufficient devices: Enable the Geodata loader optimized for memory-constrained devices by setting the environment variable
V2RAY_CONF_GEOLOADER
to valuememconservative
. For more details, see documentation. - For ROM insufficient devices:
- Use the newly added GeoIP file
geoip-only-cn-private.dat
in the zip package or download it from release page, which only contains GeoIP listgeoip:cn
andgeoip:private
, or - Customize your own GeoIP file via project v2fly/geoip.
- Use the newly added GeoIP file
v4.42.2
Features
- Support Windows ARM64:
v2ray-windows-arm64-v8a.zip
(#1215 Thanks @database64128) - TLS: support client certificate authentication
- Document has been updated
- #1169 Thanks @qq906907952
- GeoIP asset: add trimmed GeoIP file
geoip-only-cn-private.dat
to zip package for ROM/RAM insufficient devices- File
geoip-only-cn-private.dat
only contains GeoIP listgeoip:cn
andgeoip:private
- To customize your own GeoIP file, use project v2fly/geoip
- #1233 Thanks @Loyalsoldier
- File
- Socks: support 4/4a version of the socks protocol (#1269 Thanks @nekohasekai)
- Document has been updated
- DNS: add option
disableFallbackIfMatch
for DNS (#1270 Thanks @nekohasekai)
Fixes
- DoQ(DNS over QUIC) local mode supports IP destination (#1226 Thanks @AkinoKaede)
- Observatory will now probe outbounds in a deterministic order (#1230 Thanks @digglife)
- DNS response will respect request type(like AAAA, A) (#1235 Thanks @AkinoKaede)
- Fix typo in DNS log output (#1183 Thanks @rurirei)
- Fix typo in observatory log output (#1211 Thanks @ihotte)
- Fix version string not updated to match release version
- Fix IP length not deterministic (#1267 Thanks @Loyalsoldier)
- Fix HTTP outbound not respect socket config (#1264 Thanks @Vigilans)
- Fix sockopt.mark type (#1264 Thanks @Vigilans)
- Fix typo in browser forwarder error message
Chores
- Use Go v1.17.1
- Update dependencies
- Fix CodeQL triggered multiple times (Thanks @kslr)
Notice
Due to increase in size of the geoip.dat
file recently, devices with insufficient ROM/RAM are experiencing difficulties in using V2Ray. The solution is as follows:
- For RAM insufficient devices: Enable the Geodata loader optimized for memory-constrained devices by setting the environment variable
V2RAY_CONF_GEOLOADER
to valuememconservative
. For more details, see documentation. - For ROM insufficient devices:
- Use the newly added GeoIP file
geoip-only-cn-private.dat
in the zip package or download it from release page, which only contains GeoIP listgeoip:cn
andgeoip:private
, or - Customize your own GeoIP file via project v2fly/geoip.
- Use the newly added GeoIP file
v4.42.1
Features
- Support Windows ARM64:
v2ray-windows-arm64-v8a.zip
(#1215 Thanks @database64128) - TLS: support client certificate authentication
- Document has been updated
- #1169 Thanks @qq906907952
- GeoIP asset: add trimmed GeoIP file
geoip-only-cn-private.dat
to zip package for ROM/RAM insufficient devices- File
geoip-only-cn-private.dat
only contains GeoIP listgeoip:cn
andgeoip:private
- To customize your own GeoIP file, use project v2fly/geoip
- #1233 Thanks @Loyalsoldier
- File
Fixes
- DoQ(DNS over QUIC) local mode supports IP destination (#1226 Thanks @AkinoKaede)
- Observatory will now probe outbounds in a deterministic order (#1230 Thanks @digglife)
- DNS response will respect request type(like AAAA, A) (#1235 Thanks @AkinoKaede)
- Fix typo in DNS log output (#1183 Thanks @rurirei)
- Fix typo in observatory log output (#1211 Thanks @ihotte)
- Fix version string not updated to match release version
Chores
- Use Go v1.17 (#1215 Thanks @database64128)
- Update dependencies
Notice
Due to increase in size of the geoip.dat
file recently, devices with insufficient ROM/RAM are experiencing difficulties in using V2Ray. The solution is as follows:
- For RAM insufficient devices: Enable the Geodata loader optimized for memory-constrained devices by setting the environment variable
V2RAY_CONF_GEOLOADER
to valuememconservative
. For more details, see documentation. - For ROM insufficient devices:
- Use the newly added GeoIP file
geoip-only-cn-private.dat
in the zip package or download it from release page, which only contains GeoIP listgeoip:cn
andgeoip:private
, or - Customize your own GeoIP file via project v2fly/geoip.
- Use the newly added GeoIP file
v4.42.0
Features
- Support Windows ARM64:
v2ray-windows-arm64-v8a.zip
(#1215 Thanks @database64128) - TLS: support client certificate authentication
- Document has been updated
- #1169 Thanks @qq906907952
- GeoIP asset: add trimmed GeoIP file
geoip-only-cn-private.dat
to zip package for ROM/RAM insufficient devices- File
geoip-only-cn-private.dat
only contains GeoIP listgeoip:cn
andgeoip:private
- To customize your own GeoIP file, use project v2fly/geoip
- #1233 Thanks @Loyalsoldier
- File
Fixes
- DoQ(DNS over QUIC) local mode supports IP destination (#1226 Thanks @AkinoKaede)
- Observatory will now probe outbounds in a deterministic order (#1230 Thanks @digglife)
- DNS response will respect request type(like AAAA, A) (#1235 Thanks @AkinoKaede)
- Fix typo in DNS log output (#1183 Thanks @rurirei)
- Fix typo in observatory log output (#1211 Thanks @ihotte)
Chores
- Use Go v1.17 (#1215 Thanks @database64128)
- Update dependencies
Notice
Due to increase in size of the geoip.dat
file recently, devices with insufficient ROM/RAM are experiencing difficulties in using V2Ray. The solution is as follows:
- For RAM insufficient devices: Enable the Geodata loader optimized for memory-constrained devices by setting the environment variable
V2RAY_CONF_GEOLOADER
to valuememconservative
. For more details, see documentation. - For ROM insufficient devices:
- Use the newly added GeoIP file
geoip-only-cn-private.dat
in the zip package or download it from release page, which only contains GeoIP listgeoip:cn
andgeoip:private
, or - Customize your own GeoIP file via project v2fly/geoip.
- Use the newly added GeoIP file
v4.41.1
Features
- VMess: Added 2 VMess experiments
AuthenticatedLength
: Make the length of each payload segment no longer malleable. This experiment requires the server and client use the same version of v2ray-core. More breaking updates on this experiment is expected.NoTerminationSignal
: Do not send connection single duplex termination signal for TCP connection when transferred over VMess. This will break some application.- #940 Thanks @RPRX
- Hardening Draining connection at client side when receiving invalid data.
- Observatory Support custom probe interval and probe URL. Thanks @nekohasekai .
Fixes
- Fixed connection stability issue when in
h2
,grpc
transport. #1059 #1058 #1056 Thanks @IRN-Kawakaze @architecturers @lijinglin3 - Further fixed connection stability issue when in
h2
,grpc
transport.
Notices
- VMess: From Jan 1, 2022, compatibility for legacy VMess MD5 will be disabled by default. Visit here for more information.
- You are able to compile exactly the same binaries as the ones in Assets section below by simply following the compiling guide.
For downstream developers
The Go module name of v2ray-core
has been changed to github.com/v2fly/v2ray-core/v4
. Do NOT use v2ray.com/core
anymore.
v4.41.0
Features
- VMess: Added 2 VMess experiments
AuthenticatedLength
: Make the length of each payload segment no longer malleable. This experiment requires the server and client use the same version of v2ray-core. More breaking updates on this experiment is expected.NoTerminationSignal
: Do not send connection single duplex termination signal for TCP connection when transferred over VMess. This will break some application.- #940 Thanks @RPRX
- Hardening Draining connection at client side when receiving invalid data.
Fixes
- Fixed connection stability issue when in
h2
,grpc
transport. #1059 #1058 #1056 Thanks @IRN-Kawakaze @architecturers @lijinglin3
Notices
- VMess: From Jan 1, 2022, compatibility for legacy VMess MD5 will be disabled by default. Visit here for more information.
- You are able to compile exactly the same binaries as the ones in Assets section below by simply following the compiling guide.
For downstream developers
The Go module name of v2ray-core
has been changed to github.com/v2fly/v2ray-core/v4
. Do NOT use v2ray.com/core
anymore.
v4.40.1
Features
- DNS: support DNS over TCP.
- docs: DNS
- #983 Thanks @AkinoKaede
- Currently DNS over TCP is yet to be optimized for performance, and is recommended for compatibility purpose only.
Fixes
Chores
- Use Go v1.16.5
- Update dependencies
Notices
- VMess: From Jan 1, 2022, compatibility for legacy VMess MD5 will be disabled by default. Visit here for more information.
- You are able to compile exactly the same binaries as the ones in Assets section below by simply following the compiling guide.
For downstream developers
The Go module name of v2ray-core
has been changed to github.com/v2fly/v2ray-core/v4
. Do NOT use v2ray.com/core
anymore.