Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

websocket: close 1000 (normal) > proxy/vmess/encoding: invalid user: VMessAEAD is enforced and a non VMessAEAD connection is received. You can still disable this security feature with environment variable v2ray.vmess.aead.forced = false #812

Closed
songge8 opened this issue Jan 5, 2022 · 25 comments

Comments

@songge8
Copy link

songge8 commented Jan 5, 2022

VMess MD5 认证信息 淘汰机制

VMessAEAD 协议已经经过同行评议并已经整合了相应的修改。 VMess MD5 认证信息 的淘汰机制已经启动。

自 2022 年 1 月 1 日起,服务器端将默认禁用对于 MD5 认证信息 的兼容。任何使用 MD5 认证信息的客户端将无法连接到禁用 VMess MD5 认证信息的服务器端。

在服务器端可以通过设置环境变量 v2ray.vmess.aead.forced = true 以关闭对于 MD5 认证信息的兼容。 或者 v2ray.vmess.aead.forced = false 以强制开启对于 MD5 认证信息 认证机制的兼容 (不受到 2022 年自动禁用机制的影响) 。 (v4.35.0+)


应对方法是将服务端和客户端的AlterID改为0,但是脚本好像不支持直接修改,只能通过手工修改配置文件来实现。

更新:新版本已经处理了这个问题,升级最新版本即可

@MichaelXucf
Copy link

MichaelXucf commented Jan 6, 2022

将服务端和客户端的AlterID改为0也还是不行(没找到修改alterId的地方,我直接卸载重装了😭),然后重装后alterId已经变为0了,但是还是报同样的错。

最后还是修改v2ray.service文件,添加v2ray.vmess.aead.forced = false解决。
1、修改v2ray.service 文件
vim /etc/systemd/system/v2ray.service

ExecStart=/usr/bin/v2ray/v2ray -config /etc/v2ray/config.json

改成

ExecStart=/usr/bin/env v2ray.vmess.aead.forced=false /usr/bin/v2ray/v2ray -config /etc/v2ray/config.json

2、重启服务
systemctl daemon-reload
systemctl restart v2ray

3、核对日志

v2ray log

日志不再报错ok

@233boy
Copy link
Owner

233boy commented Jan 6, 2022

将服务端和客户端的AlterID改为0也还是不行(没找到修改alterId的地方,我直接卸载重装了😭),然后重装后alterId已经变味为0了,但是还是报同样的错。

最后还是修改v2ray.service文件,添加v2ray.vmess.aead.forced = false解决。 1、修改v2ray.service 文件 vim /etc/systemd/system/v2ray.service

ExecStart=/usr/bin/v2ray/v2ray -config /etc/v2ray/config.json

改成

ExecStart=/usr/bin/env v2ray.vmess.aead.forced=false /usr/bin/v2ray/v2ray -config /etc/v2ray/config.json

2、重启服务 systemctl daemon-reload systemctl restart v2ray

3、核对日志

v2ray log

日志不再报错ok

@MichaelXucf 重装也无法解决吗?全新安装的话,脚本已经添加了那个变量了 😭

@MichaelXucf
Copy link

MichaelXucf commented Jan 7, 2022

@233boy 是的,我的不行,也可能是我的客户端的版本比较低,安卓的客户端是v2rayNG v1.2.16(Core V4.26.0), mac的客户端是v2rayX 1.5.1 (Core的版本也是自带的,估计也比较低)

@233boy
Copy link
Owner

233boy commented Jan 8, 2022

@233boy 是的,我的不行,也可能是我的客户端的版本比较低,安卓的客户端是v2rayNG v1.2.16(Core V4.26.0), mac的客户端是v2rayX 1.5.1 (Core的版本也是自带的,估计也比较低)

在 v4.28.1 版本后,客户端 AlterID 设置为 0 代表启用 VMessAEAD ;服务端为自动适配,可同时兼容启用和未开启 VMessAEAD 的客户端。
对于 VMess MD5 认证信息的兼容可以被关闭。(v4.35.0+)

@MichaelXucf 如果客户端内核版本太低确实不兼容

@TestEngineerFish
Copy link

AlterID 设置为 0,解决了我的问题,👍

@songge8
Copy link
Author

songge8 commented Jan 10, 2022

最新版本应该是解决了这个问题,大家可以升级试试

@ding-kai
Copy link

将服务端和客户端的AlterID改为0也还是不行(没找到修改alterId的地方,我直接卸载重装了😭),然后重装后alterId已经变为0了,但是还是报同样的错。

最后还是修改v2ray.service文件,添加v2ray.vmess.aead.forced = false解决。 1、修改v2ray.service 文件 vim /etc/systemd/system/v2ray.service

ExecStart=/usr/bin/v2ray/v2ray -config /etc/v2ray/config.json

改成

ExecStart=/usr/bin/env v2ray.vmess.aead.forced=false /usr/bin/v2ray/v2ray -config /etc/v2ray/config.json

2、重启服务 systemctl daemon-reload systemctl restart v2ray

3、核对日志

v2ray log

日志不再报错ok

我的是 /lib/systemd/system/v2ray.service, 加了/usr/bin/env v2ray.vmess.aead.forced=false没用,新加了一行Environment="V2RAY_VMESS_AEAD_FORCED=false"就好了

@shufanhao
Copy link

将服务端和客户端的AlterID改为0也还是不行(没找到修改alterId的地方,我直接卸载重装了😭),然后重装后alterId已经变为0了,但是还是报同样的错。
最后还是修改v2ray.service文件,添加v2ray.vmess.aead.forced = false解决。 1、修改v2ray.service 文件 vim /etc/systemd/system/v2ray.service

ExecStart=/usr/bin/v2ray/v2ray -config /etc/v2ray/config.json

改成

ExecStart=/usr/bin/env v2ray.vmess.aead.forced=false /usr/bin/v2ray/v2ray -config /etc/v2ray/config.json

2、重启服务 systemctl daemon-reload systemctl restart v2ray
3、核对日志

v2ray log

日志不再报错ok

我的是 /lib/systemd/system/v2ray.service, 加了/usr/bin/env v2ray.vmess.aead.forced=false没用,新加了一行Environment="V2RAY_VMESS_AEAD_FORCED=false"就好了

感谢,我挣扎了这个问题2个星期了,终于解决了。我也是 加了/usr/bin/env v2ray.vmess.aead.forced=false没用,新加了一行Environment="V2RAY_VMESS_AEAD_FORCED=false"就好了

@Yuban32
Copy link

Yuban32 commented Jan 20, 2022

将服务端和客户端的AlterID改为0也还是不行(没找到修改alterId的地方,我直接卸载重装了😭),然后重装后alterId已经变味为0了,但是还是报同样的错。
最后还是修改v2ray.service文件,添加v2ray.vmess.aead.forced = false解决。 1、修改v2ray.service 文件 vim /etc/systemd/system/v2ray.service

ExecStart=/usr/bin/v2ray/v2ray -config /etc/v2ray/config.json

改成

ExecStart=/usr/bin/env v2ray.vmess.aead.forced=false /usr/bin/v2ray/v2ray -config /etc/v2ray/config.json

2、重启服务 systemctl daemon-reload systemctl restart v2ray
3、核对日志

v2ray log

日志不再报错ok

@MichaelXucf 重装也无法解决吗?全新安装的话,脚本已经添加了那个变量了 😭

baidu bing查到的那些什么同步时间都是虚的 只有老哥你这个管用! 谢谢你 中国超人! XD

@songge8
Copy link
Author

songge8 commented Jan 21, 2022

将服务端和客户端的AlterID改为0也还是不行(没找到修改alterId的地方,我直接卸载重装了😭),然后重装后alterId已经变味为0了,但是还是报同样的错。
最后还是修改v2ray.service文件,添加v2ray.vmess.aead.forced = false解决。 1、修改v2ray.service 文件 vim /etc/systemd/system/v2ray.service

ExecStart=/usr/bin/v2ray/v2ray -config /etc/v2ray/config.json

改成

ExecStart=/usr/bin/env v2ray.vmess.aead.forced=false /usr/bin/v2ray/v2ray -config /etc/v2ray/config.json

2、重启服务 systemctl daemon-reload systemctl restart v2ray
3、核对日志

v2ray log

日志不再报错ok

@MichaelXucf 重装也无法解决吗?全新安装的话,脚本已经添加了那个变量了 😭

baidu bing查到的那些什么同步时间都是虚的 只有老哥你这个管用! 谢谢你 中国超人! XD

我测试升级到最新版本就可以解决,重装应该也没问题

@yangsa666
Copy link

将服务端和客户端的AlterID改为0也还是不行(没找到修改alterId的地方,我直接卸载重装了😭),然后重装后alterId已经变为0了,但是还是报同样的错。
最后还是修改v2ray.service文件,添加v2ray.vmess.aead.forced = false解决。 1、修改v2ray.service 文件 vim /etc/systemd/system/v2ray.service

ExecStart=/usr/bin/v2ray/v2ray -config /etc/v2ray/config.json

改成

ExecStart=/usr/bin/env v2ray.vmess.aead.forced=false /usr/bin/v2ray/v2ray -config /etc/v2ray/config.json

2、重启服务 systemctl daemon-reload systemctl restart v2ray
3、核对日志

v2ray log

日志不再报错ok

我的是 /lib/systemd/system/v2ray.service, 加了/usr/bin/env v2ray.vmess.aead.forced=false没用,新加了一行Environment="V2RAY_VMESS_AEAD_FORCED=false"就好了

感谢,我挣扎了这个问题2个星期了,终于解决了。我也是 加了/usr/bin/env v2ray.vmess.aead.forced=false没用,新加了一行Environment="V2RAY_VMESS_AEAD_FORCED=false"就好了

感谢,我也是添加了这行就好了!

@jccode
Copy link

jccode commented Feb 10, 2022

+1

@xiaorong61
Copy link

我在 v2ray.service 里面发现已经有 Environment="V2RAY_VMESS_AEAD_FORCED=false",但还是连不上,然后改了端口,就连上了。

@aaronlam
Copy link

+1 需要新加一行才行

@xinxud0ng
Copy link

我在 v2ray.service 里面发现已经有 Environment="V2RAY_VMESS_AEAD_FORCED=false",但还是连不上,然后改了端口,就连上了。

端口你的大概改多少的,谢谢了!我重新安装最新的Linux 乌班图,但还是不行,我觉得应该不是配置的 问题,是端口的问题。

@xiaorong61
Copy link

我在 v2ray.service 里面发现已经有 Environment="V2RAY_VMESS_AEAD_FORCED=false",但还是连不上,然后改了端口,就连上了。

端口你的大概改多少的,谢谢了!我重新安装最新的Linux 乌班图,但还是不行,我觉得应该不是配置的 问题,是端口的问题。

服务器上随便改了个。

@puppylpg
Copy link

VMess MD5 认证信息 玷污机制

为了进一步对抗可能的探测和封锁,自 v4.24 版本起,每个 VMess 认证数据的服务器端结构都会包含一个一次写入的玷污状态标记,初始状态为无瑕状态,当服务器检测到重放探测时或者因为其他原因入站连接出错以致校验数据不正确时,该连接所对应的请求认证数据会被玷污。

被玷污的认证数据无法被用于建立连接,当攻击者或客户端使用被玷污的认证数据建立连接时,服务器会输出包含 "invalid user" "ErrTainted" 的错误信息,并阻止该连接。

当服务器没有受到重放攻击时,该机制对正常连接的客户端没有影响。如果服务器正在被重放攻击,可能会出现连接不稳定的情况。

拥有服务器 UUID 以及其他连接数据的恶意程序可能根据此机制对服务器发起拒绝服务攻击,受到此类攻击的服务可以通过修改 proxy/vmess/validator.go 文件中 func (v *TimedUserValidator) BurnTaintFuse(userHash []byte) error 函数的 atomic.CompareAndSwapUint32(pair.taintedFuse, 0, 1) 语句为 atomic.CompareAndSwapUint32(pair.taintedFuse, 0, 0) 来解除服务器对此类攻击的安全保护机制。使用 VMessAEAD 认证机制的客户端不受到 VMess MD5 认证信息 玷污机制 的影响。

用的docker,果断降级,使用4.24之前的版本 :D,就没有这个问题了:

docker run -d --name v2ray -v /etc/v2ray:/etc/v2ray -p 127.0.0.1:10087:10087 v2fly/v2fly-core:v4.23.4 v2ray -config=/etc/v2ray/docker.config.json

@flysee100
Copy link

我在 v2ray.service 里面发现已经有 Environment="V2RAY_VMESS_AEAD_FORCED=false",但还是连不上,然后改了端口,就连上了。

端口你的大概改多少的,谢谢了!我重新安装最新的Linux 乌班图,但还是不行,我觉得应该不是配置的 问题,是端口的问题。

服务器上随便改了个。

我客户端上有该打印错误,看了一下日志,客户端一直连接不上服务器,换成了mkcp协议就好了,其他什么也没操作。

@xinxud0ng
Copy link

我在v2ray.service里面已经有Environment="V2RAY_ESS_AEAD_FORCEDfalse",但是还是连不上,然后改了,就连上了。

你大概改了多少的问题,谢谢了!我重新安装的Linux乌班图,但还是不行,我觉得不是配置的,是端口的问题。

服务上顺便改了个。

我一直在记录该打印操作错误,看看,客户端连接不上服务器,换成mkcp协议就好了,其他什么都没有。

这个方法可以,非常感谢,可以连上了,连上后用的很爽,哈哈!

@liam-pat
Copy link

liam-pat commented Jun 1, 2022

docker-compose , add the env
environment:
- "XRAY_VMESS_AEAD_FORCED=false"
- "xray.vmess.aead.forced =false"

@zhengyhn
Copy link

zhengyhn commented Jun 4, 2022

亲测有效

$ cat v2ray.sh
V2RAY_VMESS_AEAD_FORCED=false /usr/local/bin/v2ray -config /usr/local/etc/v2ray/config.json &

@leecervan904
Copy link

@ding-kai 万分感谢!

@HIMSHUAIBAOHONG
Copy link

有没有人知道win10怎么办?怎么修改环境变量?

@EasonTong
Copy link

仍旧不行
image

@jiangshanwe
Copy link

我试过alertId、启动命令参数,都不行。
我升级了客户端(v2ray-N)之后,问题得到解决。

@233boy 233boy closed this as completed May 13, 2023
rr923 referenced this issue in rr923/docker-nginx-v2ray Jun 19, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests