如果你有一台海外 VPS,想要搭建一个"CF CDN 加速 + 隐藏源站 + 全球低延迟"的代理节点,这套 VPS + Cloudflare CDN + VLESS over WebSocket 方案是最经典、最成熟的选择之一。

这篇文章从 VPS 上的 VLESS+WS 部署讲起,到 CF 回源配置、优选域名、再到多节点负载均衡的进阶思路,一篇覆盖全流程。

⚠️ 重要提醒
本指南仅用于技术研究与学习用途。部署前请确认你了解并遵守所在地区的相关法律法规。VPS 请选择合规服务商。

一、架构总览

整个系统分为三层,理解这个结构是做后续所有配置的基础:

💡 三层架构
客户端层:Shadowrocket / v2rayN / Hiddify 等,用户输入 CF 域名连接。
CDN 层(Cloudflare):CF 全球 300+ PoP 节点,负责 TLS 终结、WAF、DDoS 防护、智能路由。
源站层(VPS):运行 Xray-core / sing-box,监听 VLESS+WS 端口,处理代理请求。

1.1 数据流向

用户设备
  │
  ▼ (连接最近的 CF PoP)
Cloudflare 全球边缘节点
  │
  ▼ (443 端口回源,TLS 终结后以明文 WS 转发)
VPS(Xray / sing-box 监听 port:10000 path:/ws)
  │
  ▼
目标站点

1.2 与 CF Workers 方案的区别

维度VPS + CF CDN(本方案)CF Workers(如 edgetunnel)
源站成本需购买 VPS($3-10/月)CF Free Plan 免费
带宽上限受 VPS 带宽(通常 1Gbps+)受 CF Free Plan 限制
协议支持Xray 全协议(VLESS/VMess/Trojan/Hysteria2)VLESS/Trojan/SS 为主
源站 IP 暴露风险需注意(CF 橙色云可隐藏,但存在泄露可能)无此风险
维护成本需维护 VPS 和 CF 两处只需 CF 配置
稳定性取决于 VPS 质量,自行掌控依赖 CF 服务稳定性
适用场景长期使用、大流量、需要精确保真临时使用、轻量、快速部署

二、前置条件

  • 一台海外 VPS(Debian 12 / Ubuntu 24.04 推荐),带宽 ≥ 100Mbps,位置建议选:美国西部、香港、东京、新加坡。
  • 一个已托管到 CF DNS 的域名(CF 作为 Nameserver)。
  • VPS 防火墙放行你的 VLESS 监听端口。
  • 一个域名 CF DNS 记录,类型 CNAME,指向你的 VPS 域名或 IP,代理状态设为 Proxied(橙色云朵)
💡 VPS 选择建议
本方案对 VPS 要求不高,1Gbps 带宽的海外 VPS 即可胜任。推荐 DediRock 洛杉矶机房 VPS,年付仅 $9.88,1Gbps 带宽 + 美国原生 IP,三网往返直连延迟低,配合 CF CDN 做回源源站体验很好。如果多节点部署流量消耗大,也可以选 Rabisu 无限流量 VPS,$9.9/年不限月流量,多节点负载均衡也无流量后顾之忧。

三、VPS 上部署 VLESS+WS 源站

3.1 安装 Xray-core

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

# 验证
/usr/local/bin/xray version

3.2 生成 UUID

xray uuid
# 输出示例:90cd4a77-xxxx-xxxx-xxxx-xxxxxxxxxxxx

3.3 写入 config.json

在 VPS 上创建 /usr/local/etc/xray/config.json

{
  "inbounds": [{
    "port": 10000,
    "protocol": "vless",
    "settings": {
      "clients": [{ "id": "你的UUID", "level": 0, "email": "user" }],
      "decryption": "none"
    },
    "streamSettings": {
      "network": "ws",
      "security": "none",
      "wsSettings": {
        "path": "/ws-tunnel"
      }
    }
  }],
  "outbounds": [{
    "protocol": "freedom"
  }]
}
📌 关键参数
port:VPS 监听端口,建议 10000+,避开常用端口。
path:WebSocket 路径,自定义一个不常见的字符串,和 CF、客户端三方保持一致。
security:设为 "none"——TLS 由 CF 在边缘层负责,源站只处理 WS 明文。

3.4 启动与自启

systemctl daemon-reload
systemctl enable --now xray
systemctl status xray

# 确认监听
ss -tlnp | grep 10000

3.5 本地直连测试(绕过 CF)

先不经过 CF,直接用 VPS IP 连接,确保源站正常:

  • 客户端填:地址=VPS的公网IP,端口=10000,传输=ws,路径=/ws-tunnel
  • TLS 关闭。
  • 如能正常上网,说明源站配置正确,进入下一步。

四、Cloudflare 回源配置

4.1 DNS 记录

  1. CF Dashboard → DNS → Add Record
  2. 类型:CNAME,名称:node(即 node.yourdomain.com),目标:填你的 VPS 域名或 A 记录指向 IP。
  3. 代理状态:☁️ Proxied(橙色)——这是核心,灰色云 = 不走 CF 加速。
  4. 保存,等待约 30-60s 生效。

4.2 SSL/TLS 模式

Options:Full(推荐,不校验源站证书)或 Off(源站完全没有 HTTPS 时)。不要在源站真的配自签证书,用 Off 更省心。

4.3 CF 可代理端口

非常重要:CF 只代理以下端口,不在列表中的端口即使 DNS 是橙色云也无法正常访问。

推荐(443 系)可用(80 系)不可用
443 2053
2083 2087
2096 8443
80 8080
8880 2052
2082 2086
2095
22 25
21 3389
8000 8888
3000 5000

4.4 客户端连接参数(CF 域名接入)

地址:    node.yourdomain.com
端口:    443(或 2053/2083 等推荐端口)
UUID:    你在 VPS 生成的 UUID
传输:    ws
路径:    /ws-tunnel
TLS:     Off(如源站完全无 HTTPS)
✅ 验证 CDN 加速生效
客户端接入后,访问 https://ip.sb 查看出口 IP。如果显示 CF 的 IP(104.x / 172.66.x / 2a09:xxxx),说明 CF 回源已生效,源站 IP 对公网不可见。

五、Cloudflare 优选域名

CF 的 Anycast 网络在全球有数百个 PoP,但默认解析到的 IP 不一定是离你最近的。"优选域名"通过自建或使用社区维护的 DNS 服务,针对不同运营商自动返回最优 CF 节点 IP,降低首包延迟。

5.1 常用优选域名列表

优选域名维护者倾向落地区域备注
yg1~yg13.ygkkk.dpdns.org甬哥社区移动→香港 · 电信/联通→日韩/新加坡序号 1-13 可轮换,最常用
cfip.dahua1.com社区维护东亚为主国内访问稳定
cfip.790017.xyz社区维护东亚为主同上
cf.0ups.com社区维护全球均衡美、新节点质量好
cloudflare-ech.com社区维护欧美为主配合 ECH 使用
ip.sb项目官方全球验证当前 CF 出口 IP 用

5.2 优选域名的两种用法

用法一:直接作为客户端连接地址

在客户端"地址"字段填入优选域名(如 node.cfip.dahua1.com),DNS 解析出的是优化过的 CF IP,比直接填域名或 IP 延迟更低。

用法二:订阅中替换所有节点的地址

在订阅生成脚本(如 sing-box / clash 订阅转换)里,把节点的 server 字段批量替换成优选域名,让所有用户自动获得优化 IP。

📌 优选域名注意事项
优选域名由社区或个人维护,不保证永久有效,建议定期备份多种优选源。
单一优选域名挂了不会影响节点使用(CF 自有 DNS 作为降级兜底),只是延迟回到默认 Anycast 水平。
不建议自行搭建优选 DNS 对外提供服务(涉及 CF 条款),个人自用脚本定期更新本地 hosts 即可。

六、多节点负载均衡提速

单节点总有单点故障和单运营商覆盖不足的问题。多节点 + 负载均衡是进阶方向。

6.1 架构模式对比

模式负载均衡位置优点缺点
CF Load BalancingCF 云端全自动健康检查,Geo 路由,无需客户端改动CF Pro Plan 需 $20/月,Free Plan 不可用
客户端 url-test客户端免费,自动选最快节点,支持多域名依赖客户端实现,首测有延迟
客户端 load-balance客户端多节点同时使用,流量分散部分客户端不支持,调试复杂
DNS 轮询 + 多 CNAMECF DNS / 权威 DNS最简单,不需要额外服务无健康检查,节点挂了客户端才会切

6.2 推荐方案:客户端 url-test + 优选域名

这是性价比最高的方案(零成本),适合大多数场景:

  1. 准备 2-3 台 VPS,各自部署 VLESS+WS,端口/path 保持一致便于统一订阅。
  2. 每台 VPS 域名解析到 CF,开启 Proxied。
  3. 在订阅生成脚本里,将每个节点的"地址"字段写成不同的优选域名(如 node1.cfip.dahua1.comnode2.cfip.790017.xyz)。
  4. 客户端配置里给这组节点打上同一个"组标签",策略设为 url-test,检测 URL 设成 http://www.gstatic.com/generate_204,间隔 600s。
  5. 客户端自动每 10 分钟测一次延迟,自动切换到最快的节点。

6.3 进阶:CF Load Balancing

如果你有 3 台以上的 VPS,且愿意投入 $20/月,CF Load Balancing 是最省心的方案:

  1. CF Dashboard → DNS → 添加各 VPS 的 A/AAAA 记录,代理状态设为仅 DNS(灰色)
  2. Dashboard → Traffic → Load Balancing → Create Load Balancer。
  3. 创建 Health Monitor:HTTP 协议,端口 80(或你的状态页端口),路径 /,间隔 60s,超时 5s, unhealthy 阈值 3。
  4. 创建 Pool,把各地 VPS IP 加进来,绑定 Health Monitor。
  5. 创建 LB:选择你的域名,关联 Pool,策略选 Geo(按地区返回)或 Dynamic Latency(按延迟返回)。
  6. 将代理域名的 DNS 记录迁移到 LB 管理(CF 会自动接管)。

6.4 多节点管理工具

  • 3x-UI:单机多入站方案,在一台 VPS 上可以建多条 VLESS+WS 入站,适合做"节点池"。
  • x-ui-yg / sing-box-yg:甬哥一键脚本,一条命令部署,批量生成节点配置。
  • Ansible:多台 VPS 批量推配置,适合有运维基础的用户。
  • 自写订阅生成脚本:在各节点的 xray 状态页拉取在线用户列表,自动拼接 Clash / Sing-box 订阅文件,更新到 CDN。

七、安全与隐藏源站 IP

7.1 源站 IP 泄露风险

即使开启了 CF 橙色云代理,以下几种情况仍可能暴露源站 IP:

  • CF 回源时如果有超时或报错,CF 有时会在响应头里暴露真实 IP。
  • VPS 上跑的其他服务(SSH、Web 服务等)直接暴露在公网。
  • 通过历史 DNS 记录查询(https://securitytrails.com 等工具可以查到 VPS 域名以前的 IP)。

7.2 防护措施

  1. VPS 防火墙:只开放 VLESS 监听端口(如 10000),关闭其他所有端口(22、80、443 等),或改 SSH 端口。
  2. fail2ban:配置 fail2ban 防暴力破解 SSH。
  3. 禁止直接访问:CF DNS 记录的源站 A/AAAA 记录不对外公布;必要时在 VPS 的防火墙层,只允许 CF 的 IP 段回源(维护成本较高,不推荐普通用户做)。
  4. 定期更换源站 IP:VPS 供应商支持换 IP 的,每隔 1-3 个月换一次。

八、常见问题

Q1:Error 1101 是什么?

CF 侧错误,通常由 ① VPS Xray 没启动或端口不对;② CF WAF 规则有阻断;③ 请求超时触发。排查顺序:先不经过 CF 测直连 → 确认通了再开 CF 代理 → 查 CF 防火墙日志。

Q2:连接成功但无法访问外网?

检查 Xray outbound 配置:确保有 "protocol": "freedom" 的出口规则,没有在 outbound 层做了不必要的限制。

Q3:CF 代理状态下客户端显示的 IP 是 CF 的 IP?

这是正常的!VLESS+WS 走 CF CDN 后,对目标网站显示的出口 IP 是 CF 的边缘节点 IP(104.x / 172.66.x / 2a09:xxxx)。如需固定出口 IP,需要自建 ProxyIP(参见第五节点系列之 ProxyIP 篇)。

Q4:CF Queued / Timeout 怎么办?

① 检查源站是否正常响应(回源 IP + 端口直连);② 费率限制(Free Plan 无此问题,但突发流量可能限速);③ 考虑升级到 CF Pro 或调整回源端口。

Q5:多节点同步配置很麻烦,有办法自动化吗?

有的。推荐用 Ansible 多台推送,或者写一个 Python 脚本批量管理(SSH + SCP 推送 config.json)。更省事的是在单台 VPS 上用 3x-UI 创建多入站,再用 API 拉取所有节点列表批量生成订阅。

🔒 安全提示
VPS 防火墙是最后一道防线。即使一切配置正确,也一定要:① 限制 SSH 端口(改默认 22);② 开启 fail2ban;③ UUID 使用强随机值;④ 不在公共场所分享订阅链接;⑤ 定期检查 VPS 是否有未知进程。

九、sing-box 替代方案

xray 是主流选择,但 sing-box(SagerNet 出品的下一代代理内核)近年来增长很快,API 设计更优雅,性能更好,配置格式更清晰:

{
  "inbounds": [{
    "type": "vless",
    "listen": "0.0.0.0",
    "listen_port": 10000,
    "users": [{ "uuid": "你的UUID" }],
    "transport": {
      "type": "ws",
      "path": "/ws-tunnel"
    }
  }],
  "outbounds": [{
    "type": "direct"
  }]
}

sing-box 的 direct outbound 和 xray 的 freedom 作用相同。sing-box 简化版 tui 配置、原生 socks/http inbound 支持都更方便快速部署。推荐感兴趣的同学尝试。

十、总结

VPS + Cloudflare CDN + VLESS+WS 是一套"花小钱办大事"的方案。CF 的免费 CDN 加上你自己控制的 VPS 源站,在稳定性、延迟、带宽上都能达到很高的水平。

核心步骤:VPS 部署 Xray → 配置 VLESS+WS → CF DNS 代理域名 → 客户端接入 → 多节点 url-test 负载均衡,整个流程熟练后约 20 分钟。推荐优先采用 客户端 url-test + 优选域名作为多节点加速方案(零成本),有预算后再考虑 CF Load Balancing。

📋 快速检查清单
□ 购买海外 VPS(Debian/Ubuntu),记录 IP
□ VPS 防火墙放行端口(如 10000)
□ 安装 Xray-core,生成 UUID
□ 配置 config.json(VLESS+WS,path 自定义)
□ 客户端直连 VPS IP 测试源站
□ CF 添加 CNAME 记录(Proxied 橙色)
□ CF SSL/TLS 设为 Off 或 Full
□ 客户端用 CF 域名接入,确认 CDN 生效(ip.sb 查出口 IP)
□ 配置优选域名,替换节点地址
□ (进阶)多 VPS 创建多节点,客户端 url-test 负载均衡