上一篇 下一篇 分享链接 返回 返回顶部

Cloudflare 实测手记:从接入配置到测速排障,一篇搞定常用命令

发布人:慈云数据-客服中心 发布时间:24小时前 阅读量:4

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 回源到源站服务器。

它的价值主要体现在三个方面:

  1. 加速访问:通过全球节点缓存静态资源,缩短用户访问路径。
  2. 增强安全:隐藏源站 IP,抵御 DDoS、恶意扫描和常见 Web 攻击。
  3. 降低运维成本:免费 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 表示请求经过 Cloudflare
  • cf-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.comdirect.example.comserver.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 的优点非常突出:

  1. 免费 DNS 强大稳定
    解析速度快,管理界面清晰,支持丰富记录类型。

  2. 免费 SSL 体验优秀
    自动证书签发与续期,对普通站长非常友好。

  3. 安全防护能力强
    DDoS 防护、基础 WAF、Bot 管理、访问规则都很实用。

  4. 隐藏源站 IP
    对降低攻击面非常有帮助。

  5. 生态完整
    CDN、Workers、Pages、R2、Tunnel、Zero Trust 可以组合使用。

  6. 配置门槛低
    对新手比较友好,很多功能点击即可开启。

  7. 适合全球业务
    对海外访问者尤其友好,边缘节点覆盖广。


十九、缺点总结

Cloudflare 并非完美,也有明显不足:

  1. 中国大陆访问不稳定
    免费版节点在大陆访问表现波动较大。

  2. 部分高级功能收费
    更完整的 WAF、图片优化、高级缓存规则等需要付费。

  3. 误拦截问题
    安全等级过高时,可能误伤正常用户或搜索引擎爬虫。

  4. 回源配置需要经验
    SSL 模式、真实 IP、缓存规则配置不当容易出现问题。

  5. 不适合所有动态业务
    对实时性要求很高的应用,仍需专门测试。

  6. 源站仍需安全加固
    接入 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 可以在安全性、可用性和成本控制方面带来非常明显的收益。

目录结构
全文