wulabing v2ray一键脚本在重装后无法启动的解决办法
今天我们的教程我们为大家介绍这么一个教程,有一个大神wulabing他写了一个可以一键配置vmess和vless协议的ws+tls的一键脚本,这个脚本帮助了很多想要通过ws+tls+nginx方式进行科学的小白用户。但是最近我们在实验的过程中发现了这个脚本所存在的一个问题,那就是一旦更换所要使用的域名再次进行配置时,在脚本运行重装v2ray之后这个脚本无论如何都无法启动和运行v2ray了,造成v2ray无法使用。今天的教程就为大家介绍一下问题的原因以及所要解决的办法。
首先我们说一下原因是什么,原因就是最近新开发的5.1.0版本的v2ray core(服务端)有问题,所出现的问题就是无法启动运行。而这个脚本默认只能下载最新版的v2ray core(服务端),由于只能下载最新版那么他默认只能下载5.1.0版本的,那结果自然就是无法启动运行了。
那么我们应该怎么解决呢?降级。退回到之前的稳定版本中去,也就是我们需要手动下载之前最稳定的那个版本,这里我们以4.45.2版本为例,这个版本就是上一个默认下载的版本,所以退回之前的版本那自然就可以稳定的启动运行了。
当然了,光是启动运行那还远远不够,由于我们自己更新的v2ray可能跟脚本的一些默认配置会不一样,因此我们需要进行一番设置上的调整,才能重新的运行起来。
接下来我们就来介绍一下遇到这种情况应该怎么去解决:
注意:前提是你是用的wulabing开发的v2ray脚本,其他开发者的脚本情况可能会不一样
如果我们运行了脚本中的14也就是卸载v2ray或者是运行了1也就是更换域名重装之后一旦脚本给下载了默认的新版本(5.1.0),那么接下来的步骤就是这个问题的解决办法。
脚本的运行过程我这里就省略掉了,毕竟傻瓜式的操作。前面的配置过程全部按照之前的要求去做,都做好了之后我们开始接下来的修复过程。
首先我们输入命令 systemctl status v2ray 看一下当前的状态,如果出现了红色的failed就是没有启动起来。这个时候如果还是去输入 systemctl start v2ray 或者 systemctl restart v2ray 再次输入 systemctl status v2ray 看到的依然是failed,原因我刚才说了这个版本有错误,根本就无法启动运行。
再就是可以输入 systemctl –failed 来查询未启动的服务,当里面的 v2ray.service 后面跟着红色的 failed 时就说明没有启动运行
这个时候我们输入 v2ray version 命令查看一下版本,确认显示的就是5.1.0那这就是这个新版本程序出的问题
有博主们已经提醒过大家这个版本的v2ray有问题了,想了解的请看下面的内容:
https://www.chhui.cn/post-961.html
确认了是这个新版本出的问题,那么我们接下来的解决办法就是自己更换一个老版本的v2ray core来运行
退回到老版本的办法就是我们自己重新下载老版本的v2ray安装即可,我们可以通过之前大神写的v2ray老版本下载脚本通过curl下载安装的方式实现
接下来我们输入以下的命令:
bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh) --version v4.45.2
v后面的就是所需下载的版本号
然后我们在运行完毕之后再输入 v2ray version 当里面的版本变成4.45.2之后,那么我们新的v2ray就装完了
接下来我们输入 systemctl enable v2ray 设置为开机自动运行
输入 systemctl is-enabled v2ray.service 查看是否启动开机自动运行,当输出内容为enabled为启动开机运行
输入 systemctl start v2ray 启动,再输入 systemctl status v2ray 查看状态,当出现绿色的active(running)为启动运行成功
这一步只是让v2ray启动运行了,但是并不能让v2ray上网。此时如果你执意去打开你的v2ray连接程序连接,连接程序的命令行里会得到一个无情的502 bad gateway网关错误的提示,最终无法上网。所以接下来的步骤才是最关键的,要进行一番设置才行。
我前面讲过,由于这不是脚本自动下载的v2ray,而是我们自己下的,那么一些配置和设置肯定是不一样的,那么我们就要改成他的默认设置才行。
/etc/v2ray/config.json这个config.json文件请不要动
config.json这个v2ray配置文件里面的内容在新安装时程序当然肯定是不会去动的,wulabing的脚本设置该文件的位置位于/etc/v2ray/config.json
但我们后面自己下载的v2ray的他指定的配置文件读取位置是不一样的,默认读取的文件位置位于/usr/local/etc/v2ray/config.json,这里面的文件是个默认的配置文件,根本就不是我们已经写好的v2ray配置文件,所以我们接下来要做的就是改掉配置文件的读取位置
输入 systemctl status v2ray 应该都能看到,里面-config后面跟的就是 /usr/local/etc/v2ray/config.json,所以我们要修改他的加载位置
同样的 v2ray.service 和 v2ray@.service 这个文件里的内容也跟我们之前配置的内容完全不一样了,所以我们要重新写好他们的内容再启动运行方可实现
第一个我们要先找到 /etc/systemd/system/v2ray.service 和 /etc/systemd/system/v2ray@.service 这两个service的程序运行文件
首先,我们要将 v2ray.service 和 v2ray@.service 文件里面的内容全部改掉,全部更换为以下的内容。可以下载文件后用编辑器修改保存后重新上传回这个位置,也可以用 vi 进行SSH编辑,命令就是在上面两个目录前面加上 vi 即可打开编辑(Insert键开始编辑、Esc键停止编辑、:wq!保存退出)
请按照下图内容进行编辑:
v2ray.service
[Unit]
Description=V2Ray Service
After=network.target nss-lookup.target
[Service]
User=root
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
NoNewPrivileges=true
Environment=V2RAY_LOCATION_ASSET=/usr/local/lib/v2ray/
ExecStart=/usr/local/bin/v2ray -config /etc/v2ray/config.json
Restart=on-failure
[Install]
WantedBy=multi-user.target
v2ray@.service
[Unit]
Description=V2Ray Service
After=network.target nss-lookup.target
[Service]
User=root
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
NoNewPrivileges=true
Environment=V2RAY_LOCATION_ASSET=/usr/local/lib/v2ray/
ExecStart=/usr/local/bin/v2ray -config /etc/v2ray/%i.json
Restart=on-failure
[Install]
WantedBy=multi-user.target
大家注意红色部分,这里就是配置文件的路径,之前默认的v2ray.service文件里这个地方写的正是/usr/local/etc/v2ray/config.json,这就是一个不存在的json文件位置。因为脚本里json配置文件的位置是放在/etc/v2ray/config.json,所以我们要把配置文件加载位置改成这个目录里面。其实细心的可能都已经看到了,默认文件内容与上面修改后的文件内容其实是不一样的,比如User一个是nobody,而正确的配置是root,所以v2ray.service我们一定要使用上面的内容配置。
保存好了之后,接下来我们重新加载服务进程 systemctl daemon-reload
再输入 systemctl start v2ray (systemctl restart v2ray)启动服务
这个时候我们再次输入 systemctl status v2ray 我们看到-config的后面还是/usr/local/etc/v2ray/config.json,难道我们写错内容了?不是,虽然现在进程可以加载到这个配置文件了,但是依然没到我们指定的位置去加载。这就是说还是按原来的位置加载的,那么这应该怎么解决呢?
注意一下提示里面的/etc/systemd/system/v2ray.service.d目录下面有个10-donot_touch_single_conf.conf的这么一个conf配置文件
就是这个conf配置文件管理json配置文件的加载位置,所以上面的service只是其中一步,这一步才是最关键的
/etc/systemd/system/v2ray.service.d/10-donot_touch_single_conf.conf 就是这个文件,我们要修改一下这里面的路径
还是上面的方法,下载后用编辑器修改保存后上传回到该位置或者使用vi进行编辑(在这个目录前面加上vi即可编辑)
按照以下的内容进行修改:
[Service]
ExecStart=
ExecStart=/usr/local/bin/v2ray -config /etc/v2ray/config.json
还是将 -config 后面的/usr/local/etc/v2ray/config.json改成/etc/v2ray/config.json,保存之后接下来再执行一次 systemctl daemon-reload
再次输入 systemctl start v2ray (systemctl restart v2ray)启动服务
再次输入 systemctl status v2ray 我们看到此时里面的json配置文件加载目录已变更为wulabing脚本的默认json文件位置
在确认仍为active(running)没有提示报错之后,到这里我们的所有设置就全部完成了。现在我们打开连接软件看一下能不能连了,能正常上网了这就是大功告成了,问题终于解决了。如果你遇到了这方面的问题可以通过此方法解决问题,当然我们还是希望能解决一下这个错误,所有的补救措施都不如解决脚本本身的问题来的实在。
大佬6666666666,最近遇到类似问题,升级了core导致服务起不来,搞了几天,反复看了下5版本和4版本的服务器配置区别,改来改去都没用,没办法我也是通过降级的思路,我是直接改WULABING大佬的最新版本下载地址,他的v2ray.sh中,DOWNLOAD_LINK=”https://github.com/v2fly/v2ray-core/releases/download/$RELEASE_VERSION/v2ray-linux-$MACHINE.zip”,把其中的$RELEASE_VERSION强制改成v4.45.0,其他不用动,运行一下v2ray.sh就可以了。当然就像您说的,降级的办法治标不治本,新版本修了非常多问题,还是得用用新版,降到旧版只是过度一下
通过修改脚本内容强制其下载指定的版本这个方法更好,这对于那些了解脚本编写规则的朋友来说当然可以直接在脚本里面指定所需v2ray版本,但是对于那些不懂脚本编写规则的朋友来说我上文所说的这些其实就是最笨的解决办法。无论哪个办法只要解决了问题就行,也非常感谢您提供了一个更简单的解决办法。但是这些都是临时的解决办法,最终的目的当然我们还是希望wulabing大佬能直接一劳永逸的解决一下这个问题,毕竟这个一键安装脚本帮助过很多人,我们并不希望就因为这么个bug而让脚本失效。