实测 Cloudflare:从 DNS、CDN 到 Tunnel 的配置体验与常用命令整理
Cloudflare 测评报告|附完整命令
Cloudflare 是当前全球使用最广泛的网络基础设施服务商之一,核心产品覆盖 DNS 解析、CDN 加速、DDoS 防护、WAF Web 应用防火墙、Zero Trust、Cloudflare Tunnel、Workers 边缘计算、R2 对象存储 等多个方向。对于个人站长、中小型企业、跨境业务、SaaS 服务以及开发者而言,Cloudflare 往往是一个“低成本快速提升网站可用性、安全性和访问体验”的解决方案。
本文将从实际使用角度,对 Cloudflare 的主要功能、配置流程、性能表现、安全能力、适用场景和注意事项进行系统测评,并附上常用检测与部署命令,方便读者直接复现测试过程。
一、测评环境说明
为了尽量保证测评结果具有参考价值,本文假设的测试环境如下:
| 项目 | 说明 |
|---|---|
| 域名 | 已接入 Cloudflare 托管 DNS |
| 源站服务器 | Linux VPS,Ubuntu 22.04 |
| Web 服务 | Nginx |
| 测试协议 | HTTP / HTTPS |
| 测试地区 | 中国大陆、香港、新加坡、美国、欧洲等节点 |
| Cloudflare 套餐 | Free / Pro 功能均有涉及,重点以 Free 可用功能为主 |
| 测试工具 | curl、dig、ping、traceroute、mtr、openssl、ab、wrk、cloudflared |
需要说明的是,Cloudflare 的实际访问效果会受到多方面因素影响,例如:访问者所在网络运营商、源站线路质量、DNS 解析策略、Cloudflare 边缘节点负载、网站缓存配置、是否开启 WAF 等。因此本文更偏向于“配置方法与测试思路”,而不是给出一个绝对固定的性能结论。
二、Cloudflare 核心能力概览
Cloudflare 的优势不只是 CDN,而是一个完整的边缘网络平台。常见能力包括:
-
DNS 托管
- 解析速度快;
- 支持 DNSSEC;
- 支持 CNAME Flattening;
- 可通过 API 自动化管理解析记录。
-
CDN 加速
- 静态资源缓存;
- 全球边缘节点分发;
- 支持 Cache Rules 自定义缓存策略;
- 可减少源站带宽压力。
-
HTTPS 与证书管理
- 免费提供边缘 HTTPS;
- 支持 Full、Full Strict 模式;
- 可签发 Origin Certificate 用于源站加密。
-
DDoS 防护
- 默认具备基础 DDoS 防护能力;
- 可通过安全级别、挑战模式、规则进行加强。
-
WAF 防护
- 可防御常见 Web 攻击;
- 包括 SQL 注入、XSS、恶意爬虫等;
- 付费套餐能力更完整。
-
Cloudflare Tunnel
- 无需公网 IP 即可暴露内网服务;
- 适合家庭服务器、内网面板、开发测试环境;
- 可与 Zero Trust Access 结合进行身份认证。
-
Workers 边缘计算
- 在 Cloudflare 边缘节点运行 JavaScript / TypeScript;
- 可实现请求转发、API 网关、A/B 测试、边缘鉴权等。
-
R2 对象存储
- 类似 S3 的对象存储;
- 免出口流量费用是其重要特点;
- 可与 Workers、Pages 等服务组合使用。
三、域名接入 Cloudflare 流程
1. 添加站点
进入 Cloudflare 控制台,添加你的域名。Cloudflare 会自动扫描已有 DNS 记录,例如:
A记录;AAAA记录;CNAME记录;MX邮件记录;TXT验证记录。
添加完成后,需要将域名注册商处的 NS 服务器修改为 Cloudflare 提供的 NS。
2. 检查 NS 是否生效
修改 NS 后,全球 DNS 生效一般需要几分钟到 48 小时不等。可以使用以下命令检测:
dig NS example.com
也可以指定公共 DNS 查询:
dig @8.8.8.8 NS example.com
dig @1.1.1.1 NS example.com
dig @223.5.5.5 NS example.com
如果返回结果中出现 Cloudflare 的 nameserver,例如:
anna.ns.cloudflare.com
ivan.ns.cloudflare.com
说明域名已经正确接入。
四、DNS 解析测评
Cloudflare DNS 的响应速度通常表现不错,尤其是在国际网络环境中。我们可以使用 dig 测试解析延迟。
1. 查询 A 记录
dig example.com A
2. 查询解析耗时
dig example.com A | grep "Query time"
示例输出:
;; Query time: 12 msec
3. 对比不同公共 DNS
dig @1.1.1.1 example.com A | grep "Query time"
dig @8.8.8.8 example.com A | grep "Query time"
dig @223.5.5.5 example.com A | grep "Query time"
dig @114.114.114.114 example.com A | grep "Query time"
4. 查看是否命中 Cloudflare
如果 DNS 记录开启了橙色云朵代理,解析出来的 IP 一般会是 Cloudflare 的边缘 IP,而不是源站真实 IP。
dig example.com A +short
可以继续使用 whois 检查 IP 归属:
whois 104.21.1.1 | grep -i cloudflare
如果结果中包含 Cloudflare,说明当前域名流量已经经过 Cloudflare 代理。
五、HTTPS 配置测评
Cloudflare 提供多种 SSL/TLS 模式:
| 模式 | 说明 | 推荐程度 |
|---|---|---|
| Off | 不启用 HTTPS | 不推荐 |
| Flexible | 用户到 Cloudflare 是 HTTPS,Cloudflare 到源站是 HTTP | 不推荐 |
| Full | 用户到 Cloudflare、Cloudflare 到源站均可加密,但不严格校验证书 | 一般 |
| Full Strict | 全链路 HTTPS,且严格校验证书 | 推荐 |
实际生产环境建议使用 Full Strict。
1. 检查 HTTPS 证书
curl -I https://example.com
查看响应头是否正常返回:
HTTP/2 200
2. 使用 OpenSSL 检查证书链
openssl s_client -connect example.com:443 -servername example.com
如果只想看证书信息,可以执行:
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -issuer -subject -dates
3. 检查 HTTP/2 支持
curl -I --http2 https://example.com
4. 检查 HTTP/3 支持
如果本地 curl 支持 HTTP/3,可执行:
curl -I --http3 https://example.com
如果命令报错,说明本地 curl 可能没有编译 HTTP/3 支持,不一定代表 Cloudflare 未开启 HTTP/3。
六、CDN 缓存能力测评
Cloudflare 的缓存能力是其核心优势之一。默认情况下,Cloudflare 主要缓存静态资源,例如:
- 图片:
.jpg、.png、.webp、.gif; - CSS:
.css; - JavaScript:
.js; - 字体文件:
.woff、.woff2; - 视频或压缩包等部分静态资源。
动态 HTML 默认通常不缓存,除非配置 Cache Rules。
1. 查看缓存状态
使用 curl 查看响应头:
curl -I https://example.com/static/logo.png
重点关注:
CF-Cache-Status: HIT
常见状态包括:
| 状态 | 含义 |
|---|---|
| HIT | 命中缓存 |
| MISS | 未命中缓存,从源站拉取 |
| EXPIRED | 缓存过期,重新拉取 |
| BYPASS | 被规则绕过缓存 |
| DYNAMIC | 动态内容,未缓存 |
| REVALIDATED | 重新验证缓存 |
2. 连续请求测试
for i in {1..5}; do
curl -I https://example.com/static/logo.png | grep -E "CF-Cache-Status|Age|Server"
echo "-----"
done
如果第一次是 MISS,后续变成 HIT,说明缓存生效。
3. 测试 TTFB
curl -o /dev/null -s -w "DNS解析: %{time_namelookup}s\n连接耗时: %{time_connect}s\nTLS握手: %{time_appconnect}s\n首字节: %{time_starttransfer}s\n总耗时: %{time_total}s\n" https://example.com/
对比开启和关闭 Cloudflare 代理前后的 TTFB,可以观察 Cloudflare 对不同地区访问的影响。
4. 清理缓存
在 Cloudflare 控制台可以点击 Purge Cache。也可以通过 API 清理缓存。
清理全部缓存
curl -X POST "https://api.cloudflare.com/client/v4/zones/ZONE_ID/purge_cache" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
--data '{"purge_everything":true}'
清理指定 URL
curl -X POST "https://api.cloudflare.com/client/v4/zones/ZONE_ID/purge_cache" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
--data '{"files":["https://example.com/static/logo.png"]}'
七、源站隐藏与真实 IP 保护
使用 Cloudflare 代理后,访问者看到的是 Cloudflare 边缘节点 IP,而不是源站 IP。这对源站安全很重要,但前提是源站不能被其他方式暴露。
1. 检查域名解析 IP
dig example.com A +short
2. 检查源站是否仍可直连
如果你知道源站 IP,例如 1.2.3.4,可以测试:
curl -I http://1.2.3.4
curl -I https://1.2.3.4
如果源站 IP 可直接访问,攻击者仍可能绕过 Cloudflare 直接攻击源站。因此建议在源站防火墙中只允许 Cloudflare IP 段访问 80/443 端口。
3. 获取 Cloudflare IP 段
curl https://www.cloudflare.com/ips-v4
curl https://www.cloudflare.com/ips-v6
4. 使用 UFW 放行 Cloudflare IP
先默认拒绝外部访问:
sudo ufw default deny incoming
sudo ufw default allow outgoing
放行 SSH,避免失联:
sudo ufw allow 22/tcp
放行 Cloudflare IPv4:
for ip in $(curl -s https://www.cloudflare.com/ips-v4); do
sudo ufw allow from $ip to any port 80 proto tcp
sudo ufw allow from $ip to any port 443 proto tcp
done
放行 Cloudflare IPv6:
for ip in $(curl -s https://www.cloudflare.com/ips-v6); do
sudo ufw allow from $ip to any port 80 proto tcp
sudo ufw allow from $ip to any port 443 proto tcp
done
启用 UFW:
sudo ufw enable
sudo ufw status numbered
注意:如果你的 SSH 端口不是 22,请务必先放行对应端口,否则可能无法远程连接服务器。
八、Nginx 配合 Cloudflare 获取真实访客 IP
默认情况下,Nginx 看到的访问 IP 是 Cloudflare 边缘节点 IP。如果需要记录真实访客 IP,需要配置 real_ip_header。
1. 创建 Cloudflare IP 配置文件
sudo nano /etc/nginx/conf.d/cloudflare-real-ip.conf
写入以下内容:
real_ip_header CF-Connecting-IP;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 104.16.0.0/13;
set_real_ip_from 104.24.0.0/14;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2a06:98c0::/29;
set_real_ip_from 2c0f:f248::/32;
2. 测试并重载 Nginx
sudo nginx -t
sudo systemctl reload nginx
3. 查看访问日志
tail -f /var/log/nginx/access.log
如果配置正确,日志中应显示真实访客 IP,而不是 Cloudflare 节点 IP。
九、WAF 与安全策略测评
Cloudflare 的安全能力是很多用户接入的重要原因。即使是免费套餐,也可以使用基础防护、Bot Fight Mode、IP 规则、国家/地区限制等功能。
1. 常见安全配置建议
建议开启或配置:
- SSL/TLS 使用 Full Strict;
- Always Use HTTPS;
- Automatic HTTPS Rewrites;
- HTTP Strict Transport Security,谨慎开启;
- Bot Fight Mode;
- Security Level 设置为 Medium;
- WAF Custom Rules;
- Rate Limiting,视业务需求开启。
2. 使用 curl 模拟恶意请求
以下命令仅用于测试 WAF 是否有基础拦截效果:
curl -I "https://example.com/?id=1%27%20OR%20%271%27=%271"
模拟 XSS 参数:
curl -I "https://example.com/?q="
如果配置了相关 WAF 规则,可能会返回:
403 Forbidden
或出现 Cloudflare Challenge 页面。
3. 创建简单防护规则思路
例如:拦截包含明显 SQL 注入特征的请求参数,可在 Cloudflare 控制台中配置 Custom Rules:
(http.request.uri.query contains "union select")
or
(http.request.uri.query contains "' or '1'='1")
or
(http.request.uri.query contains "sleep(")
动作选择:
Block
不过需要注意,过于粗暴的规则可能误伤正常用户,建议先使用 Log 或 Managed Challenge 观察效果。
十、性能压测与对比
Cloudflare 对性能的影响不能简单地说“一定变快”或“一定变慢”。对于距离源站较远的用户,Cloudflare 往往能缩短访问链路;对于源站本身就在用户附近、且动态内容较多的站点,Cloudflare 可能带来额外代理开销。
1. 使用 ab 测试
安装 Apache Bench:
sudo apt update
sudo apt install apache2-utils -y
测试并发请求:
ab -n 1000 -c 50 https://example.com/
参数说明:
-n 1000:总请求数 1000;-c 50:并发数 50。
重点关注:
Requests per second
Time per request
Transfer rate
2. 使用 wrk 测试
安装 wrk:
sudo apt update
sudo apt install wrk -y
执行测试:
wrk -t4 -c100 -d30s https://example.com/
参数说明:
-t4:4 个线程;-c100:100 个连接;-d30s:持续 30 秒。
3. 测试静态资源缓存后的性能
wrk -t4 -c100 -d30s https://example.com/static/logo.png
如果资源已被 Cloudflare 缓存,理论上源站压力会明显降低。
4. 查看源站负载
top
或使用:
htop
如果未安装:
sudo apt install htop -y
同时查看 Nginx 连接:
ss -antp | grep nginx
十一、Cloudflare Tunnel 测评
Cloudflare Tunnel 是非常实用的功能,可以让没有公网 IP 的服务通过 Cloudflare 暴露到公网,同时避免直接开放源站端口。
1. 安装 cloudflared
Ubuntu / Debian 可使用:
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb
检查版本:
cloudflared version
2. 登录 Cloudflare
cloudflared tunnel login
执行后会打开一个链接,选择对应域名授权。
3. 创建 Tunnel
cloudflared tunnel create my-tunnel
4. 创建配置文件
sudo mkdir -p /etc/cloudflared
sudo nano /etc/cloudflared/config.yml
示例配置:
tunnel: my-tunnel
credentials-file: /root/.cloudflared/你的隧道ID.json
ingress:
- hostname: app.example.com
service: http://localhost:8080
- service: http_status:404
5. 添加 DNS 路由
cloudflared tunnel route dns my-tunnel app.example.com
6. 运行 Tunnel
cloudflared tunnel run my-tunnel
7. 安装为系统服务
sudo cloudflared service install
sudo systemctl enable cloudflared
sudo systemctl start cloudflared
sudo systemctl status cloudflared
Cloudflare Tunnel 的优点是部署简单、安全性较好,非常适合内网服务、开发环境、家庭实验室等场景。但如果业务对延迟极其敏感,仍需实测后再决定是否长期使用。
十二、Cloudflare Workers 简单测评
Workers 是 Cloudflare 的边缘计算平台,可在全球边缘节点执行代码。它非常适合做轻量 API、请求重写、边缘缓存、反向代理等。
1. 安装 Wrangler
npm install -g wrangler
检查版本:
wrangler --version
2. 登录 Cloudflare
wrangler login
3. 创建 Worker 项目
npm create cloudflare@latest my-worker
进入目录:
cd my-worker
4. 本地运行
npm run dev
或:
wrangler dev
5. 部署 Worker
wrangler deploy
6. 示例 Worker 代码
export default {
async fetch(request, env, ctx) {
return new Response("Hello from Cloudflare Workers!", {
headers: {
"content-type": "text/plain;charset=UTF-8",
},
});
},
};
Workers 的优势是部署快、扩展性强、无需维护服务器。但免费额度、CPU 时间、请求数量等限制需要根据实际业务评估。
十三、Cloudflare R2 对象存储测评
R2 是 Cloudflare 推出的对象存储服务,兼容 S3 API,其最大亮点是免出口流量费。对于图床、静态资源分发、备份文件、下载站等场景较有吸引力。
1. 安装 AWS CLI
sudo apt update
sudo apt install awscli -y
2. 配置 R2 凭据
aws configure
依次输入:
AWS Access Key ID
AWS Secret Access Key
Default region name
Default output format
R2 的 region 可以填写:
auto
3. 上传文件到 R2
aws s3 cp ./test.jpg s3://your-bucket/test.jpg \
--endpoint-url https://YOUR_ACCOUNT_ID.r2.cloudflarestorage.com
4. 查看 Bucket 文件
aws s3 ls s3://your-bucket \
--endpoint-url https://YOUR_ACCOUNT_ID.r2.cloudflarestorage.com
5. 下载文件
aws s3 cp s3://your-bucket/test.jpg ./test-download.jpg \
--endpoint-url https://YOUR_ACCOUNT_ID.r2.cloudflarestorage.com
R2 如果绑定自定义域名并配合 Cloudflare CDN,可以获得较好的静态资源分发体验。
十四、优点总结
综合使用体验来看,Cloudflare 的主要优点包括:
-
免费套餐可用性高
- 对个人站长和小型项目非常友好;
- DNS、CDN、基础防护、SSL 等功能已足够入门使用。
-
全球网络覆盖广
- 对跨境访问、海外用户访问有明显帮助;
- 静态资源缓存后可减少源站压力。
-
安全能力强
- DDoS 防护、WAF、Bot 防护、访问规则等功能丰富;
- 可隐藏源站 IP,降低直接攻击风险。
-
生态完整
- Workers、Pages、R2、Tunnel、Zero Trust 可以组成完整云原生平台;
- 很多场景无需传统服务器即可完成部署。
-
自动化能力好
- API 文档完善;
- 支持 Terraform、Wrangler、cloudflared 等工具链。
十五、缺点与注意事项
Cloudflare 并非所有场景都完美,也有一些需要注意的地方:
-
中国大陆访问不一定稳定
- 免费套餐在中国大陆访问效果受网络环境影响较大;
- 某些地区可能出现延迟高、丢包或节点绕路。
-
动态网站加速有限
- 如果页面无法缓存,Cloudflare 只是代理转发;
- 动态请求仍然依赖源站性能。
-
配置不当可能导致问题
- Flexible SSL 容易引起重定向循环;
- 缓存规则错误可能缓存用户敏感页面;
- WAF 规则过严可能误伤正常访问者。
-
源站 IP 仍可能泄露
- 历史 DNS 记录、邮件服务、子域名、证书透明日志等都可能暴露源站;
- 接入 Cloudflare 后仍需配置源站防火墙。
-
部分高级功能需要付费
- 更完整的 WAF、缓存分析、Argo Smart Routing、Load Balancing 等通常需要付费套餐。
十六、推荐配置方案
对于一般网站,推荐如下配置:
DNS
- 主站
A/CNAME开启橙色云朵; - 邮件相关记录不要开启代理;
- 不需要代理的 API 或特殊服务使用灰色云朵。
SSL/TLS
- 使用 Full Strict;
- 开启 Always Use HTTPS;
- 开启 Automatic HTTPS Rewrites;
- HSTS 谨慎开启,确认全站 HTTPS 无误后再启用。
缓存
- 静态资源设置较长缓存时间;
- HTML 页面根据业务决定是否缓存;
- 后台、登录、支付、用户中心等路径必须绕过缓存。
安全
- 开启 Bot Fight Mode;
- 设置合理 WAF 规则;
- 对后台路径增加访问限制;
- 源站防火墙仅允许 Cloudflare IP 访问 80/443。
源站
- 配置真实 IP;
- 定期更新 Cloudflare IP 段;
- 使用有效证书;
- 保持系统和 Web 服务更新。
十七、最终结论
Cloudflare 是一款非常成熟且功能全面的网络基础设施平台。对于个人站长,它可以免费提供 DNS、HTTPS、CDN 和基础安全防护;对于企业用户,它可以进一步提供 WAF、Zero Trust、负载均衡、边缘计算和对象存储等能力。
从测评结果看,Cloudflare 最适合以下场景:
- 需要隐藏源站 IP;
- 需要基础 DDoS 和 Web 防护;
- 静态资源较多的网站;
- 面向全球用户的网站;
- 希望降低服务器带宽压力;
- 需要快速部署内网穿透或边缘函数;
- 希望通过低成本方式提升网站可靠性。
但如果你的主要用户集中在中国大陆,尤其是对访问延迟和稳定性要求很高的商业项目,建议务必进行多地区、多运营商实测。Cloudflare 免费套餐并不能保证中国大陆访问一定优秀,必要时可结合国内 CDN、海外优质线路服务器或多 CDN 调度方案。
总体来说,Cloudflare 的综合性价比非常高。只要正确配置 SSL、缓存、安全规则和源站防火墙,它可以显著提升网站的安全性、可用性和运维效率,是值得长期使用和深入研究的基础设施平台。