Cloudflare Tunnels 部署¶
版本要求 >= 1.8.0
通信框架¶
(VPS-1) grpcs/https +------------------+ +-----------------+
stat_client <-------------> | | | |
| | | |
(VPS-2) grpcs/https | | HTTP2 |Cloudflare Tunnel|
stat_client <-------------> |Cloudflare Network| <-------> | |
| | | stat_server |
https | | | |
Browser <-------------> | | | |
+------------------+ +-----------------+
优势:
1. Cloudflare Tunnels 自带内网穿透功能,无需暴露服务端口
2. 配上域名就带s, 免去配置 Nginx/Caddy 和申请证书的麻烦
3. 搭配 Cloudflare WAF 使用更安全
1. Cloudflare Tunnels 配置¶
1.1 Cloudflare 配置¶
设置 TLS 模式¶
网络开启 gRPC¶
创建源服务器证书¶
填写你的 grpc 域名¶
证书内容分别保存为 server.pem
server.key
¶
转到 ZeroTrust 创建和安装 Tunnels¶
复制 cloudflared 安装命令到 stat_server 所在机器安装 cloudflared
然后配置 http 转发
配置 grpc 转发,Type 选 HTTPS
配置 Tunnels 的 TLS 开启 HTTP2 连接¶
修改 cloudflared 服务¶
修改 /etc/systemd/system/cloudflared.service
增加 --protocol http2
参数,重启cloudflared
1.2 修改 config.toml
¶
修改 server
端 配置文件 config.toml
以下配置 grpc_tls = 1
开启 TLS
grpc_addr = "127.0.0.1:9394"
http_addr = "127.0.0.1:8080"
# 开启 grpc TLS, 0:关闭 1: TLS 2: mTLS
grpc_tls = 1
# 证书最终路径 ${workspace}/${tls_dir}, 包含 server.pem, server.key 文件
tls_dir = "tls"
1.3 测试运行¶
# 命令行执行
RUST_LOG=debug ./stat_server -c config.toml
RUST_LOG=debug ./stat_client -a grpcs://cf_grpc.ssr.rs -u h1 -p p1
# 打开 https://cf_http.ssr.rs 看上报成功
# 走HTTPS协议: ./stat_client -a https://cf_http.ssr.rs/report -u h1 -p p1
2. mTLS 部署¶
属于安全进阶的部署方式,双向证书认证模式.
2.1 证书生成¶
mkdir -p /opt/ServerStatus/tls
cd /opt/ServerStatus/tls
wget --no-check-certificate -qO gen_certs.sh 'https://raw.githubusercontent.com/zdz/ServerStatus-Rust/master/scripts/gen_certs.sh'
# 下载 gen_certs.sh 后,根据自己的域名修改配置,然后执行
bash -ex gen_certs.sh
2.1 修改 config.toml
¶
修改 server
端 配置文件 config.toml
以下配置 grpc_tls = 2
开启 mTLS
grpc_addr = "0.0.0.0:9394"
http_addr = "0.0.0.0:8080"
# 开启 grpc TLS, 0:关闭 1: TLS 2: mTLS
grpc_tls = 2
# 证书最终路径 ${workspace}/${tls_dir}
# 包含 server.pem, server.key, clent.pem, client.key, ca.pem 文件
tls_dir = "tls"