文章导读目录
前言
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、域名一个,做好相应的解析
(若是需要套用 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 xxxxxx@gmail.com
- ~/.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 好用一样!