如果你觉得"端口回源"方案太依赖 CF 代理端口列表、担心源站 IP 泄露,那么 Cloudflare Argo Tunnel(cloudflared)是一个更"优雅"的替代方案。

Argo Tunnel 的核心思路是:VPS 上不开启任何入站端口,通过 cloudflared 守护进程主动向 CF 发起出站连接,建立一条加密隧道。流量从客户端到 CF 边缘后,直接走这条已建立的隧道到达 VPS,源站对公网完全不可见。

这篇文章会完整覆盖:VPS 部署 VLESS+WS-ENC → cloudflared 隧道建立 → CF 域名接入 → CDN 加速 → 优选域名 → 多节点负载均衡,并在最后和"端口回源"方案做一次系统对比。

⚠️ 重要提醒
Argo Tunnel 免费版有流量限制(约 50GB/月),超出后 tunnels 将限速。高流量场景建议升级到 Argo Pro($0/月但有 Fair Use 限制)或考虑其他方案。本指南仅供技术研究学习用途。

一、什么是 Cloudflare Argo Tunnel?

Argo Tunnel 是 Cloudflare 提供的一种"反向隧道"技术。传统代理是"客户端连向服务器",Argo Tunnel 是"服务器主动连向 Cloudflare,建立持久隧道,然后 Cloudflare 把流量顺着这条隧道推回服务器"。

1.1 核心特性

  • 零入站端口:VPS 防火墙不需要开放任何端口,对公网完全隐身。
  • 自动证书管理:CF 自动为你的 tunnel 域名签发 TLS 证书。
  • 不走 CF 代理端口限制:隧道内部可以走任意端口(CF 边缘到 tunnel 边缘的部分受 CF 支持,但 tunnel 内部协议不限)。
  • 适合动态 IP:VPS IP 经常变动(如住宅宽带、移动网络)也能稳定接入。

1.2 Argo Tunnel vs 端口回源 架构对比

维度Argo Tunnel(本方案)端口回源(前文方案)
VPS 端口暴露✅ 零暴露,cloudflared 出站连接⚠️ 需开放监听端口(如 10000)
源站 IP 泄露✅ 极低泄露风险⚠️ 有泄露风险(回源 IP 可能出现在日志中)
CF 代理端口限制✅ 不受限(tunnel 内部走 CF 边缘网络)⚠️ 受限制(只能用 CF 代理端口列表)
免费额度~50GB/月(Fair Use)无硬限制(受 VPS 带宽)
延迟略高(多一层隧道封装)更低(直连回源)
多节点分摊每个 VPS 一条 tunnel每个 VPS 一条 CNAME 记录
适用场景源站安全要求高、IP 不固定、端口限制是痛点追求更低延迟、大流量、VPS 环境稳定
💡 一句话总结两种方案
端口回源:VPS 开端口,CF 反向代理连过来,简单直接,延迟更低。
Argo Tunnel:VPS 不开端口,主动连 CF,更安全,适合端口受限或 IP 不固定的场景。

二、前置条件

  • 一台海外 VPS(Debian 12 / Ubuntu 24.04)。
  • 一个已托管到 CF DNS 的域名。
  • CF 账号已开启 Argo Tunnel 功能(免费 Plan 默认可用,在 Zero Trust Dashboard 里能看到 Tunnel 选项)。
  • VPS 上能出站访问互联网(cloudflared 需要主动连 CF)。
💡 VPS 选择建议
Argo Tunnel 方案不需要 VPS 开放公网端口,对 IP 稳定性要求也低——IP 变了 tunnel 自动重连,体验上比端口回源更宽容。推荐 DediRock 美国 VPS,年付 $8.88 起,1Gbps 带宽 + 美国原生 IP,纽约机房三网直连延迟低,做 Argo Tunnel 源站很合适。如果你的 tunnel 流量较大(接近 50GB/月 Fair Use 额度),建议用 Rabisu 无限流量 VPS,$9.9/年不限流量,多个 tunnel 分摊也不用担心额度问题。

三、VPS 上部署 VLESS+WS-ENC 源站

3.1 安装 Xray-core

bash -c "$(curl -fsSL https://raw.githubusercontent.com/XTLS/Xray-install/main/install-release.sh)" -s install

3.2 生成 UUID

xray uuid

3.3 配置 Xray(VLESS+WS-ENC)

-ENC 后缀代表这个节点采用了加密 WebSocket(Encrypted WebSocket)。在 Xray 层面,通过在 WS 传输之上启用 security: "tls" 并在 wsSettings 中配置证书实现。在 Argo Tunnel 方案下,建议源站启用 TLS,与 CF 末端的 TLS 形成"双端加密":

{
  "inbounds": [{
    "port": 10000,
    "protocol": "vless",
    "settings": {
      "clients": [{ "id": "你的UUID", "level": 0, "email": "user" }],
      "decryption": "none"
    },
    "streamSettings": {
      "network": "ws",
      "security": "tls",
      "tlsSettings": {
        "certificates": [{
          "certificateFile": "/path/to/fullchain.pem",
          "keyFile": "/path/to/privkey.pem"
        }]
      },
      "wsSettings": {
        "path": "/ws-enc-tunnel"
      }
    }
  }],
  "outbounds": [{
    "protocol": "freedom"
  }]
}
📌 证书说明
如果你已经有域名在 CF 上,可以用 certbot 从 Let's Encrypt 申请证书,或使用 CF Origin CA 证书(推荐,自动签发,专为 CF 回源设计)。
CF Origin CA 证书申请:CF Dashboard → Origin CA → Create Certificate → 选择你的域名 → 下载证书和私钥 → 放到 VPS 上。

3.4 启动与自启

systemctl daemon-reload
systemctl enable --now xray
systemctl status xray
ss -tlnp | grep 10000

3.5 开启 ECH(Encrypted Client Hello)可选步骤

如果 cfnew 或 yonggekkk 项目的 ECH 配置对你来说太复杂,source 站也可以手动生成 ECH 配置。不过 Argo Tunnel 方案下,CF 边缘已经终结了 TLS,源站的 ECH 意义相对有限,不是必选项。

四、安装并配置 cloudflared

4.1 安装 cloudflared

# Debian/Ubuntu 一键安装
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg \
  | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null

echo "deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared $(lsb_release -cs) main" \
  | sudo tee /etc/apt/sources.list.d/cloudflared.list

sudo apt update && sudo apt install -y cloudflared

# 验证
cloudflared --version

4.2 登录 CF 账号

cloudflared tunnel login

执行后会在终端打印一个 URL,用浏览器打开登录你的 CF 账号,选择要关联的域名(如 yourdomain.com),授权后 cloudflared 会下载一个 cert.pem~/.cloudflared/

4.3 创建 Tunnel

cloudflared tunnel create my-vless-tunnel
# 输出类似:
# Tunnel credentials saved to /root/.cloudflared/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.json
# Created tunnel my-vless-tunnel with id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

4.4 配置 Tunnel(config.yml)

编辑 /root/.cloudflared/config.yml

tunnel: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  # 上一步的 tunnel UUID
credentials-file: /root/.cloudflared/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.json

ingress:
  - hostname: node.yourdomain.com
    service: http://localhost:10000
    originRequest:
      noTLSVerify: true  # 源站是自签证书时设为 true;CF Origin CA 证书也设为 true
  - service: http_status:404  # 必须有一个 fallback
⚠️ config.yml 格式注意
hostname:填你想用的域名,如 node.yourdomain.com,需要提前在 CF DNS 中没有同名记录(Tunnel 会自动创建 DNS 记录)。
service:指向本地 Xray 的监听端口,这里是 http://localhost:10000
noTLSVerify:源站用 CF Origin CA 自签证书时,TLS 握手会验证不过,必须开启。
fallback:最后必须有一个 http_status:404 的 fallback 规则。

4.5 创建 DNS 记录并启动 Tunnel

# 自动创建 CNAME 记录(会把 node.yourdomain.com 指向 tunnel)
cloudflared tunnel route dns my-vless-tunnel node.yourdomain.com

# 启动 tunnel(前台测试)
cloudflared tunnel run my-vless-tunnel

# 确认正常后,设置为 systemd 服务(后台自启)
cloudflared service install
systemctl enable --now cloudflared

五、Cloudflare 侧配置

5.1 SSL/TLS 设置

CF Dashboard → SSL/TLS → 建议选 FullFull (strict)。由于源站已配置了 TLS(CF Origin CA 证书),Full (strict) 可以正常通过验证。

5.2 客户端连接参数

地址:    node.yourdomain.com
端口:    443
UUID:    你的 UUID
传输:    ws
路径:    /ws-enc-tunnel
TLS:     On(因为源站已启用 TLS)
 sni:     yourdomain.com(如果客户端有 SNI 字段,填 CF 域名)
✅ 验证 Tunnel 连接
客户端连接后,访问 https://ip.sb 查看出口 IP。如果显示 CF 的 IP(104.x / 172.66.x),说明 Argo Tunnel 路由正常。

六、优选域名与负载均衡

6.1 CF 优选域名列表

Argo Tunnel 方案下,优选域名主要用在两个地方:客户端连接地址(提高首包速度)和 Tunnel 的 CF 边缘路由

优选域名维护者倾向区域适用场景
yg1~yg13.ygkkk.dpdns.org甬哥社区移动→港 · 电信/联通→日韩国内用户首选,序号可轮换
cfip.dahua1.com社区东亚国内访问稳定
cf.0ups.com社区全球均衡美、新节点优质
cloudflare-ech.com社区欧美配合 ECH
ip.sb官方全球验证 CF 出口 IP

6.2 多节点负载均衡思路

Argo Tunnel 方案的多节点架构和端口回源方案基本一致:

  1. 准备 N 台 VPS(推荐 2-3 台,不同地区/运营商)。
  2. 每台 VPS 上独立部署 VLESS+WS-ENC + cloudflared tunnel。
  3. 每个 Tunnel 注册不同的 CF 域名(如 node1.argo.yourdomain.comnode2.argo.yourdomain.com)。
  4. 订阅生成时,给每个节点分配不同的优选域名作为连接地址。
  5. 客户端配置 url-test 策略,自动测速择优。
💡 推荐零成本负载均衡方案
客户端 url-test + 优选域名(和端口回源方案一样)。
每个 Tunnel 域名绑定一个优选域名作为"表面地址",客户端用 url-test 策略,每 600s 自动测试一次,选最快的连接。zero 成本,效果稳定。

6.3 进阶:Argo Tunnel 的流量路由

Argo Tunnel 支持在 CF Zero Trust Dashboard 中配置更精细的路由规则:

  • Access Policy:只有通过 CF Access 认证的用户才能通过 tunnel 访问源站,安全级别最高。
  • WAF 规则:在 tunnel 入口配置 CF WAF,拦截恶意流量。
  • 负载均衡:在 Zero Trust Dashboard 中创建多个 Origin,配置健康检查,CF 自动在多个 tunnel 之间做负载均衡(需要 Argo Pro 或更高 Plan)。

七、两种方案深度对比

对比维度Argo Tunnel端口回源
VPS 防火墙要求无需开放任何端口需开放监听端口(如 10000)
源站 IP 暴露程度极低(主动出站连接 CF)中等(回源时 IP 有日志痕迹)
CF 代理端口限制不受限受 CF 代理端口列表限制
延迟表现略高(多一层隧道)更低(直连)
免费额度~50GB/月 Fair Use无硬限制
配置复杂度安装 cloudflared + tunnel 配置 + systemdXray 配置 + DNS 代理
动态 IP 兼容✅ 完美支持❌ 换 IP 需更新 DNS
多节点管理每个 VPS 一条 tunnel,自动 DNS 管理每个 VPS 一条 CNAME,手动管理
L7 协议支持HTTP/HTTPS 为主(tunnel 层)任意 TCP 端口
容错性tunnel 断了立即重连,自动恢复VPS 重启后需手动恢复服务
推荐场景安全优先 · IP 不固定 · 端口受限 · 测试环境性能优先 · 大流量 · 长期稳定 · 已熟悉 xray
📌 选型建议
选 Argo Tunnel:你的 VPS IP 经常变、防火墙策略严格、源站 IP 泄露后果严重、CF 代理端口不够用。
选端口回源:追求最低延迟、VPS 带宽大、IP 稳定、协议需要非 HTTP 端口。

八、进阶:Argo Tunnel + CF Load Balancing

如果你有多台 VPS,每台上都跑 cloudflared tunnel,可以通过 CF Zero Trust Dashboard 实现多 tunnel 负载均衡:

  1. 每台 VPS 上独立部署 cloudflared,各自注册不同的 tunnel(如 node-us-eastnode-hknode-jp)。
  2. CF Zero Trust Dashboard → Networks → Load Balancing → 添加各 tunnel 对应的 origin。
  3. 配置 Health Monitor:定期向各 tunnel 后端发送探活请求,故障节点自动移除。
  4. 设置负载均衡策略:Dynamic Latency(动态延迟)或 Geo/Region(地域),返回最快/最近的 tunnel 给用户。
  5. Argo Pro Plan($0/月但有 Fair Use 限制)支持最多 500 个 tunnel;Argo Enterprise 无此限制。

8.1 替代方案:客户端层面负载均衡

如果不想用 CF Load Balancing(免费版限制多),最简单的方式还是在客户端层面做 url-test:给每个 tunnel 域名绑定不同的优选域名,客户端定期测速,自动选最快的。对于 2-3 个节点来说,开销完全可接受。

九、常见问题

Q1:cloudflared 显示 "Connection refused"?

检查:① Xray 是否在 localhost:10000 正常监听?ss -tlnp | grep 10000;② config.yml 的 service 端口是否和 Xray 一致;③ Xray 的 tlsSettings 证书文件路径是否正确。

Q2:Tunnel 连接成功但客户端连不上?

检查 CF DNS 是否已自动为 node.yourdomain.com 创建了 CNAME 记录(指向 .cfargotunnel.com);client 端路径是否和 Xray 的 wsSettings.path 一致;TLS 设置是否匹配(Argo Tunnel 边缘已经做了 TLS 终结,client 端 TLS = On)。

Q3:Argo Tunnel 免费额度用完了怎么办?

① 升级到 Argo Pro($0/月,主要是 Fair Use 限制更宽松);② 或者降级到端口回源方案(不花钱且无硬限制);③ 或者在多个 tunnel 之间分摊流量(每个 tunnel 有独立额度)。

Q4:源站 IP 会不会完全泄露?

Argo Tunnel 极大降低了泄露风险,但不是 100% 免疫。以下场景仍可能泄露:① VPS 上跑了其他暴露在公网的服务;② CF tunnel 日志中记录了源站 IP(CF 内部可见);③ 通过历史 DNS 或 IP 关联分析反推出源站。防护措施:VPS 防火墙只开必需端口、关闭非必须服务、定期检查。

Q5:Argo Tunnel 和端口回源能不能混用?

完全可以。一台 VPS 上同时跑 Xray(端口回源)和 cloudflared(Argo Tunnel),作为互相备份。端口回源走普通 CNAME,Argo Tunnel 走 tunnel 域名,客户端订阅里两个都放进去,互相 fallback。

Q6:VLESS+WS-ENC 和普通 VLESS+WS 有什么区别?

-ENC 代表在 WS 层之上还启用了 TLS 加密(即 streamSettings.security = "tls")。在端口回源方案中通常不需要(因为 TLS 由 CF 边缘处理),但在 Argo Tunnel 方案下,由于流量在 VPS 和 CF 之间也有终接点,推荐源站也启用 TLS,形成双端加密,进一步提升安全性。注意:源站启用 TLS 后,客户端 TLS 开关也要打开,并正确配置 SNI。

🔒 安全提示
Argo Tunnel 虽然极大提升了源站安全性,但不是银弹。仍需注意:① VPS 防火墙只放行 SSH 端口(其他端口全部关闭);② 使用 CF Origin CA 证书而非自签,确保证书链完整;③ 定期查看 cloudflared 日志是否有异常连接;④ 订阅链接和 Tunnel 域名一样敏感,不要泄露。

十、总结

VPS + Argo Tunnel + VLESS+WS-ENC 是一套"安全优先"的代理节点方案。源站零端口暴露,通过 cloudflared 守护进程主动和 CF 建立加密隧道,VPS 对公网几乎完全隐身。适合对源站安全要求高、IP 经常变动、CF 代理端口不够用的场景。

和端口回源方案的选择本质上是在安全延迟/性能之间做取舍:Argo Tunnel 多一层隧道封装(延迟略高、免费版有流量限制),但换来了源站隐身和零端口暴露。端口回源更直接、延迟更低、无流量限制,但需要接受源站 IP 的暴露风险和端口限制。

推荐做法是两套方案都掌握,不同场景切换使用,订阅里同时加入两种节点,互为备份。

📋 快速检查清单(Argo Tunnel 方案)
□ 购买海外 VPS(Debian/Ubuntu),防火墙只开 SSH
□ 安装 Xray-core,配置 VLESS+WS-ENC(含 TLS 证书)
□ 安装 cloudflared,执行 cloudflared tunnel login
□ 创建 tunnel,编写 config.yml
□ 执行 tunnel route dns 自动创建 CNAME
□ 启动 cloudflared,验证 tunnel 状态
□ 客户端接入(TLS On,路径、UUID 与源站一致)
□ 访问 ip.sb 确认显示 CF IP
□ 配置优选域名,订阅替换节点地址
□ (进阶)多 VPS 创建多 tunnel,客户端 url-test 负载均衡