如果你有一台海外 VPS,想要搭建一个"CF CDN 加速 + 隐藏源站 + 全球低延迟"的代理节点,这套 VPS + Cloudflare CDN + VLESS over WebSocket 方案是最经典、最成熟的选择之一。
这篇文章从 VPS 上的 VLESS+WS 部署讲起,到 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 上部署 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"
}]
}
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 记录
- CF Dashboard → DNS → Add Record。
- 类型:CNAME,名称:
node(即node.yourdomain.com),目标:填你的 VPS 域名或 A 记录指向 IP。 - 代理状态:☁️ Proxied(橙色)——这是核心,灰色云 = 不走 CF 加速。
- 保存,等待约 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)
五、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 Balancing | CF 云端 | 全自动健康检查,Geo 路由,无需客户端改动 | CF Pro Plan 需 $20/月,Free Plan 不可用 |
| 客户端 url-test | 客户端 | 免费,自动选最快节点,支持多域名 | 依赖客户端实现,首测有延迟 |
| 客户端 load-balance | 客户端 | 多节点同时使用,流量分散 | 部分客户端不支持,调试复杂 |
| DNS 轮询 + 多 CNAME | CF DNS / 权威 DNS | 最简单,不需要额外服务 | 无健康检查,节点挂了客户端才会切 |
6.2 推荐方案:客户端 url-test + 优选域名
这是性价比最高的方案(零成本),适合大多数场景:
- 准备 2-3 台 VPS,各自部署 VLESS+WS,端口/path 保持一致便于统一订阅。
- 每台 VPS 域名解析到 CF,开启 Proxied。
- 在订阅生成脚本里,将每个节点的"地址"字段写成不同的优选域名(如
node1.cfip.dahua1.com、node2.cfip.790017.xyz)。 - 客户端配置里给这组节点打上同一个"组标签",策略设为
url-test,检测 URL 设成http://www.gstatic.com/generate_204,间隔 600s。 - 客户端自动每 10 分钟测一次延迟,自动切换到最快的节点。
6.3 进阶:CF Load Balancing
如果你有 3 台以上的 VPS,且愿意投入 $20/月,CF Load Balancing 是最省心的方案:
- CF Dashboard → DNS → 添加各 VPS 的 A/AAAA 记录,代理状态设为仅 DNS(灰色)。
- Dashboard → Traffic → Load Balancing → Create Load Balancer。
- 创建 Health Monitor:HTTP 协议,端口 80(或你的状态页端口),路径
/,间隔 60s,超时 5s, unhealthy 阈值 3。 - 创建 Pool,把各地 VPS IP 加进来,绑定 Health Monitor。
- 创建 LB:选择你的域名,关联 Pool,策略选 Geo(按地区返回)或 Dynamic Latency(按延迟返回)。
- 将代理域名的 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 防护措施
- VPS 防火墙:只开放 VLESS 监听端口(如 10000),关闭其他所有端口(22、80、443 等),或改 SSH 端口。
- fail2ban:配置 fail2ban 防暴力破解 SSH。
- 禁止直接访问:CF DNS 记录的源站 A/AAAA 记录不对外公布;必要时在 VPS 的防火墙层,只允许 CF 的 IP 段回源(维护成本较高,不推荐普通用户做)。
- 定期更换源站 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 拉取所有节点列表批量生成订阅。
九、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 防火墙放行端口(如 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 负载均衡