当前位置: 首页 > news >正文

Cloudflare SaaS 功能 ip 优选原理

本文翻译自我的英文博客,最新修订内容可参考:The principle of Cloudflare SaaS Optimization

通常情况下,当你使用 Cloudflare 解析你的域名,并且选择使用 Cloudflare 代理(黄色云朵图标)时,Cloudflare 会将你的域名资源缓存到他们的 CDN 中。这本来是件好事,但众所周知,大陆的网络环境有一些特殊规则,所以对于免费套餐的用户来说,访问 CDN 中的资源体验可能会变得更差,甚至被 重置。这意味着,如果用户连接到一个高延迟的节点,请求体验会很糟糕。因此,本文将介绍一些方法,帮助你的资源访问到为大陆优化的 Cloudflare 节点。

为什么需要 SaaS?

所以当我使用一些工具时,我总是问自己我们为什么要使用它?你应该更多地了解其正常的工作流程。

普通的 DNS 解析

最常见的过程是基本的 DNS 解析(如果你不熟悉 DNS,可以阅读我的博客 DNS 简介)。也就是说,你购买一台服务器(它有一个公网 IP 地址,例如 1.1.1.1),然后在服务器上部署一些服务(例如 博客)。然后你可以通过访问 1.1.1.1:8080 来请求服务器。实际上,记住 IP 地址很困难。所以通常我们会购买一个域名,并在 DNS 服务器上添加一个 A 记录(针对 IPv4)(每个 ISP 都有其带有域名服务器记录的 DNS 服务器),现在我们就可以访问 blog.timerring.com 来请求服务器了,并且我们可以 ping blog.timerring.com 来检查服务器 IP 是否为 1.1.1.1

使用 Cloudflare 代理

过了一段时间,我们发现有一家叫做 Cloudflare 的公司,它提供免费的 HTTPS 证书、CDN 加速以及隐藏我的服务器 IP… 基本上是免费的,这太疯狂了!所以我们可以使用 Cloudflare 来解析域名,然后我们将域名服务器更改为 Cloudflare 的,最重要的是开启 Cloudflare 代理(黄色云朵图标)。

然后我们可以 ping 域名 blog.timerring.com,发现服务器 IP 已经变成了 172.xx.xxx.xx。现在,实际的访问流程已经变成了:

blog.timerring.com -> 172.xx.xxx.xx(Cloudflare) -> 1.1.1.1

这里的 172.xx.xxx.xx 是 Cloudflare CDN 的一个节点 IP,也就是 Cloudflare 代理的 IP。你可以查看我的实践博客 域名解析实践 获取更多细节。

使用 Cloudflare for SaaS 优化

SaaS 流程图

实际上,SaaS 的初衷是将不同域名(未托管在 Cloudflare 上)的请求转发到 CDN 节点,然后再转发到源服务器。

想象一下这个场景,在某些特殊的日子里,由于某些原因,你访问 blog.timerring.com 时发现博客无法访问,并且你也无法通过 ping 访问 172.xx.xxx.xx,这个 IP 被封锁了。那么我们该怎么办呢?

嗯,我们听说 visa.cn 也在使用 Cloudflare,并且一直可以访问,访问速度也比我的快得多。那么我们能借用分配给 visa.cn 的 IP 来访问 Cloudflare,然后让 Cloudflare 访问我的服务器吗?答案是肯定的。所以我们需要解决两个问题:

  1. 我访问 blog.timerring.com 时,需要借用分配给 visa.cn 的 IP 来连接到 Cloudflare。
  2. 连接到 Cloudflare 后,Cloudflare 知道我是谁,知道我的服务器是哪台,并知道将我的请求转发到我的服务器。

现在来看解决方案:

  1. 对于第一个问题,我们可以使用 DNS CNAME 记录来解决。blog.timerring.com -> visa.cn,然后我们访问会得到 1016 错误。
  2. 对于第二个问题,我们可以使用 SaaS 来解决。 从图片中,你可能会好奇:
    1. Cloudflare CDN 是如何知道我的服务器在哪里的?
      • 这就是 回源地址(fallback origin),如果请求在 CDN 中不可用,Cloudflare 会将请求转发到 回源地址
    2. Cloudflare 是如何知道 www.custom1.comshop.domain.com… 这些域名是我的,并将请求转发到我的服务器的?
      • 这就是 自定义主机名(custom hostnames),Cloudflare 会将匹配 自定义主机名 的请求转发到你的 回源地址

SaaS 的原理

现在我们知道了 SaaS 的原理,可以分为四个步骤:

  1. 使用其他域名(例如 fallback.com)连接到 Cloudflare CDN,并由 Cloudflare 托管。
  2. 添加一个例如 cdn.fallback.com 的 A 记录指向你的服务器 IP(例如 1.1.1.1),并使用 cdn.fallback.com 作为你的回源地址。
  3. 现在使用你的域名(由其他 ISP 托管),例如 blog.timerring.com,将其添加到 Cloudflare 自定义主机名中。
  4. 最后,将 blog.timerring.comCNAME 记录 设置为优选域名(例如 visa.cn)或A 记录设置为优选 IP。

核心概念:回源地址必须连接到 Cloudflare CDN,这意味着它必须由 Cloudflare 托管并且使用 Cloudflare 代理。

你可能会有的疑问

你是否好奇为什么我们需要两个域名?一个用于 Cloudflare,另一个用于其他 DNS 服务商。

这是因为,如果你只使用一个域名,它的 SLD(blog.timerring.comcdn.timerring.com)都由 Cloudflare 托管。当 blog.timerring.com CNAME 到 visa.cn,而 visa.cn 也在 Cloudflare CDN 上时,你的请求将被直接发送到 visa。因此你会遇到 1016 错误。

所以,如果你的域名 blog.timerring.com 托管在其他 DNS 服务商,即使有成功案例2,但根据我的尝试,这是行不通的。

配置 Cloudflare for SaaS

在这里,我们可以使用 Cloudflare 中的 回源地址(即所谓的 SaaS)来实现优选节点和 DDNS。

例如,这里我们使用两个域名:

  • fallback.com 使用 Cloudflare 解析,作为回源域名。
  • mysite.com 使用其他解析服务,这是我们想要优化的域名。

步骤1:配置

然后我们根据文档进行配置。例如,使用 cdn.fallback.com 作为回源地址,指向你的服务器。

步骤2:添加自定义主机名并验证3

这里我们通过 Cloudflare SSL/TLStest.mysite.com 添加到 自定义主机名 中,然后进行验证。然后我们回到托管该域名的平台,添加一个 CNAME 指向 cdn.fallback.com

步骤3:寻找优选 IP

这里我使用开源项目 CloudflareSpeedTest 来测试和选择优选 IP。此外,你可能不想手动选择 IP。你可以直接将步骤2中的 CNAME 更改为一些已经选择了 IP 的域名,例如we-test。

步骤 4:测试访问质量

这里推荐使用 sir.net,涵盖了网络速度检测、在线测试网站访问速度、国内外的网速测试等测试场景,众多测试服务器来自国内外优质运营商,包括电信、联通、移动等,基本覆盖全国所有省份以及亚洲,欧洲,北美热门区域。详细介绍可见 匠心打造超级 ping,多运营商多协议全方位测试,sir.net 正式上线!


  1. https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/ ↩︎

  2. https://linux.do/t/topic/162721 ↩︎

  3. https://www.silverdragon.cn/archives/7484/ ↩︎

相关文章:

  • 论文略读:Large Language Models Assume People are More Rational than We Really are
  • Unity-通过Transform类学习迭代器模式
  • 给Markdown渲染网页增加一个目录组件(Vite+Vditor+Handlebars)(上)
  • Java面试题020:一文深入了解微服务之负载均衡Feign
  • 多通道信号采集分析系统 - 01 功能分解与采样子系统
  • 《TCP/IP协议卷1》TCP协议TCP连接建立和释放
  • 一[2]、ubuntu18.04环境 yolov8 + realsenseD435i 实时效果测试
  • docker compose搭建elk 8.6.2
  • 爱普特APT-LINK PROG带电烧录器!STM32/SPI Flash高性能在线编程器详细解析
  • element 跨页选中,回显el-table选中数据
  • DEVICENET转MODBUS TCP网关连接ABB机器人配置案例
  • Vue 生命周期
  • 使用argocd部署nginx
  • 大厂Java技术面试实录:从基础到架构,谢飞机的面试之旅
  • 测试:AWS SDK for JavaScript v2 迁移到 v3
  • 【开发常用命令】:服务器与本地之间的数据传输
  • 新疆大学具身导航新范式!DOPE:基于双重对象感知增强网络的视觉语言导航
  • Python打卡第52天
  • 破解关键领域软件测试“三重难题”:安全、复杂性、保密性
  • 第三章支线七 ·路由边境 · 多页世界的穿梭之术
  • wordpress.com/seo优化顾问
  • crm管理系统功能/seo的方式包括
  • 做网站流程 优帮云/超级外链工具 增加外链中
  • 衡东网站建设/网络公司的推广
  • 加盟餐饮的网站建设/神秘网站
  • 企业网站制作一/长沙有实力seo优化