Cloudflare 优选 IP / 优选域名:原理 + 实操 + 避坑
把节点套上 Cloudflare CDN 之后,速度往往比直连还慢——因为 CF 默认分配给你的 IP 不一定离你近。这时候就需要”优选”:从 CF 的几千个 IP 里挑出对你这条线路最快的几个,让客户端只连这些 IP。
但”优选”这个词在社区里被用得很乱,官方优选 IP / 反代优选 IP / 优选域名 是三个不同的东西。这篇先把概念分清楚,再给操作流程。
一、三种”优选”的区别
挑 CF 自家 IP] Q -->|别人 VPS 的反代 IP| R[反代优选
挑别人架的反代] Q -->|一个域名| D[优选域名
域名背后是一堆 IP] O --> CF[Cloudflare CDN] R --> VPS[云厂商 VPS
跑着 Nginx 反代] --> CF D --> X{解析出的是?} X -->|官方 IP| CF X -->|反代 IP| VPS CF --> S[你的源站 VPS] VPS --> CF
| 类型 | 入口 IP 来源 | 端口要求 | 稳定性 |
|---|---|---|---|
| 官方优选 IP | Cloudflare 自家 IP 段 | 13 个端口通吃(80/443/2052/…) | 最稳 |
| 反代优选 IP | 别人 VPS 跑反代的 IP | IP 和端口强绑定,扫到啥端口用啥 | 一般,反代主人随时可能停 |
| 优选域名 | 大厂域名解析出来的 IP | 看域名后面挂的是官方 IP 还是反代 IP | 取决于背后 |
💡 关键认知:CF CDN → 你的源站这一段路由是固定的,优选只能优化”你 → CF 入口”这一段。
二、CF 官方 IP 段
所有 CF 公网 IP 的完整列表:
https://www.cloudflare.com/ips/主要是这几个段(IPv4):
173.245.48.0/20103.21.244.0/22103.22.200.0/22103.31.4.0/22141.101.64.0/18108.162.192.0/18190.93.240.0/20188.114.96.0/20197.234.240.0/22198.41.128.0/17162.158.0.0/15104.16.0.0/13104.24.0.0/14172.64.0.0/13131.0.72.0/22任意 CF 官方 IP 都能做你域名的入口(前提是你的域名套了 CF CDN)。
三、官方优选 IP 实操
3.1 用 CloudflareSpeedTest
https://github.com/XIU2/CloudflareSpeedTest下载对应平台的二进制(Windows/macOS/Linux 都有)。基本用法:
# Linux / macOS./CloudflareST
# Windows.\CloudflareST.exe常用参数:
| 参数 | 含义 |
|---|---|
-n 200 | 延迟测试线程数(默认 200) |
-t 4 | 每个 IP 测延迟次数 |
-dn 10 | 下载测速数量(最快的几个进入下载阶段) |
-dt 10 | 下载测速时间(秒) |
-tl 200 | 平均延迟上限(ms),超过的不要 |
-tll 40 | 平均延迟下限(避免数据中心间假快) |
-tlr 0.2 | 丢包率上限 |
-p 10 | 输出前 N 个结果 |
-f ip.txt | 指定 IP 段文件 |
-o result.csv | 输出 CSV |
实战示例:
# 标准跑法./CloudflareST -n 500 -t 4 -dn 20 -dt 10 -tl 200 -tll 40
# 限定国家段(手动准备 ip.txt 只放某个段的)./CloudflareST -f ip.txt -p 10 -o result.csv跑完输出 IP 列表 + 延迟 + 下载速度。把最快的几个填到你的客户端节点配置里替换 CDN 入口域名。
3.2 输出示例
IP 地址 已发送 已接收 丢包率 平均延迟 下载速度 (MB/s)104.20.157.18 4 4 0.00 35.21 12.45172.67.128.45 4 4 0.00 38.10 10.21104.18.32.99 4 4 0.00 41.50 9.873.3 写进客户端
把 CF 入口 IP 写到节点 server 字段:
# mihomo 节点示例proxies: - name: CF-Fast type: vless server: 104.20.157.18 # ← 优选出来的 IP port: 443 uuid: your-uuid-here tls: true servername: your-cdn-domain.com # ← 真实的 CDN 域名(SNI 不能改) network: ws ws-opts: path: /your-path headers: Host: your-cdn-domain.com🪤 核心:
server换成优选 IP,但servername(SNI)和Host头必须保留原域名——否则 CF 不知道你要访问哪个域名。
四、反代优选 IP 是什么
反代优选 IP 是别人的 VPS 在帮你”转发到 Cloudflare”:
- 某人在云厂商(甲骨文 / AWS / 阿里 / 腾讯)开了台 VPS
- 在上面架了 Nginx,把
443→ 转发到一个 CF 域名 - 你通过扫描发现”这台 VPS 的 IP + 这个端口可以当 CF 入口”
- 你把它当 CF 入口 IP 用
特征:
- IP 常见
8.x.x.x、47.x.x.x这类常见云厂商段 - IP 和端口强绑定:扫到 443 就只能用 443
- 稳定性差:反代主人随时可能关掉 / 改配置
⚠️ 反代 IP 本质是”借用别人的带宽”,不建议长期依赖。商业行为甚至涉及法律风险,玩玩可以,重要服务不要押宝在这上面。
五、优选域名
优选域名不是新技术,是用域名打包一堆 IP。
5.1 类型 A:解析为 CF 官方 IP
典型的”大厂套 CF 域名”,比如某些跨国公司用了 CF:
visa.com ← 解析出来是 CF 官方 IPwto.org ← 同上用法:
- 客户端
server字段填这个大厂域名 servername/Host仍然填你自己的 CDN 域名
效果跟”官方优选 IP”等价,只是入口换成了”这个域名当前解析到的 CF 官方 IP”。
5.2 类型 B:解析为一堆反代 IP
域名的 A 记录是一池子反代 VPS 的 IP:
cdn-fast.example.com A 8.1.2.3cdn-fast.example.com A 47.4.5.6cdn-fast.example.com A 103.7.8.9客户端每次连接,DNS 轮询选一个。两个关键注意点:
- IP 地区要尽量一致:如果日本/新加坡/美国混在一起,每次连可能国家在跳,敏感站会风控。
- 所有 IP 的端口要统一:如果节点写 443,A 记录里每个 IP 都必须在 443 上跑有效反代。
5.3 优选域名列表
社区维护的现成列表:
https://www.wetest.vip/page/cloudflare/cname.html里面给了一堆”扫好的”域名,标注了对应的运营商 / 地区。
六、DNS 知识补课:一域名多 IP 是怎么实现的
理解优选域名要先理解 DNS 多记录:
cdn.example.com A 1.1.1.1cdn.example.com A 2.2.2.2cdn.example.com A 3.3.3.3DNS 解析时一次返回所有 IP,客户端选一个连(不同系统策略不同:轮询、按顺序、最快)。
也可以 IPv4 + IPv6 同时挂:
cdn.example.com A 1.1.1.1cdn.example.com AAAA 2400:xxxx::xxx或者用 CNAME 指向另一个域名,间接拥有一堆 IP:
cdn.example.com CNAME fast-pool.cdn-provider.xyzfast-pool.cdn-provider.xyz 下面挂着十几个 IP,由 CDN 提供方维护。
七、自动化:定时优选 + 自动写回 DNS
进阶玩法:用脚本定时跑 CloudflareST,把 Top N 的 IP 写到自己 CF 域名的 A 记录里:
#!/usr/bin/env bashset -e
# 1. 跑优选./CloudflareST -n 500 -t 4 -dn 10 -dt 10 -tl 200 -p 5 -o result.csv
# 2. 解析前 5 个 IPIPS=$(awk -F, 'NR>1 {print $1}' result.csv | head -5)
# 3. 调 CF API 把这些 IP 写到 DNS(伪代码)for ip in $IPS; do curl -X POST "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records" \ -H "Authorization: Bearer $CF_TOKEN" \ -H "Content-Type: application/json" \ --data '{"type":"A","name":"fast","content":"'$ip'","ttl":120,"proxied":false}'done挂到 cron:
0 4 * * * /path/to/auto-optimize.sh > /var/log/cf-optimize.log 2>&1每天凌晨 4 点重新优选 + 更新 DNS。
⚠️ 这个脚本是示意,实际需要先清除旧 A 记录再加新的。CF API 文档:Cloudflare API Docs
八、踩坑清单
| 现象 | 原因 | 解决 |
|---|---|---|
| 优选完速度反而更慢 | servername/Host 没保留原域名 | 改回原域名 |
| 测的快用起来慢 | CF IP 是数据中心的 anycast,测速好但实际可能绕远路 | 多测几次 + 看下载速度而不只看延迟 |
| 反代 IP 用着用着失效 | 反代主人停了/改了 | 找新的,或转回官方 IP |
| 优选域名忽快忽慢 | A 记录里 IP 来自不同地区 | 选地区一致的 |
| 公司网/校园网测不准 | 公网出口走的代理/CDN | 用家庭网络测,或者用 VPS 测 |
| CF 反 DDoS 时优选 IP 全废 | CF 紧急情况下会临时切流 | 等几小时 |
九、几条实用经验
- 测速看下载速度,不只看延迟——延迟 30ms 但下载只有 200KB/s 的 IP 没意义。
-tll 40加上:CF 数据中心之间偶尔会出现 < 10ms 的”假延迟”,但实际拉不动文件,过滤掉。- 优选 IP 别贪多:写 3-5 个就够,客户端会自动选最快的。
- 官方 IP > 反代 IP:稳定性差太多,重要服务永远首选官方。
- 不同时段测速结果不一样:晚上 8-11 点高峰期测最准。
- CF Workers/Pages 加速不需要优选:它们走的是 Cloudflare 自己的边缘网络,比走 CDN 入口更快。
把这套理解透,你的 CF 节点速度就能跑满线路带宽,不再受默认 IP 的限制。