去年十月之后,原本用v2ray搭建的梯子就由于某种原因不好使了,我以为是ip暂时被封了,就等了一段时间再把原本的服务器快照恢复到新节点上,但是依然无法连上。找了找v2ray项目的搭建博客,发现我快照里用的版本已经很旧了,而博客的版本也已是两年之前的(开发者不会被请喝茶了吧),而且唯一的Linux GUI客户端qv2ray也停止维护了。
在蹭室友的梯子苟且度日和bing搜索之间挣扎了几个月,我终于受不了了,我们要有自己的梯子!于是找到了xray
听名字就感觉跟v2ray师出同门,事实上翻看日志我们发现xray就是基于v2ray修改而来的,文档发布的时间恰巧是我们看到v2ray博客最后的更新日期之后不久。
啊还是废话少说,回归本文的主题吧:我们是要记录一下按照文档搭建xray过程中碰到的问题(是指按照xray的白话文指南流程操作)。
顺带一提,这指南确实非常详细,几乎是手把手、一条条命令的介绍了一个基础配置的xray如何部署。但问题在于有些地方详细到有些多余了,比如指南正文有8章内容,实际只需关注5~8章即可,其他部分只能算是 good to know but not necessary。
我们只需要三步:1.部署一个替身网站并申请证书;2.部署xray服务器;3.本地部署客户端。由于我并没有完全与文中的所有操作保持一致,因此还是会碰到一些问题需要自行解决,这就是写下本文的初衷。
-
使用acme.sh申请证书失败
后来发现这是因为nginx没能正确部署起来,虽然进程启动了但是访问会得到403错误,估摸着应该是LetsEncrypt需要访问网站某个路径下的证书文件,但是因为403操作失败了(于是成为了下一个要解决的问题) - nginx部署后访问网站显示403 Forbidden
原因:文件权限的问题,我是root用户部署nginx,文件是在/root
路径下。但其实nginx在/etc/nginx/nginx.conf
配置文件里的启动用户写的是user nginx
,因此无法访问/root
的文件。
解决方法:简单粗暴把nginx启动用户改为root,即将配置文件中user一行修改为user root;
systemdctl start xray
失败
原因:与这里一致,同样是权限问题,xray的启动用户默认设定为nobody,访问/root
路径下的证书文件出现权限不足。这一点可以在xray的日志中查看(systemctl status xray
输出日志,但因为日志过长,按两下$\rightarrow$键才看得到,一般人谁能想到要这样啊)
解决方法:也是将启动用户改为root,即将文件/etc/systemd/system/xray.service
中的User=nobody
配置改为User=root
- Qv2ray客户端无法使用,且 Linux 下xray客户端无法连接;
原因:暂时不明,qv2ray中日志报错为无效证书,暂时推断为证书安装失败?(但访问网站是浏览器显示是https)安卓和Windows的GUI客户端可以设置allowInsecure=false
跳过证书验证;另外安装了xray作为客户端后也依然无法连接。
解决方法:首先通过试错法确定了Ubuntu上的客户端参数设置与安卓和Windows中其他参数设置都相同,只有一项差别:安卓上设置的是allowInsecure=true
,若为false
则安卓端也无法连接。遂抛弃qv2ray GUI,使用xray作为客户端(因为我在用Ubuntu,按照服务器端的安装方法即可),其中配置文件中同样设置为allowInsecure=true
。
目前为止一切都很顺利,已经1000%了~
The End