CloudFlare Argo Tunnel

Cloudflare Tunnel 是一款隧道软件,可以快速安全地加密应用程序到任何类型基础设施的流量,让您能够隐藏你的 web 服务器 IP 地址,阻止直接攻击,从而专注于提供出色的应用程序。

下载安装

可以在cloudflare的GitHub地址下载安装

绑定账号(用于绑定域名可选)

绑定域名需要账号开通 cloudflare zero trust

运行

cloudflared tunnel login

运行成功后控制台会输出一个login地址,复制在浏览器登录。

登录成功后会让你选择一个域名绑定用于隧道访问,并且会生成~/.cloudflared/cert.pem文件,在创建隧道和设置 DNS 解析的时候会用到这个文件。

如果没有域名跳转直接运行

创建隧道

运行

cloudflared tunnel create [隧道名字]

创建成功后会生成~/.cloudflared/[一长串UUID].json,配置多个服务会用到。

绑定域名

cloudflared tunnel route dns [隧道名字 或者 UUID] [想要绑定到的域名或其二级域名]

运行隧道,实现穿透

http|https

cloudflared tunnel --name [隧道名字] --url http://[站点地址]
#如 cloudflared tunnel --name ql --url http://127.0.0.1:5700

tcp

cloudflared tunnel --name [隧道名称] --url tcp://[服务地址]
#如 cloudflared tunnel --name mysql --url tcp://127.0.0.1:3306

直接运行

http|https

cloudflared tunnel --url http://[站点地址]
#如 cloudflared tunnel --url http://127.0.0.1:5700

tcp

cloudflared tunnel --name [隧道名称] --url tcp://[服务地址]
#如 cloudflared tunnel --url tcp://127.0.0.1:3306

cloudflare会返回一个二级域名免费使用

+---------------------------------------------------------+
| Your free tunnel has started! Visit it: |
| https://*****.trycloudflare.com |
+---------------------------------------------------------+

配置多个服务

配置文件

创建配置文件将配置文件放在/root/.cloudflared/config.yml

tunnel: 6ff42ae2-765d-4adf-8112-31c55c1551ef #隧道的UUID
credentials-file: /root/.cloudflared/6ff42ae2-765d-4adf-8112-31c55c1551ef.json #隧道的授权文件

ingress:
- hostname: ql.example.com #域名,需要绑定过的域名
service: http://localhost:5700 #本地站点地址
- hostname: ssh.example.com
service: ssh://localhost:22
- service: http_status:404

更多配置可查看官方文档

检查配置

#检查配置文件没问题会提示OK
cloudflared tunnel ingress validate

运行配置

cloudflared tunnel run <UUID or NAME>

如配置文件未放在~/.cloudflared/文件夹

cloudflared tunnel --config [配置文件的绝对路径] run [隧道名字]
#如cloudflared tunnel --config /root/.cloudflared/config.yml run ql

创建systemctl service

cloudflared 可以使用命令自动创建systemctl

#创建systemctl service
cloudflared service install
#启动cloudflared
systemctl start cloudflared
#cloudflared开机自启动
systemctl enable cloudflared

配置文件会被拷贝到/etc/cloudflared/config.yml,并且从该目录下启动,所以如果你需要更改文件的话,需要在/root/.cloudflared下修改完 config.yml 文件后复制文件到/etc/cloudflared/,然后重启服务

#复制配置文件
cp /root/.cloudflared/config.yml /etc/cloudflared/config.yml
#重启服务
systemctl restart cloudflared