秋来冬风的博客

我使用Cloudflare免费计划的经验

目录

Cloudflare简介

Cloudflare是一家2009年成立于美国的企业,初衷是保护网络安全,目前在 330 多个城市拥有数据中心,与大约 95% 的全球互联网用户距离仅约 50 毫秒,凭借 388 Tbps 的网络容量,成功缓解了一些有史以来最大规模的 DDoS 攻击。

根据官网: Cloudflare的使命是帮助构建更好的互联网。我们认为每个网站和应用都应当可以免费获取基础的安全与性能服务。

Cloudflare保护网站时的工作原理如图:

用户的请求先发到Cloudflare在来到网站自己的服务器,记住这一点,这在后面很重要。

为什么选择Cloudflare

Cloudflare定价里有四种计划,其中免费计划虽然不要钱,但也有这些很值得的,对学习建网站很有用的:

安全

  • 不修改服务器支持后量子密钥封装

    因为量子计算机擅长破解当今普遍使用的RSA(利用大整数因式分解的数学难题)等现有密钥封装使用的公钥算法,导致传统公钥加密体系彻底失效,导致现在的tls在未来不安全。 研究应对这种情况的称为后量子密码学(PQC)。

    尽管目前的量子计算机还未发展到这个程度,但业内预测离这个时候可能只有十到二十年,迁移目前使用的算法到能抵抗量子计算机的算法是一个长期工作,参考tls1.2迁移到tls1.3,从相关标准RFC 8446在2018年8月发布到现在已经过去了快7年,但完全替代tls1.2仍需数年。

    2024年8月13日,美国国家标准与技术研究所(NIST)正式发布了后量子密码学的三项新标准,其中的FIPS 203 Module-Lattice-Based Key-Encapsulation Mechanism Standar(基于模块格的密钥封装机制标准),简称ML-KEM,利用数学难题Module Learning With Errors(模格上带错误学习问题)

    可以替代RSA等旧的算法,X25519MLKEM768是目前将其应用在tls的混合密钥交换算法,go语言已经在2025年2月发布的go1.24标准库中实现了,并默认在tls连接启用,所以这项功能对我不太有用,不过对使用其他编程语言的人可能是有用的。

  • 免费不限量的DDoS防护

    DDoS攻击通过大量非法请求占用目标系统的资源(如带宽、内存、CPU 等),导致目标无法正常为合法用户提供服务。

    目前的DDoS防护市场常见的一些产品,高防IP价格根据防护的峰值攻击速率,在数万至上百万一年。高防服务器的最低价格稍低,有些一年几千块的。

    根据Cloudflare的博客, Cloudflare曾在2022年6月为一个使用免费计划的客户网站自动缓解了当时有史以来最大规模的 HTTPS DDoS 攻击(在不到 30 秒内,产生了超过 2.12 亿次 HTTPS 攻击请求)。 无论您使用何种Cloudflare计划(免费、专业、商业或企业),我们都不会让您离开,也不会让您因为攻击的规模而需要向我们支付更多费用。

    根据我的实测,确实是有防护的效果,值得使用。

  • 访问速率控制

    对于HTTPS Flood攻击,它是一种DDoS攻击,通过发送大量的HTTPS请求达到攻击目的,处理HTTPS请求需要更多的服务器资源用于加解密。

    虽然这不用访问速率控制也能被上述免费DDoS防护缓解,但设置访问速率控制是个更有效的做法,因为检测出是此类攻击到做出反应需要时间和有未检测出的可能,但访问速率控制不会

    更重要的是,这节省了服务器资源,因为服务器不用自行消耗资源实现此类功能。

  • 恶意流量过滤

    Cloudflare提供了Under Attack 模式用来在遭遇DDoS攻击时,让所有访问先进行一个大约5秒的验证,但也可以始终开启,这将拦截从自动化脚本或恶意机器人来的恶意流量,确保是为真实用户提供服务。

  • 免费获取IP属地

    在用户进行登录等操作时,验证IP属地是否在两次登录时一致是一种很有用的账号防盗检测手段。

    目前要获取IP数据,这方面的数据库由商业的获取的信息多,但比较贵,也有免费的,但信息较少。

    使用Cloudflare可免费获得用户IP属地信息,包括国家或地区,省份或行政区名,城市和经纬度,足够进行账号防盗检测。

性能

  • 支持http3但不修改服务器

    http3是http协议的最新版本,传输层改用QUIC(快速UDP网络连接)协议,因为内置tls1.3握手数据一起发送,首次连接仅需1个RTT(RTT是往返时间,指数据发过去再发回来的用时),比http2首次连接需要2-3个RTT更少,同时因为不使用TCP协议,避免了队头阻塞(前面的数据包丢了要等重新传好再发后面的数据包),改善了网络差时的传输延迟等,因为对既往问题的改进,加快了网页加载速度。

    因为主流编程语言的标准库中并没有提供对QUIC和http3的支持,例如go语言写的程序目前要支持http3,需使用开源库 github.com/quic-go/quic-go/http3 , 它的API用法高度兼容标准库,改一个函数调用即可支持http3,同时能在客户端不支持http3时自动回退到http2,尽管这种办法有各种优点,但使用Cloudflare,一行代码都不用改即可支持http3

  • 免费不限量的CDN

    用户可能位于不同的地理位置,但服务器是在固定的地理位置,造成有的用户访问快,有的用户访问慢,CDN中文内容分发网络,通过复制源服务器的内容到位于不同地理位置的节点,根据地理位置,就近提供服务,加速访问。

    更为重要的是,这节省了源服务器的流量带宽。因为一些原本源服务器提供的内容,如网站首页,现在由CDN提供。

  • 自动响应压缩

    Cloudflare可配置对服务器响应的内容进行压缩,这将降低传输给客户端的数据大小,从而起到加速访问的效果。

    例如,客户网速每秒1MB,要下载100MB的文件,启用压缩后,如果压缩率为50%,则原本需要100秒下载完,现在可以减少一半的用时。

开发便利

  • 15年的源服务器tls证书

    http定义网页传输标准,但本身是未加密的,tls通过加密提供了传输过程的安全,http+tls是https,这是今天互联网的基石,许多网站据此实现安全的服务。

    使用tls需要有tls证书,它由CA(证书签发机构)签发,通过它能证明数据来自特定的网站,并实现客户端和服务器的加密通讯。

    目前的tls证书分为免费证书和付费证书,免费证书的有效期通常为90天,付费证书的有效期通常为1年,未来会更短(短到最长47天),过期前就要重新签发,有效期越短,证书重签越频繁,出错的概率越大。

    使用Cloudflare的15年有效的源服务器tls证书,基本解决了服务器因为证书频繁重签出错的概率。这种证书仅Cloudflare信任,因为Cloudflare的工作原理,服务器仅需面对Cloudflare转发来的请求,所以这不成问题。

  • 自动重签边缘证书

    边缘证书是客户端和Cloudflare通讯时使用的tls证书,使用Cloudflare保护网站时,它由Cloudflare负责自动重签,和15年的源服务器tls证书,一起确保了tls证书频繁重签还不出错。

  • 免费ipv4支持

    目前有些低价的服务器可能仅提供ipv6,在接入Cloudflare后,使用这类服务器搭建的网站等将不仅能通过ipv6访问,也能通过ipv4访问。

  • 电子邮件路由

    使用该项功能,可创建自己的域名邮箱。

  • Web Analytics

    使用该项功能,可获得近期访问量报告。比如有多少次被访问等。

一些经验

  • 域名托管

    通过IP可以访问服务器,记住IP是个太苛刻的要求,比如ipv4的23.75.69.34已经不容易记忆,ipv6的更长,所以产生了域名帮助人不用记忆IP也可以达到目的,像 .cn.com 这种是顶级域名,像a.com 这种是一级域名,像 www.a.com 这种是二级域名,三级域名四级域名等以此类推。

    一般一级域名是收费的,二级域名可以用自己的一级域名做,或者有免费的二级域名。有n级域名后可以自己创造出n+1级的子域名。

    域名托管是通过将域名系统(DNS)的‌NS记录改为Cloudflare的服务器进行的,然后在Cloudflare添加其他记录。注意每个不同的域名都要做这一步。 例如有一个域名 x.com,一般建网站只用了一个域名,可能有的因为实现对已登录的用户有不同的页面等原因,有dash.x.com等子域名,这时所有子域名也应该做改ns记录的一步。

    当从Cloudflare的服务器获取dns响应结果时,域名托管设置完成。如果出现二级域名修改ns记录没有完成域名托管,可以设置一个alias记录,设为一个完成域名托管的子域名。

  • 开启代理

    完成域名托管后,按照防范DDoS的常规操作,应该一开始就隐藏源服务器IP,所以DNS记录创建时就应该开启代理,确保dns响应代理IP,并且免费CDN等服务也只有这样才能启用,像这样

    注意为了安全,应该始终使用HTTPS,同时因为在开启代理后,为了自动签发边缘证书,应该设置一个dns记录在域名注册的地方,设置_acme-challenge.根域名的ns记录为Cloudflare的服务器。

    因为边缘证书不是立即签发的,这意味着刚接入Cloudflare免费计划后,在几分钟到几天的时间,无法访问服务器,tls连接因没有证书失败。 如果不想经历一段时间的无法访问服务器,可以花10美元买Cloudflare的高级证书管理器,然后上传一张自定义证书,还能对tls连接进行更精细的控制。

  • 建议下列设置一定要做

    • DNS设置中的代理状态(所有A记录和AAAA记录都开),确保能使用免费DDoS防护,免费CDN等服务
    • 源服务器部署Cloudflare的15年源服务器tls证书(私钥类型为ECC),SSL/TLS 加密模式设为完全(严格),确保源服务器的证书可用
    • 最低 TLS 版本设为tls1.2,确保数据传输得到安全的加密
    • 开启TLS 1.3选项,确保可使用最新的加密方式
    • 开启浏览器完整性检查,确保阻止恶意流量
    • 开启速率限制,(1个ip10秒只能访问10次或更低),确保防范HTTPS Flood攻击
    • 设置Web应用程序防火墙的自定义规则,拒绝http连接,它未经加密,数据传输不安全,且可能数据传输中被加入广告
    • 设置Web应用程序防火墙的自定义规则,已通过验证自动程序类别跳过所有安全验证,避免影响搜索引擎的爬虫工作,导致网站无法正常的被搜索引擎收录
    • 开启优化中的Early Hints、Rocket Loader、HTTP/2 到源服务器、HTTP/3(使用 QUIC)、0-RTT 连接恢复选项,确保开启必要的优化
    • 设置Cache Rules,确保使用上免费CDN
    • 设置Tiered Cache Topology为Smart Tiered Caching Topology,确保缓存命中率更高
    • 设置压缩规则,确保对大的响应数据进行压缩,加快响应速度
  • 可选开启下列设置

    • Under Attack 模式 , 这将强制所有访问者先进行一个大约5秒的人机验证,过滤恶意流量,但会影响正常用户访问体验
    • 规则设置中的添加访问者位置标头,可用于账号防盗检测。
    • 网络中的WebSockets,如果需要使用WebSocket的话。
    • Argo Smart Routing,可优化网络路由,减少加载时间,价格固定5美元1月+流量费用。
    • 负载平衡,如果有多个源服务器的话。
    • 电子邮件路由,如果需要域名邮箱的话。

免费计划的缺点

Cloudflare的免费计划不能使用位于中国大陆的节点,意味着即使源服务器和客户都在中国大陆,数据也必须先到境外,然后在回来。

一年2000美元的商业计划也不能使用位于中国大陆的节点,必须要最高级的企业计划且满足有ICP备案等政策要求才可以,意味着使用免费计划后,在境外是有优化的,但在中国大陆,访问是负优化,反而更慢了。尤其是夜间,访问速度可能慢到几十kb/s,且延迟可达数秒至十几秒。

刚接入时不能访问如上所述。

参考资料:

[1]: https://www.rfc-editor.org/rfc/rfc9000.html “QUIC: A UDP-Based Multiplexed and Secure Transport”

[2]: https://www.rfc-editor.org/rfc/rfc9001.html “Using TLS to Secure QUIC”

[3]: https://www.rfc-editor.org/rfc/rfc8446.html “The Transport Layer Security (TLS) Protocol Version 1.3”

[4]: https://blog.cloudflare.com/pq-2024/ “The state of the post-quantum Internet”

[5]: https://github.com/golang/go/issues/69985 “crypto/tls: add X25519MLKEM768 and use by default; remove x25519Kyber768Draft00”

[6]: https://blog.cloudflare.com/http3-the-past-present-and-future/ “HTTP/3: the past, the present, and the future”

[7]: https://httptoolkit.com/blog/http3-quic-open-source-support-nowhere/ “HTTP/3 is everywhere but nowhere”

[8]: https://developers.cloudflare.com/ssl/post-quantum-cryptography/ “Post-quantum cryptography (PQC)”

[9]: https://blog.cloudflare.com/cloudflare-ca-encryption-origin/ “Introducing CloudFlare Origin CA”

[10]: https://blog.cloudflare.com/26m-rps-ddos/ “Cloudflare mitigates 26 million request per second DDoS attack”

[11]: https://blog.cloudflare.com/unmetered-mitigation/ “Unmetered Mitigation: DDoS Protection Without Limits”

Tags: