前言
2021年的三月份,Xray-core发布了V1.4.0的版本,作者提出了WebSocket 0-RTT & gRPC Transport。
对于 WebSocket 0-RTT,就是在原有 Websocket 协议上更进一步的优化以及提升,我们在服务端配置不变的情况下,客户端仅做小小修改,就可体验新特性带来的速度提升。也就是在客户端的 Websocket 路径后面增加一串字符串而已。
其实更多人关注的是 gRPC 协议。从那天起,gRPC 作为 Xray 的一种新型传输协议和大伙儿见了面,目前已经过去3个多月了,gRPC 经过各位大佬们的不断测试,目前也是逐渐完善了。
什么是 Xray 的 gRPC
gRPC 就是谷歌版的 RPC,服务端与客户端高效通讯的框架。
基于HTTP/2的标准设计,也就是说,你可以认为 gRPC 是 HTTP/2 的进阶版,h2 的所有特性,它都有。
另外,使用 gRPC 协议,客户端可以充分利用高级流和链接功能,那说成人话就是,有助于节省带宽、降低 TCP 的链接次数,从而减少 CPU 的占用、以及电池的损耗。
看到这些优点,不难发现,gRPC 在移动的设备上使用,肯定是最佳的。
以上内容引用自 “ 无主界(idleleo) ” 博客文章
视频教程
准备工作
1、VPS 一台,重置好主流的操作系统。本视频使用 Debian 系统进行演示。
2、域名一个,做好相应的解析(注册有 whois 隐私的域名)
(若是需要套用 CDN,请 自行托管域名到 CDN,并在 Cloudflare 里面的 “网络” 里面开启 gRPC 选项)
gRPC 不支持指定 Host。请在出站代理地址中填写 正确的域名 ,或在 (x)tlsSettings 中填写 ServerName,否则无法连接。
gRPC 不支持回落到其他服务。
gRPC 服务存在被主动探测的风险。建议使用 Caddy 或 Nginx 等反向代理工具,通过 Path 前置分流
3、Nginx 的版本,必须大于 1.13.10+
,这个视频中有提到!
搭建 Xray 的 gRPC
系统更新并安装相关组件
CentOS 命令
yum update -y yum install epel-release -y yum install -y curl tar socat wget yum install -y nginx systemctl start nginx
CentOS 执行上面的更新命令以后,最好是手动重启一下自己的 VPS,一定确保自己的 VPS 成功重启。
重要:请自行关闭防火墙
firewall-cmd --state # 查看防火墙状态 systemctl stop firewalld.service # 停止防火墙 systemctl disable firewalld.service # 禁止防火墙开机自启
Debian 命令
添加 最新 Nginx 源( SSH 工具打开 VPS 如下文件:/etc/apt/sources.list
,在后面添加如下源,根据自己的系统选择相应的源 )
#Debian 7.0: deb http://nginx.org/packages/debian/ wheezy nginx deb-src http://nginx.org/packages/debian/ wheezy nginx #Debian 8.0: deb http://nginx.org/packages/debian/ jessie nginx deb-src http://nginx.org/packages/debian/ jessie nginx #Debian 9.0: deb http://nginx.org/packages/debian/ stretch nginx deb-src http://nginx.org/packages/debian/ stretch nginx
然后执行下面的命令:
wget http://nginx.org/keys/nginx_signing.key && apt-key add nginx_signing.key
apt update -y
apt install -y nginx
apt install -y curl tar socat wget
systemctl start nginx
验证 Nginx 是否安装成功
1、在 VPS 输入 nginx -V
,查看 Nginx 的版本,确定版本大于 1.13.10+
。不然不支持 gRPC。
2、在浏览器输入你的 VPS IP,得到如下界面,证明 Nginx 安装成功!(以下是的 Nginx 的截图,或许和你的不一样,只要能看到 Nginx 的欢迎界面就好。)
安装官方 Xray 服务
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install -u root
申请SSL证书
因为Acme脚本更新 Please update your account with an email address first.
,目前需要申请一个账号才可以申请,所以原先的命令做了下面的更新,更改下面的域名以及邮箱为你自己的。具体更多的最新 ACME 脚本申请证书请 点击这里
curl https://get.acme.sh | sh systemctl stop nginx ~/.acme.sh/acme.sh --register-account -m [email protected] ~/.acme.sh/acme.sh --issue -d test.bozai1.xyz --standalone ~/.acme.sh/acme.sh --installcert -d test.bozai1.xyz --key-file /root/private.key --fullchain-file /root/cert.crt
Nginx 配置文件
此配置文件的 location
字段,可以用来配置宝塔面板。具体不会请在 群内 咨询。
若是 CentOS,请直接替换
/etc/nginx/nginx.conf
配置文件中的server
字段。注意{ }
符号若是 Debian,请直接在
/etc/nginx/sites-enabled/default
(若是找不到该文件,就是/etc/nginx/conf.d/default.conf
)中,删除原有配置文件,并粘贴下面配置文件。
server { listen 80; listen 443 ssl http2; server_name test.bozai1.xyz; # 主机头,请更改为你绑定的域名 index index.html; # 默认页面 root /usr/share/nginx/html; # 网页根目录路径 ssl_certificate /root/cert.crt; # 证书路径 ssl_certificate_key /root/private.key; # 密钥路径 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; # 在 location 后填写 /{你的 ServiceName} location /test.bozai1.xyz { if ($content_type !~ "application/grpc") { return 404; } client_max_body_size 0; client_body_timeout 1071906480m; grpc_read_timeout 1071906480m; grpc_pass grpc://127.0.0.1:2002; } }
配置完毕以后,请开启或是重启 Nginx 服务 systemctl restart nginx
,若是不出现报错,证明 Nginx 配置文件无误。
Xray 配置文件
在 VPS 目录找到如下文件:/usr/local/etc/xray/config.json
,贴入以下代码
{ "log": { "loglevel": "warning" }, "inbounds": [ { "port": 2002, "listen": "127.0.0.1", "protocol": "vless", "settings": { "clients": [ { "id": "5a5a3a75-d739-46d3-9773-c5139410a4a5" // 填写你的 UUID } ], "decryption": "none" }, "streamSettings": { "network": "grpc", "grpcSettings": { "serviceName": "test.bozai1.xyz" // 填写你的 ServiceName } } } ], "outbounds": [ { "tag": "direct", "protocol": "freedom", "settings": {} }, { "tag": "blocked", "protocol": "blackhole", "settings": {} } ], "routing": { "domainStrategy": "AsIs", "rules": [ { "type": "field", "ip": [ "geoip:private" ], "outboundTag": "blocked" } ] } }
注意:更改 Xray 配置以后,一定需要记得重启 Xray 以及 Nginx 服务。 systemctl restart xray
重启 ,查看 Xray是否报错(运行状态) systemctl status xray
下载伪装网站及部署
默认的网站主程序文件夹在 /usr/share/nginx/html/ ,大家可以自行的替换里面的任何东西(整站程序)
rm -rf /usr/share/nginx/html/* cd /usr/share/nginx/html/ wget https://github.com/V2RaySSR/Trojan/raw/master/web.zip unzip web.zip systemctl restart nginx
支持 gRPC 的 Qv2ray 客户端
Windwos 版本的 V2rayNG,全线支持 gRPC。
而目前我只找到了支持 Windows 64 位的 支持 gRPC 的 Qv2ray 客户端,下载地址:点击下载
(若是,大家找到支持 gRPC 的 MacOS 版本的 Qv2ray,请告诉我。 )
安卓手机请继续使用 V2rayNG,而 IOS 手机则可以使用 小火箭。
卸载 Nginx
因为,只有版本号大于 1.13.10+
的 Nginx 才可以支持到 gRPC,所以,列出卸载 Nginx 的命令,供大家使用。
以下为 Nginx 的卸载命令:
apt-get --purge remove nginx -y # 卸载删除 nginx apt-get autoremove -y # 罗列出与nginx相关的软件自动移除全部不使用的软件包 dpkg --get-selections|grep nginx # 罗列出与nginx相关的软件 apt-get --purge remove nginx -y # 删除查询出与nginx有关的软件 apt-get --purge remove nginx-common -y # 删除查询出与nginx有关的软件 apt-get --purge remove nginx-core -y # 删除查询出与nginx有关的软件
后记
总体来说,gRPC作为一种新型的协议,还需要大家的验证!到底是否好用,或是到底有没有速度的提升?这个都需要大家自己的尝试!就像很多人觉得 Trojan 比 Xray 好用,有些人觉得 V2ray 比 Trojan 好用一样。那,这期就到这里,博文稍微有点简单,不会请观看 视频教程 !
买了大会员没到账麻烦处理一下谢谢