CF Argo 隧道——Cloudflared 反代服务

CF Argo 隧道——Cloudflared 反代服务
雨天狂奔CF Argo 隧道——Cloudflared 反代服务
Argo 隧道的基本概念
CF Argo 隧道(Cloudflare Argo Tunnel)是 Cloudflare 提供的一项服务,其软件名为 cloudflared
,允许用户安全地将本地服务器或内部服务暴露到互联网,而无需在防火墙上开放入站端口。
免费版 Argo 的主要功能
官方文档 有非常详尽的说明
1. 安全暴露本地服务
- 无需在路由器或防火墙上开放入站端口(如 80/443)。
- 所有流量通过 Cloudflare 的边缘网络加密传输(TLS 1.3)。
- 防止直接暴露服务器 IP,减少 DDoS 攻击风险。
- 也就是俗称的反代功能,与 caddy、nginx 的反向代理类似
2. 支持 HTTP/HTTPS 流量
- 可以代理 Web 服务(如本地开发的网站、API、NAS 管理界面等)。
- 自动提供 HTTPS(通过 Cloudflare 的全球证书)。
3. 免费自定义域名
- 支持绑定到 Cloudflare 托管的域名(如
your-site.example.com
)。 - 无需额外付费即可使用 SSL/TLS 加密。
4. 与 Cloudflare Access 基础版集成
- 可配置简单的零信任访问控制(如基于电子邮件域名的限制)。
- 支持 Google、GitHub 等 SSO 登录(但高级策略需付费版)。
- 关于 Cloudflare Access,详见 我的博文介绍
如何安装 Argo 隧道
1. Linux 版
如果你有一台 Linux 服务器(此处以 Debian 和 乌班图 系统为例),且已经搭建了 老王的四合一节点脚本,就不需要再额外安装 Argo 了,老王的脚本已经自带,可以通过以下命令来确认你的 vps 是否已经安装了 argo:
1 | sudo systemctl list-unit-files --type=service |
看看列出的服务中是否有 argo.service
或 cloudflared.service
argo.service
:老王脚本 argo 的服务名称cloudflared.service
:官方 argo 的服务名称
如果还没有搭建任何脚本,也不打算搭建脚本,仅用作服务主机,则可以根据 官方文档 安装 argo,具体操作如下:
- 打开 CF zero turst 官方主页,依次点击
网络
→tunnels
→创建隧道
隧道类型
选择:cloudflared,点击 “ 下一步 “为隧道命名
:按你的需求给隧道一个英文名称,点击 “ 下一步 “操作系统
选择:debian,出现下图:
- 按照官方指引安装连接器,依次运行界面上给出的命令:
1 | # Add cloudflare gpg key |
1 | # Add this repo to your apt repositories |
1 | # install cloudflared |
1 | # 安装 cloudflared 服务并自动启动,ej开头字符串即为隧道token |
2. Windows 版
- 下载安装 argo 隧道软件
- 以管理员身份运行隧道
1 | cloudflared.exe service install eyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
3. Docker 版
- 运行以下命令
1 | docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token eyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
注意:如果部署的是 docker 版,设置隧道监听端口时不能用 localhost:端口号
,此时的 localhost 是 docker 容器的内部 ip 地址,不是宿主机 IP,此时需要填写 0.0.0.0: 端口号
或 服务器公网IP: 端口号
其他版本均可在 隧道管理面板
找到相应的安装命令,此处不再赘述。至此,argo 隧道安装完毕
如何通过隧道为服务添加反代
caddy、nginx 等反代软件的设置流程一般如下:
- 将服务器 IP 解析到域名 DNS 记录
- 安装 caddy 或 nginx 服务
- 编辑配置文件 Caddyfile 或 nginx.conf 定义域名和代理规则
- 为域名申请 tls 证书
不仅繁琐,也无法隐藏服务器真实 IP;如果 IP 被墙,除了换 IP 或套 CF CDN,没有好的解决方案
而通过 argo 隧道反代则非常简单,有以下几大优势:
- 无需编辑配置文件,对小白非常友好
- 无需解析服务器 IP 地址,只要有一个托管在 CF 的域名即可
- 自动隐藏服务器真实 IP
- 自动使用 CF CDN,IP 被墙也不影响访问服务
- 一台 VPS 上使用一条隧道即可通过添加主机名和监听端口来反代所有服务
- 自动分配 ipv4 和 ipv6 双栈出口
其配置步骤如下:
- 打开隧道管理页面,找到你刚刚创建的隧道(在隧道还未连接任何服务的情况,其状态会显示灰色的
停用
字样),找到最右侧...
,点击它,选择配置
- 点击页面上方的
公共主机名
- 再点击
添加公共主机名
,依次按如下设置(以老王四合一脚本的固定隧道为例,设置完成后,即可让 argo 节点拥有固定隧道):- 子域:为服务自定义一个子域名,填写前缀即可,如
cfsub
- 域名:选择托管在 CF 的根域名,如
argo.us.kg
- 路径:留空
- 服务类型:http
- URL:服务器上搭建的服务所监听的 IP 和端口,如
localhost:8001
,我举例的这个端口是老王四合一脚本中 argo 隧道的默认监听端口
- 子域:为服务自定义一个子域名,填写前缀即可,如
- 设置完成后,若其反代的服务已经在运行,则在隧道管理页面,可以看到隧道状态变成了绿色的
正常
字样
如果这台 vps 还搭建了其他服务,以 alist 为例,只需在这条隧道里再添加一个主机名即可
- 子域:如
alist
- 域名:选择托管在 CF 的根域名,如
argo.us.kg
- 路径:留空
- 服务类型:http
- URL:
localhost:5244
,这是 alist 默认的监听端口
通过浏览器访问 https://子域.根域
,即可访问你所部署的服务,已经自带 tls 证书 和 cf cdn
写在最后
即便你没有 vps,也可以通过在本机 win 系统安装 win 版 argo 来反代本机部署的服务,只要本地电脑不关机且服务在运行,就可以远程通过访问 argo 域名来访问本机服务,完全可以用家中闲置的旧电脑打造一台属于自己的服务器
#cloudflare #CDN #反代