Cloudflare 实测手记:从接入配置到测速排障,一篇搞定常用命令
Cloudflare 测评报告|附完整命令
本文面向站长、开发者、运维工程师以及需要为网站接入 CDN、安全防护、DNS 解析、对象存储或 Zero Trust 服务的团队。文章将从产品能力、实际体验、性能测试、安全防护、成本结构、适用场景与注意事项等角度,对 Cloudflare 进行较为完整的测评,并附上常用测试命令,方便读者自行复现。
一、Cloudflare 简介
Cloudflare 是全球知名的边缘网络与安全服务提供商,核心产品包括:
- CDN 内容分发网络
- DNS 托管与解析
- DDoS 防护
- WAF Web 应用防火墙
- SSL/TLS 证书管理
- Zero Trust 零信任访问
- Cloudflare Tunnel 内网穿透
- Workers 边缘计算
- Pages 静态站点托管
- R2 对象存储
- Turnstile 人机验证
- Stream 视频分发
- Magic Transit 企业网络防护
对于普通网站而言,Cloudflare 最常见的使用方式是将域名 NS 服务器切换到 Cloudflare,然后开启代理模式,也就是大家熟悉的“小橙云”。开启代理后,用户访问网站时,请求会先到达 Cloudflare 边缘节点,再由 Cloudflare 回源到源站服务器。
它的价值主要体现在三个方面:
- 加速访问:通过全球节点缓存静态资源,缩短用户访问路径。
- 增强安全:隐藏源站 IP,抵御 DDoS、恶意扫描和常见 Web 攻击。
- 降低运维成本:免费 DNS、免费 SSL、自动证书续期、基础防护免费可用。
二、测试环境说明
为了尽量让测试结果具有参考价值,本文假设使用如下环境进行测评。
| 项目 | 配置 |
|---|---|
| 源站服务器 | 2 核 2G 云服务器 |
| 系统 | Ubuntu 22.04 LTS |
| Web 服务 | Nginx |
| 测试网站 | 静态页面 + 少量 API 接口 |
| 域名解析 | Cloudflare DNS |
| CDN 模式 | Proxied,小橙云开启 |
| SSL 模式 | Full strict |
| 测试终端 | Linux / macOS / Windows WSL 均可 |
| 测试工具 | curl、dig、ping、mtr、traceroute、wrk、ab、openssl |
需要说明的是,Cloudflare 的访问效果与地区、运营商、目标节点、源站位置和网站内容类型都有关系。特别是中国大陆访问 Cloudflare 免费版节点时,表现可能波动较大。因此本文更侧重于方法和实际使用感受,而不是给出一个绝对结论。
三、接入 Cloudflare 的基础流程
1. 添加站点
登录 Cloudflare 后,点击 Add a site,输入自己的域名,例如:
example.com
Cloudflare 会扫描当前 DNS 记录,并要求你将域名注册商处的 NS 服务器改为 Cloudflare 提供的地址,例如:
abby.ns.cloudflare.com
jack.ns.cloudflare.com
修改完成后,一般几分钟到数小时内生效。
2. 添加 DNS 记录
常见记录如下:
| 类型 | 名称 | 内容 | 代理状态 |
|---|---|---|---|
| A | @ | 源站 IPv4 | Proxied |
| A | www | 源站 IPv4 | Proxied |
| AAAA | @ | 源站 IPv6 | Proxied |
| CNAME | cdn | example.com | Proxied |
| MX | @ | 邮件服务商地址 | DNS only |
注意:
邮件相关记录,如 MX、SPF、DKIM、DMARC,通常不要开启代理,应保持 DNS only。
3. 配置 SSL/TLS
推荐设置为:
SSL/TLS encryption mode: Full strict
不要长期使用 Flexible 模式。Flexible 模式下,访客到 Cloudflare 是 HTTPS,但 Cloudflare 到源站可能是 HTTP,容易造成安全风险和跳转循环问题。
如果源站没有证书,可以使用 Cloudflare Origin Certificate。
四、常用检测命令
下面是本文重点部分,整理一套完整常用命令,方便你对 Cloudflare 接入后的 DNS、网络、HTTPS、缓存、性能和安全策略进行测试。
五、DNS 解析测试
1. 查看域名 NS 是否切换成功
dig NS example.com +short
预期结果类似:
abby.ns.cloudflare.com.
jack.ns.cloudflare.com.
如果仍然显示原服务商的 NS,说明域名还没有完全切换成功。
2. 查看 A 记录解析结果
dig A example.com +short
开启小橙云后,返回的通常不是你的源站 IP,而是 Cloudflare 的边缘节点 IP。
3. 查看 AAAA 记录
dig AAAA example.com +short
如果开启了 IPv6 兼容,通常会返回 Cloudflare 的 IPv6 地址。
4. 指定 DNS 服务器查询
使用 Cloudflare DNS 查询:
dig @1.1.1.1 example.com A +short
使用 Google DNS 查询:
dig @8.8.8.8 example.com A +short
使用国内公共 DNS 查询:
dig @223.5.5.5 example.com A +short
通过多个 DNS 查询结果,可以观察解析是否在不同地区或不同 DNS 服务商处已经生效。
5. 查看完整 DNS 响应
dig example.com
或:
dig example.com +trace
+trace 可以查看从根 DNS 到权威 DNS 的完整递归路径,适合排查 DNS 委派问题。
六、网络连通性测试
1. Ping 测试
ping example.com
或指定次数:
ping -c 10 example.com
Windows 下:
ping example.com -n 10
需要注意,Ping 延迟只能作为参考。Cloudflare 的 ICMP 响应节点不一定等同于 HTTP 请求实际访问节点,因此网页访问速度不能只看 Ping。
2. Traceroute 路由跟踪
Linux/macOS:
traceroute example.com
Windows:
tracert example.com
如果系统没有 traceroute,可以安装:
sudo apt update
sudo apt install traceroute -y
3. MTR 路由质量测试
MTR 比普通 traceroute 更适合长期观察丢包和延迟。
安装:
sudo apt update
sudo apt install mtr -y
执行:
mtr example.com
生成报告:
mtr -rwzc 100 example.com
参数说明:
-r:报告模式-w:宽格式显示-z:显示 AS 号-c 100:发送 100 次探测包
七、HTTPS 与证书测试
1. 查看 HTTPS 响应头
curl -I https://example.com
如果接入成功,可能看到类似头部:
server: cloudflare
cf-cache-status: HIT
cf-ray: xxxxx
其中:
server: cloudflare表示请求经过 Cloudflarecf-cache-status表示缓存状态cf-ray是 Cloudflare 请求追踪 ID
2. 查看完整请求过程
curl -v https://example.com
该命令可以查看 TLS 握手、证书、HTTP 协议版本、响应头等信息。
3. 查看证书信息
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 -dates
输出示例:
notBefore=Jan 01 00:00:00 2025 GMT
notAfter=Apr 01 23:59:59 2025 GMT
4. 测试 HTTP/2
curl -I --http2 https://example.com
如果支持 HTTP/2,响应中会显示使用了 HTTP/2。
5. 测试 HTTP/3
curl 需要支持 HTTP/3:
curl -I --http3 https://example.com
如果本地 curl 不支持 HTTP/3,可以先查看:
curl -V
检查输出中是否包含:
HTTP3
八、缓存效果测试
Cloudflare CDN 的核心能力之一是缓存静态资源。可以通过响应头判断资源是否命中缓存。
1. 查看缓存状态
curl -I https://example.com/style.css
重点关注:
cf-cache-status: HIT
常见状态包括:
| 状态 | 含义 |
|---|---|
| HIT | 命中缓存 |
| MISS | 未命中缓存,需要回源 |
| DYNAMIC | 动态内容,不缓存 |
| BYPASS | 被规则绕过 |
| EXPIRED | 缓存过期 |
| REVALIDATED | 重新验证后使用缓存 |
| STALE | 使用过期缓存 |
2. 连续请求观察缓存变化
for i in {1..10}; do curl -I -s https://example.com/style.css | grep -i cf-cache-status; sleep 1; done
如果第一次是 MISS,后续逐渐变为 HIT,说明缓存策略生效。
3. 查看缓存相关响应头
curl -I https://example.com/style.css | grep -Ei "cache-control|etag|last-modified|cf-cache-status|age"
其中:
cache-control决定浏览器和 CDN 如何缓存etag用于资源校验last-modified表示最后修改时间age表示资源在缓存中的存活时间
4. 强制绕过本地缓存测试
curl -I -H "Cache-Control: no-cache" https://example.com/style.css
九、性能压测命令
需要提醒:压测应仅用于自己拥有或授权的网站,不要对第三方网站进行压力测试。
1. 使用 ab 测试
安装 ApacheBench:
sudo apt update
sudo apt install apache2-utils -y
执行测试:
ab -n 1000 -c 50 https://example.com/
参数说明:
-n 1000:总请求数 1000-c 50:并发数 50
测试静态资源:
ab -n 5000 -c 100 https://example.com/style.css
2. 使用 wrk 测试
安装 wrk:
sudo apt update
sudo apt install wrk -y
执行:
wrk -t4 -c100 -d30s https://example.com/
参数说明:
-t4:4 个线程-c100:100 个并发连接-d30s:持续 30 秒
测试静态资源:
wrk -t4 -c200 -d60s https://example.com/assets/app.js
3. 使用 hey 测试
安装 Go:
sudo apt update
sudo apt install golang-go -y
安装 hey:
go install github.com/rakyll/hey@latest
添加环境变量:
export PATH=$PATH:$HOME/go/bin
执行:
hey -n 1000 -c 50 https://example.com/
十、源站隐藏与安全检查
Cloudflare 一个重要优势是隐藏源站 IP。开启代理后,普通用户只能看到 Cloudflare 节点 IP,而不是源站真实 IP。
1. 检查解析 IP 是否为 Cloudflare
dig example.com A +short
然后查询 IP 归属:
whois 104.21.10.10
如果看到 Cloudflare 相关信息,说明代理生效。
如果没有 whois,安装:
sudo apt install whois -y
2. 检查源站是否暴露
可使用以下思路:
dig direct.example.com A +short
如果你曾经使用过类似 origin.example.com、direct.example.com、server.example.com 的直连记录,并且没有保护好,就可能暴露源站。
建议:
- 源站只允许 Cloudflare IP 段访问 80/443
- 不将源站 IP 直接暴露在公开 DNS 记录中
- SSH 端口不要和 Web 端口混用
- 管理后台增加访问限制或 Zero Trust 保护
3. 只允许 Cloudflare IP 回源
Cloudflare 官方公布了 IP 段,可以定期同步。Linux 服务器可用如下方式配置防火墙。
获取 IPv4:
curl https://www.cloudflare.com/ips-v4
获取 IPv6:
curl https://www.cloudflare.com/ips-v6
使用 UFW 示例:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
允许 Cloudflare IPv4 访问 80 和 443:
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
注意:如果你使用了其他服务或负载均衡,请根据实际情况调整规则,避免误封自己。
十一、Nginx 获取真实访客 IP
接入 Cloudflare 后,源站默认看到的访问 IP 是 Cloudflare 节点 IP,而不是用户真实 IP。需要在 Nginx 中配置 Real IP。
1. 安装 realip 模块检查
nginx -V 2>&1 | grep realip
如果输出中包含:
--with-http_realip_module
说明支持。
2. 配置 Cloudflare Real IP
编辑 Nginx 配置:
sudo nano /etc/nginx/conf.d/cloudflare-realip.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;
测试配置:
sudo nginx -t
重载 Nginx:
sudo systemctl reload nginx
3. 查看访问日志
sudo tail -f /var/log/nginx/access.log
如果配置正确,日志中应该显示真实访客 IP。
十二、WAF 与安全防护体验
Cloudflare 的安全能力是它的一大优势。免费版虽然功能有限,但基础防护已经足够很多中小型网站使用。
1. 安全等级
Cloudflare 提供 Security Level,可选:
- Essentially Off
- Low
- Medium
- High
- I'm Under Attack
普通网站建议使用:
Medium
如果遭遇攻击,可临时切换:
I'm Under Attack
该模式下,访客访问时会先经过一层浏览器验证,对恶意请求和低质量爬虫有一定拦截效果。
2. WAF 自定义规则示例
例如,拦截某些国家或地区访问:
(ip.geoip.country eq "XX")
拦截特定 User-Agent:
(http.user_agent contains "BadBot")
保护后台路径:
(http.request.uri.path contains "/admin")
可以结合动作:
- Block
- Challenge
- Managed Challenge
- JS Challenge
- Skip
对于后台管理地址,推荐设置为 Challenge 或仅允许固定 IP。
3. 常见安全建议
- WordPress 后台
/wp-admin建议增加规则保护 - 登录接口限制请求频率
- API 接口增加鉴权,不要依赖 CDN 防护作为唯一安全措施
- 源站防火墙只允许 Cloudflare IP
- 开启 Bot Fight Mode 时注意误伤正常爬虫
- 高风险业务建议使用付费 WAF 规则集
十三、Cloudflare Tunnel 测评
Cloudflare Tunnel 是非常实用的功能,适合没有公网 IP 或不想暴露源站 IP 的场景。它通过 cloudflared 在本地服务器和 Cloudflare 网络之间建立出站连接,外部用户无需直接访问源站。
1. 安装 cloudflared
Ubuntu/Debian 示例:
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -o cloudflared.deb
sudo dpkg -i cloudflared.deb
查看版本:
cloudflared --version
2. 登录 Cloudflare
cloudflared tunnel login
命令会打开浏览器,让你选择域名授权。
3. 创建 Tunnel
cloudflared tunnel create my-tunnel
查看 Tunnel:
cloudflared tunnel list
4. 创建配置文件
sudo mkdir -p /etc/cloudflared
sudo nano /etc/cloudflared/config.yml
示例配置:
tunnel: my-tunnel
credentials-file: /root/.cloudflared/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.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
安装为系统服务:
sudo cloudflared service install
sudo systemctl enable cloudflared
sudo systemctl start cloudflared
sudo systemctl status cloudflared
7. Tunnel 使用感受
Cloudflare Tunnel 的优势非常明显:
- 不需要公网 IP
- 不需要在路由器做端口转发
- 可以隐藏源站
- 配合 Zero Trust 可以做访问认证
- 很适合内网服务、测试环境、家庭服务器、NAS 管理面板
不足也存在:
- 依赖 Cloudflare 网络稳定性
- 免费版部分地区访问速度不一定理想
- 大流量业务需要考虑带宽和合规问题
- 对低延迟强交互业务不一定最优
十四、Cloudflare Workers 测评
Workers 是 Cloudflare 的边缘计算服务,可以在 Cloudflare 边缘节点运行 JavaScript/TypeScript 代码。它适合做:
- API 网关
- 请求重写
- A/B 测试
- 简单后端接口
- 缓存控制
- 反向代理
- 鉴权逻辑
- 静态资源处理
1. 安装 Wrangler
npm install -g wrangler
登录:
wrangler login
创建项目:
npm create cloudflare@latest my-worker
进入目录:
cd my-worker
本地运行:
npm run dev
部署:
npm run deploy
2. 一个简单 Worker 示例
export default {
async fetch(request, env, ctx) {
return new Response("Hello Cloudflare Workers!", {
headers: {
"content-type": "text/plain;charset=UTF-8",
},
});
},
};
Workers 的优点是部署快、冷启动低、边缘节点覆盖广;缺点是运行环境与传统 Node.js 不完全一致,不适合所有后端应用直接迁移。
十五、Cloudflare Pages 测评
Cloudflare Pages 适合部署静态站点,比如:
- VuePress
- VitePress
- Astro
- Hugo
- Hexo
- Next.js 静态导出
- React/Vue/Svelte 静态项目
它可以直接连接 GitHub 或 GitLab,实现自动构建和部署。
常见构建命令
Vite 项目:
npm install
npm run build
输出目录:
dist
Hugo 项目:
hugo
输出目录:
public
Hexo 项目:
npm install
npx hexo generate
输出目录:
public
Pages 的体验非常轻量,适合个人博客、文档站、产品落地页。相比传统服务器,它几乎不需要维护系统环境。
十六、Cloudflare R2 测评
R2 是 Cloudflare 的对象存储服务,最大卖点是无出口流量费,适合存放图片、静态文件、备份包和下载资源。
1. 使用 AWS CLI 连接 R2
安装 AWS CLI:
sudo apt update
sudo apt install awscli -y
配置:
aws configure
依次输入:
AWS Access Key ID
AWS Secret Access Key
Default region name: auto
Default output format: json
列出桶:
aws s3api list-buckets --endpoint-url https://.r2.cloudflarestorage.com
上传文件:
aws s3 cp ./test.jpg s3://my-bucket/test.jpg --endpoint-url https://.r2.cloudflarestorage.com
下载文件:
aws s3 cp s3://my-bucket/test.jpg ./test.jpg --endpoint-url https://.r2.cloudflarestorage.com
同步目录:
aws s3 sync ./dist s3://my-bucket/dist --endpoint-url https://.r2.cloudflarestorage.com
2. R2 使用感受
R2 的优点:
- 无出口流量费,对分发型业务友好
- 与 S3 API 兼容度较高
- 可结合 CDN、Workers、Pages 使用
- 适合图片站、下载站、备份存储
不足:
- 生态成熟度仍不如 AWS S3
- 控制台部分功能不如传统云厂商细致
- 国内访问速度需要结合实际情况测试
- 权限策略、公开访问配置需要谨慎
十七、中国大陆访问体验
这是很多中文用户最关心的问题。
总体来说,Cloudflare 免费版在中国大陆访问体验并不稳定。不同运营商、不同地区差异明显,有时访问速度不错,有时延迟较高或出现丢包。对于外贸站、国际用户网站、技术博客、开源项目文档,Cloudflare 仍然很有价值;但如果主要用户都在中国大陆,且对速度要求较高,则需要谨慎评估。
建议方案
如果用户主要在海外:
Cloudflare 免费版或 Pro 版非常值得使用
如果用户主要在中国大陆:
国内 CDN + 备案服务器 可能更合适
如果用户分布全球:
可以采用国内 CDN 和 Cloudflare 分线路解析
如果是个人博客:
Cloudflare 免费版通常已经足够
如果是商业站点:
建议购买 Pro / Business,或结合专业 CDN 方案
十八、优点总结
Cloudflare 的优点非常突出:
-
免费 DNS 强大稳定
解析速度快,管理界面清晰,支持丰富记录类型。 -
免费 SSL 体验优秀
自动证书签发与续期,对普通站长非常友好。 -
安全防护能力强
DDoS 防护、基础 WAF、Bot 管理、访问规则都很实用。 -
隐藏源站 IP
对降低攻击面非常有帮助。 -
生态完整
CDN、Workers、Pages、R2、Tunnel、Zero Trust 可以组合使用。 -
配置门槛低
对新手比较友好,很多功能点击即可开启。 -
适合全球业务
对海外访问者尤其友好,边缘节点覆盖广。
十九、缺点总结
Cloudflare 并非完美,也有明显不足:
-
中国大陆访问不稳定
免费版节点在大陆访问表现波动较大。 -
部分高级功能收费
更完整的 WAF、图片优化、高级缓存规则等需要付费。 -
误拦截问题
安全等级过高时,可能误伤正常用户或搜索引擎爬虫。 -
回源配置需要经验
SSL 模式、真实 IP、缓存规则配置不当容易出现问题。 -
不适合所有动态业务
对实时性要求很高的应用,仍需专门测试。 -
源站仍需安全加固
接入 Cloudflare 不等于万无一失,服务器自身安全仍然重要。
二十、推荐配置清单
对于大多数普通网站,推荐如下配置:
DNS:托管到 Cloudflare
代理状态:网站主域名开启小橙云
SSL/TLS:Full strict
Always Use HTTPS:开启
Automatic HTTPS Rewrites:开启
HTTP/2:开启
HTTP/3:开启
Brotli:开启
Caching Level:Standard
Browser Cache TTL:根据业务设置
Security Level:Medium
WAF:根据路径和攻击情况配置
源站防火墙:仅允许 Cloudflare IP 访问 80/443
真实 IP:配置 Nginx real_ip_header
WordPress 网站建议额外配置:
/wp-login.php 增加 Challenge
/wp-admin 增加访问规则
XML-RPC 如不用则禁用
开启缓存插件
静态资源设置较长缓存时间
静态网站建议:
部署到 Cloudflare Pages
静态资源设置 immutable 缓存
图片资源放 R2 或 Pages
结合自定义域名
内网服务建议:
使用 Cloudflare Tunnel
配合 Zero Trust Access
关闭公网入站端口
二十一、最终结论
Cloudflare 是目前综合能力最强、免费额度最慷慨、生态最完整的边缘网络服务之一。对于个人站长、中小企业、开发者和海外业务网站,它几乎是一个“默认值得尝试”的方案。
如果你的网站面向海外用户,Cloudflare 的 CDN、DNS、SSL 和安全防护可以显著降低运维成本,并提升整体可用性。如果你的网站主要面向中国大陆用户,则需要重点测试不同地区的访问速度,不应只凭 Ping 或个别测速结果下结论。
从本次测评来看,Cloudflare 最值得使用的功能包括:
- DNS 托管
- SSL/TLS 自动证书
- CDN 缓存
- DDoS 基础防护
- WAF 规则
- Cloudflare Tunnel
- Workers
- Pages
- R2 对象存储
如果只给一句话评价:
Cloudflare 不一定是所有场景下最快的 CDN,但它一定是综合体验、免费能力、安全生态和易用性最突出的选择之一。
对于普通网站,建议至少尝试接入 Cloudflare DNS 和 SSL;对于开发者,则非常推荐深入体验 Workers、Pages、Tunnel 和 R2。只要配置得当,Cloudflare 可以在安全性、可用性和成本控制方面带来非常明显的收益。