Jrohy/multi-v2ray

今天突然全部无法连接,没排查出问题,不知道怎么回事,。端口是开放的

bbhxwl opened this issue · 25 comments

今天突然全部无法连接,没排查出问题,不知道怎么回事,。端口是开放的

2022/01/01 10:05:44 117.177.110.37:6288 rejected common/drain: common/drain: unable to drain connection > 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 . You will not be able to enable legacy header workaround in the future.

Jrohy commented

xray的话不知道是不是这个问题,我测试下:
image

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+)

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

请问这个是怎么操作?

Jrohy commented

实测alterId设置为0就行了, 设为0就代表开启VMessAEAD,而不是VMess md5

Jrohy commented

现在全新安装都是alterId默认就是0,如果是早期安装的alterId不为0就需要服务端和客户端都需要设置为0,或者环境变量设置: v2ray.vmess.aead.forced = false 来保持配置不变更(如果不是太过麻烦为了安全还是设置为0好点)

在安卓和windows客户端,改为0确实可以用了。
但在ios和mac,改为0还是用不了。
而且我这用alterId=32的设备比较多,
所以想尝试修改环境变量,但我不会修改变量,百度了也没有看懂修改方法,请大神指导一下

Jrohy commented

@tandalin 怎么设环境变量参考这个: v2ray/v2ray-core#455

Jrohy commented

修改这个文件: /etc/systemd/system/xray.service,
ExecStart那一行修改成: ExecStart=env xray.vmess.aead.forced=false /usr/bin/xray/xray -config /etc/xray/config.json
再运行:

systemctl daemon-reload
xray restart

如果是v2ray单词全部换成v2ray即可.

在安卓和windows客户端,改为0确实可以用了。 但在ios和mac,改为0还是用不了。 而且我这用alterId=32的设备比较多, 所以想尝试修改环境变量,但我不会修改变量,百度了也没有看懂修改方法,请大神指导一下

以下步骤对我来说ios可用了

1.执行 systemctl status v2ray 命令
2.若步骤1正常输出v2ray的信息 ,观察Drop-In:后面的路径 ,如: Drop-In: /etc/systemd/system/v2ray.service.d
3.进入上述路径 cd /etc/systemd/system/v2ray.service.d
4.执行 ls 命令看是否有一个 .conf后缀的文件,如 10-donot_touch_single_conf.conf
5.vim 修改这个文件: vim 10-donot_touch_single_conf.conf
6. 在[service]下添加一行信息: Environment="V2RAY_VMESS_AEAD_FORCED=false"
7. 文件修改保存后,再执行 systemctl daemon-reload
8. 执行 systemctl restart v2ray

修改这个文件: /etc/systemd/system/xray.service, ExecStart那一行修改成: ExecStart=env xray.vmess.aead.forced=false /usr/bin/xray/xray -config /etc/xray/config.json 再运行:

systemctl daemon-reload
xray restart

如果是v2ray单词全部换成v2ray即可.

修改完后重启出现以下提示 应该是我这边环境问题
[/etc/systemd/system/v2ray.service:18] Executable path is not absolute, ignoring: env v2ray.vmess.aead.forced=false /usr/bin/v2ray/v.../config.json
修改成
ExecStart=/usr/bin/env v2ray.vmess.aead.forced=false /usr/bin/v2ray/v2ray -config /etc/v2ray/config.json
就可以了,希望能帮到同样有这种问题的hxd

在安卓和windows客户端,改为0确实可以用了。 但在ios和mac,改为0还是用不了。 而且我这用alterId=32的设备比较多, 所以想尝试修改环境变量,但我不会修改变量,百度了也没有看懂修改方法,请大神指导一下

以下步骤对我来说ios可用了

1.执行 systemctl status v2ray 命令 2.若步骤1正常输出v2ray的信息 ,观察Drop-In:后面的路径 ,如: Drop-In: /etc/systemd/system/v2ray.service.d 3.进入上述路径 cd /etc/systemd/system/v2ray.service.d 4.执行 ls 命令看是否有一个 .conf后缀的文件,如 10-donot_touch_single_conf.conf 5.vim 修改这个文件: vim 10-donot_touch_single_conf.conf 6. 在[service]下添加一行信息: Environment="V2RAY_VMESS_AEAD_FORCED=false" 7. 文件修改保存后,再执行 systemctl daemon-reload 8. 执行 systemctl restart v2ray

在安卓和windows客户端,改为0确实可以用了。 但在ios和mac,改为0还是用不了。 而且我这用alterId=32的设备比较多, 所以想尝试修改环境变量,但我不会修改变量,百度了也没有看懂修改方法,请大神指导一下

以下步骤对我来说ios可用了

1.执行 systemctl status v2ray 命令 2.若步骤1正常输出v2ray的信息 ,观察Drop-In:后面的路径 ,如: Drop-In: /etc/systemd/system/v2ray.service.d 3.进入上述路径 cd /etc/systemd/system/v2ray.service.d 4.执行 ls 命令看是否有一个 .conf后缀的文件,如 10-donot_touch_single_conf.conf 5.vim 修改这个文件: vim 10-donot_touch_single_conf.conf 6. 在[service]下添加一行信息: Environment="V2RAY_VMESS_AEAD_FORCED=false" 7. 文件修改保存后,再执行 systemctl daemon-reload 8. 执行 systemctl restart v2ray

Good job!

ya0yy commented

服务端怎么知道2022年1月1日要禁用md5认证的,难道在程序里写死了2022年1月1日?

请问要怎么修改这个alterId,没找到修改的地方啊

Jrohy commented

@MichaelXucf 更改配置里面有修改alterid的

@Jrohy 哦,明白了,用的管理脚本不一样的关系,我的里面没有修改alterId这个选项,我最后卸载重装了。。。不过alterId变为0后还是不行。 我最后还是在启动脚本前面加了 上面提到的 /usr/bin/env v2ray.vmess.aead.forced=false 才解决

LanQ commented

看来当前服务端版本强制使用了VMessAEAD,对旧客户端不兼容

ubuntu可参考该链接进行修改 233boy/v2ray#812 (comment)

服务端怎么知道2022年1月1日要禁用md5认证的,难道在程序里写死了2022年1月1日? 而且我是1月7日上午突然出的问题, 排查了一天才发现是这个原因!!!

按照这个解决了。

ubuntu 18.04

  1. systemctl status v2ray, 查看service 路径
  2. 修改这个文件 /etc/systemd/system/v2ray.service
    在[service]下添加一行信息: Environment="V2RAY_VMESS_AEAD_FORCED=false"
  3. 文件修改保存后,再执行 systemctl daemon-reload
  4. 执行 systemctl restart v2ray

ubuntu 18.04

  1. systemctl status v2ray, 查看service 路径
  2. 修改这个文件 /etc/systemd/system/v2ray.service
    在[service]下添加一行信息: Environment="V2RAY_VMESS_AEAD_FORCED=false"
  3. 文件修改保存后,再执行 systemctl daemon-reload
  4. 执行 systemctl restart v2ray

我的CentOS跟这个一样。

ubuntu 18.04

  1. systemctl status v2ray, 查看service 路径
  2. 修改这个文件 /etc/systemd/system/v2ray.service
    在[service]下添加一行信息: Environment="V2RAY_VMESS_AEAD_FORCED=false"
  3. 文件修改保存后,再执行 systemctl daemon-reload
  4. 执行 systemctl restart v2ray

我的CentOS跟这个一样。

我的debian跟这个一样

V2RayN/NG也需要升级到最新版就可以了。

我的/lib/systemd/system/v2ray.service有 Environment=“V2RAY_VMESS_AEAD_FORCED=false”但是还是会报错