进几个月v2fly推出了gRPC协议,应粉丝要求开一篇博文。仅供大家参考。gRPC 使用 HTTP/2 协议传输搭配nginx,内置连接复用(mux)功能。(v4.36.0+)(请大家更新最新版本,不管是v2fly还是xray)。
##重要提示:
v2ray N最新下载
v2ray core最新下载
xray core最新下载
Finalshell SSH连接工具下载
Mobaxterm SSH连接工具下载
准备工作及环境
1.准备一台VPS服务器centos7系统
(博主搭建使用GCP测试)自行选择服务器(记得开防火墙端口)
2.注册cloudflare等会需要解析用到gRPC(意思就是通过cloudflare接管域名解析权限,比如阿里云解析或者namesilo,为什么选择cloudflare因为专业解析(国外解析基本几秒内搞定)有些注册域名商后台解析要很长时间,然后我们需要用到cloudflare的gRPC功能)
3.准备一个域名(自己去买个域名推荐namesilo)
安装Xray服务
温馨提示:请选择最新官方推荐版本安装。(温馨提示:请看清楚我用的是centos7 64框架搭建不要等下遇到些问题找我,告诉我你用Debian系列或者其他系统,有些系统多少是有点点区别安装代码也多少会不一样)
更新下系统
Install & Upgrade Xray-core and .dat files (很老的版本:博客部分代码是用这个,不管v2fly还是xray更新迭代很快,我只是不想老改以前写好的博客所以自己备份了。但是我还是建议你们使用最新官方脚本)
老版本(备用)
1
| bash <(curl -L https://raw.githubusercontent.com/ComeBey/xray/master/install-release.sh)
|
新版本(官方)推荐使用
1
| bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
|
仅更新(geoip和geosite)dat
老版本(备用)
1
| bash <(curl -L https://raw.githubusercontent.com/ComeBey/xray/master/install-dat-release.sh)
|
新版本(官方)推荐使用
1
| bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install-geodata
|
关于acme.sh证书
生成证书
1.安装acem.sh证书生成工具,以下提供3种方法安装,选其中任意一种方法安装证书工具 (温馨提示:自动升级acme.sh在root下输入 acme.sh upgrade)
1 2 3 4 5 6 7
| curl https://get.acme.sh | sh // 如提示安装失败 请先安装curl 输入 yum -y install curl
wget -O - https://get.acme.sh | sh //如提示安装失败请(先安装wget)输入 yum -y install wget 已经安装了忽略
git clone https://github.com/acmesh-official/acme.sh.git // 如提示安装失败 先安装git 已经安装了的忽略 输入 yum install git cd ./acme.sh ./acme.sh --install
|
温馨提示:acme.sh官方已经更新了下播证书的命令请大家知晓,-m 后面写一个你自己的邮箱
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| ~/.acme.sh/acme.sh --register-account -m 邮箱
```
通过以上代码安装acme.sh提示红色抱错 你可以按实际相关情况而定安装依赖 比如安装socat 或者 netcat ```bash centos7 yum install openssl #安装依赖 openssl version 查看版本 centos7 yum install socat #通过80端口生成证书的依赖 centos7 yum install netcat debian apt-get install openssl cron socat curl #通过80端口生成证书的依赖和openssl debian apt-get -y install netcat 安装成功后执行 source ~/.bashrc 以确保脚本所设置的命令别名生效
|
2.生成证书 路径为/root/.acme.sh文件下 安装好后可自行查看
温馨提示:通过acme.sh生成证书有多种方法:
例如—自动DNS API集成 如:cloudflare DNS API 令牌 和 使用全局API密钥 acme.sh支持大多数dns生成证书
例如—使用DNS手动模式,等多种其他安装方法,如果你是个好学的人可Google
生成证书如下:本期视频只用指定端口 生成证书 **推荐使用443端口生成证书**
(一般用单域名足以,毕竟是翻墙用无需搞那么多花里胡哨的多域,比如:主域baidu.com那么不建议使用www.baidu.com,因为是翻墙的前端web请自定义比如tw.baidu.com,前缀tw可以自定义请控制三个字符,主域baidu.com和二级www.baidu.com可以备用你懂的)
1.~/.acme.sh/acme.sh –register-account -m 邮箱
1.通过侦听80端口申请证书,如果80端口被占用,请使用443端口,请确保这些端口都打开了
1
| ~/.acme.sh/acme.sh --issue -d www.rootfw.tk --standalone
|
2.侦听443端口以颁发证书,请确保443端口开启
1
| sudo ~/.acme.sh/acme.sh --issue -d www.rootfw.tk --alpn
|
输出的参考模板1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| + [root@host-10-0-0-2 ~]# sudo ~/.acme.sh/acme.sh --issue -d kr.rofw.com --alpn + [2021年 07月 07日 星期三 19:03:40 CST] Using CA: https://acme-v02.api.letsencrypt.org/directory + [2021年 07月 07日 星期三 19:03:40 CST] Standalone alpn mode. + [2021年 07月 07日 星期三 19:03:40 CST] Creating domain key + [2021年 07月 07日 星期三 19:03:41 CST] The domain key is here: /root/.acme.sh/kr.rofw.com/kr.rofw.com.key + [2021年 07月 07日 星期三 19:03:41 CST] Single domain='kr.rofw.com' + [2021年 07月 07日 星期三 19:03:41 CST] Getting domain auth token for each domain + [2021年 07月 07日 星期三 19:03:46 CST] Getting webroot for domain='kr.rofw.com' + [2021年 07月 07日 星期三 19:03:46 CST] Verifying: kr.rofw.com + [2021年 07月 07日 星期三 19:03:46 CST] Starting tls server. + [2021年 07月 07日 星期三 19:03:53 CST] Pending + [2021年 07月 07日 星期三 19:03:56 CST] Success + /root/.acme.sh/acme.sh: 行 3200: 16118 已终止 $__S_OPENSSL > /dev/null 2>&1 + [2021年 07月 07日 星期三 19:03:57 CST] Verify finished, start to sign. + [2021年 07月 07日 星期三 19:03:57 CST] Lets finalize the order. + [2021年 07月 07日 星期三 19:03:57 CST] Le_OrderFinalize='https://acme-v02.api.letsencrypt.org/acme/finalize/122770105/10908879336' + [2021年 07月 07日 星期三 19:03:59 CST] Downloading cert. + [2021年 07月 07日 星期三 19:03:59 CST] Le_LinkCert='https://acme-v02.api.letsencrypt.org/acme/cert/0484346242e6a3314e314c1d429d4653a82c' + [2021年 07月 07日 星期三 19:04:01 CST] Cert success. + -----BEGIN CERTIFICATE----- + MIIFHzCCBAegAwIBAgISBIQ0YkLmozFOMUwdQp1GU6gsMA0GCSqGSIb3DQEBCwUA + MDIxCzAJBgNVBAYTAwerwerwerwerwerwrwwMDUxMDAzNTdaMBcxFTATBgNVBAMT + DGtyLnJvb3Rmdy50azCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALyZ + /02vJM1UFaKtAeyBNtzD8MFOLyoZ/5fMWM5FtMohyce/QG6CYnkrmm/kcpV8WPCw + xBpna0nz9UMhuYqX2TPmpjU5RHeYW1XxA58wc1PB+07UyBGkcpzq+iadp/XIj591 + werwererwrwerwerwer== + -----END CERTIFICATE-----大家只需要记得红色cer和key路径即可 - [2021年 07月 07日 星期三 19:04:01 CST] Your cert is in /root/.acme.sh/kr.rofw.com/kr.rofw.com.cer - [2021年 07月 07日 星期三 19:04:01 CST] Your cert key is in /root/.acme.sh/kr.rofw.com/kr.rofw.com.key + [2021年 07月 07日 星期三 19:04:01 CST] The intermediate CA cert is in /root/.acme.sh/kr.rofw.com/ca.cer + [2021年 07月 07日 星期三 19:04:01 CST] And the full chain certs is there: /root/.acme.sh/kr.rofw.com/fullchain.cer
|
证书和密钥安装到指定路径
1
| sudo ~/.acme.sh/acme.sh --installcert -d kr.rootfw.tk --fullchainpath /etc/v2ray/v2ray.cer --keypath /etc/v2ray/v2ray.key
|
编辑config.json
1 2 3 4
| /usr/local/etc/xray vim /usr/local/etc/v2ray vi /usr/local/etc/v2ray nano /usr/local/etc/v2ray
|
server config.json
在/usr/local/etc/xray下面编辑config.json配置文件(温馨提示:这里代码是官方项目墙友提交的模板,实际上我们可以改动里面的配置及部分功能。不懂的老铁手不要那么贱,错一个标点符号就不能正常运行,我已经解释的很清楚了。)
复制以下代码到server config.json
/usr/local/etc/xray/config.json1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| { "log": { "loglevel": "warning" }, "inbounds": [{ "port": 16889, "listen": "127.0.0.1", "protocol": "vless", "settings": { "clients": [{ "id": "2332424556457234556" }], "decryption": "none" }, "streamSettings": { "network": "grpc", "grpcSettings": { "serviceName": "" } } }], "outbounds": [{ "tag": "direct", "protocol": "freedom", "settings": {} }, { "tag": "blocked", "protocol": "blackhole", "settings": {} } ], "routing": { "domainStrategy": "AsIs", "rules": [{ "type": "field", "ip": [ "geoip:private" ], "outboundTag": "blocked" }] } }
|
client config.json
client config.json1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| { "log": { "loglevel": "warning" }, "inbounds": [{ "listen": "127.0.0.1", "port": "1080", "protocol": "socks", "settings": { "auth": "noauth" } }], "outbounds": [{ "protocol": "vless", "settings": { "vnext": [{ "address": "your_server_ip", "port": 443, "users": [{ "id": "", "encryption": "none" }] }] }, "streamSettings": { "network": "gun", "security": "tls", "tlsSettings": { "serverName": "your_domain", "alpn": [ "h2" ] }, "grpcSettings": { "serviceName": "rootfwService" } } }] }
|
v2ray调试
1 2 3
| sudo systemctl restart xray sudo systemctl status -l xray sudo systemctl daemon-reload
|
设置v2ray开机启动
nginx安装配置
nginx安装
1 2 3 4 5 6 7 8 9
| sudo yum install epel-release
sudo yum install nginx
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| 调试代码如下: sudo systemctl start nginx.service //开启 Nginx sudo systemctl stop nginx.service //停止 Nginx sudo systemctl status -l nginx.service //查看 Nginx运行状态 sudo systemctl restart nginx.service //重新启动 Nginx sudo systemctl disable nginx.service //取消开机启动 Nginx sudo systemctl reload nginx.service //重载Nginx (如更改Nginx配置需要重新载入数据) sudo systemctl enable nginx.service //开机启动 调试代码如下: Nginx调试也可以不需要代码后面添加 **.service** 请先**sudo systemctl start nginx.service** 和**sudo systemctl enable nginx.service** 然后在通过下面代码也可以调试.
sudo systemctl start nginx //开启 Nginx sudo systemctl stop nginx //停止 Nginx sudo systemctl status -l nginx //查看 Nginx运行状态 sudo systemctl restart nginx //重新启动 Nginx sudo systemctl disable nginx //取消开机启动 Nginx sudo systemctl reload nginx //重载Nginx (如更改Nginx配置需要重新载入数据) sudo systemctl enable nginx //开机启动
|
通过以上方式安装的 Nginx,所有相关的配置文件都在 /etc/nginx/ 目录中
Nginx 的主配置文件是 /etc/nginx/nginx.conf
Nginx 日志文件(access.log 和 error.log )位于 /var/log/nginx/ 目录中。
如果在设置完成之后不能成功使用,可能是由于 SElinux 机制(如果你是 CentOS 7
的用户请特别留意SElinux 这一机制)阻止了 Nginx 转发向内网的数据
如果是这样的话,在V2Ray的日志里不会有访问信息,在 Nginx 的日志里会出现大量的 “Permission Denied” 字段
要解决这一问题需要在终端下键入以下命令:
1
| setsebool -P httpd_can_network_connect 1 //非常重要debian忽略
|
验证 Nginx 是否成功启动,可以在浏览器中打开 http://YOUR_IP 注意:打开则显示centos网页 但是提示不安全网站没开启ssl加密https
nginx配置
/etc/nginx/nginx.conf1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events { worker_connections 1024; }
http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048;
include /etc/nginx/mime.types; default_type application/octet-stream; include /etc/nginx/conf.d/*.conf;
server { listen 443 ssl http2; #监听443 server_name comebey;
index index.html; root /usr/share/nginx/html; #网站模板路径只建议用html 当然也可以配置其他的比如php等
ssl_certificate /etc/v2ray/v2ray.pem; #证书注意后缀名,重要事情说三遍!重要事情说三遍!重要事情说三遍! ssl_certificate_key /etc/v2ray/v2ray.key; #密钥 ssl_protocols TLSv1.2 TLSv1.3; #你懂得! ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5; #可以自己修改,不懂勿动
# 在 location 后填写 /你的 ServiceName和服务器json保持一致 location /rootfwService { if ($content_type !~ "application/grpc") { return 404; } #timeout这些后面数值也可以改,不懂别手贱 client_max_body_size 0; keepalive_time 10719064m; keepalive_requests 42949672; client_body_timeout 10719064m; send_timeout 10719064m; lingering_close always; grpc_read_timeout 10719064m; grpc_send_timeout 10719064m; grpc_pass grpc://127.0.0.1:16889; } } }
#温馨提示:这里配置是可以加很多功能的,大家好好研究下,也可以在博客评论区留言贴上你的问题,也可以加我们电报群交流!感谢xray和v2fly项目组所有成员。
|
cloudflare配置
注册并且登录cloudflare 解析域名非常简单这里就不详细讲解,自己Google很多教程。解析域名添加A记录指向☞你的服务器IP地址.
转到您在 CloudFlare 中的域。在“网络”选项卡中,打开 gRPC。
在“SSL/TLS”选项卡中,选择“源服务器”子选项卡。创建一个新证书并保存为 v2ray.pem
和 v2ay.key
。
卸载xray
温馨提示:注意是新版本还是老版本在操作
新版本1
| bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ remove
|
老版本1
| bash <(curl -L https://raw.githubusercontent.com/ComeBey/xray/master/install-release.sh) --remove
|
总结
1.本篇博客用的是cloudflare证书,手动的,你用acme.sh申请也可以。当然也可以用CF aip令牌下播证书。证书配置很多种不管你用acme.sh温馨提示:acme.sh申请证书方法官方更改了请参考 还是freessl,还是宝塔账号申请还是怎么滴,都可以申请。只需要记住证书格式。
2.密钥记得给权限不是无法使用
1
| chmod 644 /etc/v2ray/v2ray.key
|
3.cloudflare加CDN或者不加你们自己拿主意。个人建议:个人翻墙真没必要搞那么多花里胡哨的东西,v2fly优化了那么多迭代更新包括xray,已经很不错了和安全了。只是有些老铁基础不行,瞎搞导致IP瓦特了。假设你要有内网线路IEPL或者iplc 搭建ssr是最理想的选择,怕锤子了,根本不需要捣腾这些。当然每个人情况不一样,请各位墙友自己斟酌吧!
重要提示:弄好域名解析后,先申请证书和密钥(如果你是通过acme.sh申请443或者80端口),cloudflare申请证书忽略此步骤。然后在安装nginx是最后安装。如果端口占用同一个,你先安装nginx后通过443端口在下播证书会失败。可以使用sudo systemctl stop nginx 停止nginx运行在申请证书。如果还是不成功就自己kill端口,自己Google方法kill端口
电报群讨论组
温馨提示:如果遇到问题电报群找我,把报错代码贴出发群里或在博客留言栏告知。我看到信息会第一时间回答你问题。
Nginx前端模板下载