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.servicecloudflared.service

  • argo.service:老王脚本 argo 的服务名称
  • cloudflared.service:官方 argo 的服务名称

如果还没有搭建任何脚本,也不打算搭建脚本,仅用作服务主机,则可以根据 官方文档 安装 argo,具体操作如下:

  • 打开 CF zero turst 官方主页,依次点击 网络tunnels创建隧道

image.png

  • 隧道类型 选择:cloudflared,点击 “ 下一步 “
  • 为隧道命名:按你的需求给隧道一个英文名称,点击 “ 下一步 “
  • 操作系统 选择:debian,出现下图:

image.png

  • 按照官方指引安装连接器,依次运行界面上给出的命令:
1
2
3
# Add cloudflare gpg key
sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
1
2
# Add this repo to your apt repositories
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared any main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
1
2
# install cloudflared
sudo apt-get update && sudo apt-get install cloudflared
1
2
# 安装 cloudflared 服务并自动启动,ej开头字符串即为隧道token
sudo cloudflared service install eyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

2. Windows 版

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 双栈出口

其配置步骤如下:

  • 打开隧道管理页面,找到你刚刚创建的隧道(在隧道还未连接任何服务的情况,其状态会显示灰色的 停用 字样),找到最右侧 ...,点击它,选择 配置
  • 点击页面上方的 公共主机名

image.png

  • 再点击 添加公共主机名,依次按如下设置(以老王四合一脚本的固定隧道为例,设置完成后,即可让 argo 节点拥有固定隧道):
    • 子域:为服务自定义一个子域名,填写前缀即可,如 cfsub
    • 域名:选择托管在 CF 的根域名,如 argo.us.kg
    • 路径:留空
    • 服务类型:http
    • URL:服务器上搭建的服务所监听的 IP 和端口,如 localhost:8001,我举例的这个端口是老王四合一脚本中 argo 隧道的默认监听端口

image.png

  • 设置完成后,若其反代的服务已经在运行,则在隧道管理页面,可以看到隧道状态变成了绿色的 正常 字样

如果这台 vps 还搭建了其他服务,以 alist 为例,只需在这条隧道里再添加一个主机名即可

  • 子域:如 alist
  • 域名:选择托管在 CF 的根域名,如 argo.us.kg
  • 路径:留空
  • 服务类型:http
  • URL:localhost:5244,这是 alist 默认的监听端口

image.png

通过浏览器访问 https://子域.根域,即可访问你所部署的服务,已经自带 tls 证书 和 cf cdn

写在最后

即便你没有 vps,也可以通过在本机 win 系统安装 win 版 argo 来反代本机部署的服务,只要本地电脑不关机且服务在运行,就可以远程通过访问 argo 域名来访问本机服务,完全可以用家中闲置的旧电脑打造一台属于自己的服务器

#cloudflare #CDN #反代