由于ss已经越来越容易被屏蔽 故现在搭建v2ray服务,且采用ws+nginx+cloudflare方式
v2ray
v2ray也不一定需要用websocket,可以简单的就用vmess
配置很简单 客户端如下
1 | { |
服务器端配置
1 | { |
id可以用uuidgenerator这个网页来生成
然后客户端和服务端启动对应服务即可
v2ray伪装
v2ray伪装需要nginx以及域名支持,参考之前文章服务器部署二-相关服务和服务器部署三–杂项
配置好nginx和域名之后 首先修改nginx配置 加上端口转发
1 | ssl_session_cache shared:SSL:50m; |
v2ray服务器端配置
1 | { |
若仍想保留原来的vmess,将原来的inbounds里面内容加到里面即可
客户端配置
1 | { |
需要注意的是 域名需要与证书的域名一致 否则可能会报错导致不通
遇到的问题
遇到不通的情况,排查关键是服务器端的配置需要打开日志,通过查看日志来看问题所在
1 | 1. x509: cannot validate certificate for xx.xx.xx.xx because it doesn't contain any IP SANs |
字面上意思证书无效,可参考链接
需要注意上面说到的问题 就是nginx证书域名和v2ray配置的域名一致 www.xxx.com和xxx.com是不一样的
1 | 2. websocket: bad handshake |
参考链接 最后面去掉/不再出现这个问题
1 | 3. rejected v2ray.com/core/proxy/vmess/encoding: invalid user |
客户端和服务器端的id或者alterId不匹配,以及可能客户端与服务器的时间不匹配。
我中间将alterId设置为0出现了这个问题,后面设置为其他数字后不再出现
修改服务器端时间为北京时间
1 | # ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime |
cloudflare
v2ray成功使用ws后,若服务器ip没有被屏蔽 可以不用上cdn
使用可以参考链接。
关键就是填写域名记录时填写自己服务器ip,以及开启中转。
需要等待一段时间才会生效 生效后手动查询域名 查到的ip需要是对应cdn的ip 而非自己服务器ip
1 | $ nslookup www.xxx.com |
遗留问题
ip被屏蔽后 导致ssh等无法连上了 cloudflare拯救了v2ray服务
但是ssh等服务是否能用域名以及cdn是否能正常转发问题还需进一步解决