Cloudflare通过Saas Zone实现流量分流
Cloudflare相信很多人都熟悉了,著名的互联网大善人,特别是关于其优选IP实现代理加速以及网站访问的加速
为什么使用自定义节点 IP 呢?CloudFlare 免费套餐节点比较少,且“鱼龙混杂”,对中国大陆的线路不友好,使用 CloudFlare 自定义节点 IP 的好处就是可以一定程度上缓解 CloudFlare 速度慢的问题。
但是在2024年12月更新的《Cloudflare 自助订阅协议》(Cloudflare Self-Serve Subscription Agreement)第 2.2.1“限制“条款的第 J 条规定:除非 Cloudflare 以书面形式明确允许,否则您不会也无权使用服务提供虚拟专用网络或其他类似的代理服务。
这意味着用户不得使用 Cloudflare 的服务来提供虚拟专用网络(VPN)或其他类似的代理服务,这一调整可能会对通过使用 Cloudflare Workers 和 Cloudflare Pages 等来实现代理功能的用户造成影响,而禁用原因可能是违反了 Cloudflare 提供 CDN 服务的初心,或是为了避免与其自身的 WARP+(代理)服务造成竞争。
而同样是第 2.2.1“限制“条款的第 B 项条款则规定:不得干扰、破坏、更改或修改服务或其任何部分,或对服务或网络(包括 Cloudflare 的对等互连合作伙伴网络)或连接到服务的服务造成不必要的负担,包括但不限于导致(直接或间接)您的 Cloudflare 代理域的流量发送到 Cloudflare 未为该域分配的 IP 地址。
这一条款的更新,即表示 Cloudflare 明确不认可”优选 IP“(指用户通过有意挑选 Cloudflare 数据中心的 IP 地址来实现最快的访问速度,而不是默认使用 Cloudflare 分配的任播 Anycast 地址),会导致依赖于通过 Cloudflare 的 CDN 服务来优化访问速度的站长可能得选择其他 CDN 方案。
Cloudflare 的这一限制调整,有利于其 CDN 服务的稳定性,而不用再担心因节点被用作“代理”等违法服务导致 IP 封禁的问题。另外如果违反上述服务条款,可能导致域名及账号被 Cloudflare 拉黑,域名一旦被列入黑名单,后续将无法使用 Cloudflare 的其他相关服务。
近期也有多名用户反映cloudflare封锁了其账户
所以这篇文章介绍的仅仅是实现境内外流量分流,达到加速的效果
首先准备的工作:
两个域名,一个主访问域名(也就是用户所访问网站的域名),一个回源域名(回退源的IP需要绑定你的主网站),需要注意的是:Cloudflare一个域名只能绑定一个回退源,也就是如果你不同的网站位于不同的服务器,你就需要多个域名来做回退源
两个CDN,国内路由走第三方CDN,国外直接走Cloudflare
这里演示所使用的两个域名:
netrical.com(主访问域名)
tapby.de(回退源)
首先定义一个回退源:
回退源,说白了就是找源站用的,所以需要在tapby.de域底下,新建一个域名,绑定网站的服务器,打开Cloudflare的代理
名称可自定义,这里以back为示例:
添加回退源:
点击左侧的SSL/TLS 再点击自定义主机名,如果看到启用 CloudFlare for SaaS的按钮,那就点击,然后根据步骤开通
打开SSL/TLS下面的自定义主机名,增加一个回退源。在回退源中填写第一个步设置的域名 back.tapby.de。然后点击左侧的添加回退源 (这里我已经添加过了,请根据实际替换)
等待一会点击刷新,提示有效据行
添加自定义主机名:
在添加的回退源生效后点击页面中的添加自定义主机名,在页面中输入自定义主机名,其中自定义主机名就是你的主域名(别人访问的域名),其他保持默认即可,确认输入信息无误后点击添加自定义主机名。注:添加域名时可以是根域名也可以是二级域名,这里是以二级域名blog.netrical.com为例(最好是二级域名,在之后操作会讲)
添加完成后是待验证状态。点击刚刚添加的主机名,可以看到要求验证的证书验证TXT和主机名预验证TXT。
接着需要按要求填写证书验证TXT和主机名预验证TXT,注意:这里CF给出的验证TXT名称是完整域名的解析记录,所以记得不要完全复制解析,应该要填入的是_cf-custom-hostname.blog和_acme-challenge.blog
网上大部分教程在这一步会让你把主访问域名迁移到其他的DNS服务商,但其实可以使用折中的办法,(单独托管一个二级域名去其他DNS服务商)也是可以的
按要求验证,去主访问域名添加TXT记录
这时候回到自定义主机页面,会看到报错,一般有两种
The hostname is using Cloudflare and cannot be activated with an TXT or HTTP validation token. To activate the custom hostname, the DNS target needs to point to the SaaS zone.
custom hostname does not CNAME to this zone
这种情况其实只要自定义的主机名CNAME到回退源就可以验证成功了,但是Cloudflare同个域名只能保持CNAME或者A记录的存在,CNAME了回退源就代表所有流量都经过Cloudflare,这种情况下是无法实现境内外分流的,也就达不到我们的目的
解决方法:
在主访问域名(netrical.com)下新建一个二级域名,托管在其他服务商,这里使用的是华为云DNS,以CDN.netrical.com为例,先去华为云DNS添加一个域名
然后去Cloudflare添加DNS记录,类型为NS-名称CDN-名称服务器为华为的ns记录值
然后可以做分流了,境内解析(第三方CDN,对国内优化好的),境外解析Cloudflare的回退源(back.tapby.de)
然后主访问域名(blog.netrical.com)直接在Cloudflare中CNAME到 cdn.netrical.com
接着等待一会再返回自定义主机页面,可以看到证书验证TXT和主机名预验证TXT已经变为有效状态