引言

最近在折腾给Tunnel网站优选加速。

Cloudflare Tunnel(以前叫 Argo Tunnel)是 Cloudflare 提供的一种安全隧道服务,可以让你把本地或私有网络中的应用、安全地暴露到互联网,而 不需要直接开放服务器端口或暴露公网 IP。

关注到一个项目 Enhanced-FaaS-in-China 号称可以提升部署在 Cloudflare、Vercel 或 Netlify 网页在中国的访问速度和稳定性. 项目是很久前就分享了。

但是腾讯云 Tencent EdgeOne相较于Vercel在中国大陆区域访问更为迅速。

环境要求

  • 主域名已绑定 Cloudflare Tunnel,并正常访问 (例:服务名.主域名.com)nas.winward.com
  • 已托管到 Cloudflare 的加速域名,作为优选域名使用。(例:.辅助域名.com)speedupcf.123456.com
  • 以连接到Tunnel的加速域名(例:加速名.辅助域名.com)speedupnas.123456.com
  • P.S. 需要两条域名,主域名负责访问,辅助域名做域名优选。
  • P.S. Cloudflare免费版一般一个域名只能设置一个回退源
  • P.S. 即便加速了也只能保证访问加速和稳定性,并不能改变Tunnel小水管只有1MB/S左右

实操步骤

1.安装 Cloudflare Tunnel

在服务器(如192.168.1.100)上,安装 Cloudflare Tunnel


2.Tunnel隧道配置中添加自定义域名(作为访问)

  1. 登录到 Cloudflare Tunnel 控制台。
  2. 在 隧道配置 页面,找到并选择你的隧道配置。
  3. 在隧道配置中,手动添加一个自定义域名,例如:nas.winward.com。
  4. 配置完成后,确认 nas.winward.com可以正常解析并访问到站点。

3. 配置优选域名

  1. 登录到你的加速域名控制台(例如 123456.com)。

  2. 转到 DNS 配置 页面。

  3. 点击 添加记录(Add Record)。

  4. 在 Type 下拉菜单中选择 CNAME。

  5. 在Name

    输入框中,填写你希望加速的子域名

    • 示例:speedupcf.123456.com
  6. 在 Target 输入框中,填写你需要加速的 优选域名,例如:www.visa.cn 。

  7. 确保 Proxy status(代理状态)选择 灰色云朵(表示关闭代理)。

  8. 点击 保存(Save)。


4. Tunnel配置的加速域名(作为加速)

  1. 登录到 Cloudflare Tunnel 控制台。
  2. 在 隧道配置 页面,找到并选择你的隧道配置。
  3. 在隧道配置中,手动添加一个自定义域名,例如:speedupnas.123456.com。
  4. 配置完成后,确认 speedupnas.123456.com可以正常解析并访问到站点。

5.配置回退源

  1. 在加速域名(例如 123456.com)的控制台中,进入 SSL 配置 页面。
  2. 找到 自定义主机名(Custom Hostnames)设置。
  3. 在 回退源(Fallback Origin)中,设置为 speedupnas.123456.com(即刚才配置的隧道域名)。
  4. 刷新页面,确保 回源 状态显示为 有效(Active)。

6. 添加主机名 nas.winward.com

  1. 在 SSL 配置 页面,点击 添加主机名(Add Hostname)。
  2. 输入主机名nas.winward.com。
  3. 选择 默认配置(Default Settings)。
  4. 点击 添加(Add)。

7. 根据提示添加 TXT 记录

  1. 添加主机名后,系统会提示你在主域名中添加一个 TXT 记录。
  2. 回到 Cloudflare 控制台,进入 winward.com 的 DNS 配置页面。
  3. 点击 添加记录(Add Record)。
  4. 在 Type 下拉菜单中选择 TXT。
  5. 在 Name 输入框中,输入系统提供的主机名验证记录值(例如:_cf_custom_hostname)。
  6. 在 Content 输入框中,填写系统提供的验证内容(例如:"abcdef12345")。
  7. 确保 Proxy status 选择 灰色云朵(关闭代理)。
  8. 点击 保存(Save)。
  9. 返回 SSL 配置页面,点击 刷新(Refresh),确认状态为 有效。

8. 修改原主域名记录

  1. 回到 Cloudflare 控制台,进入 winward.com 的 SSL 配置页面。
  2. 找到原指向隧道域名(如 nas.winward.com)的 CNAME 记录。
  3. 修改 Target 地址为指向 优选域名 的记录,如:speedupcf.123456.com。
  4. 取消 Proxy status(代理状态),确保它选择 灰色云朵(关闭代理)。
  5. 点击 保存(Save)。

9. 添加DCV 委派(自动更新ssl证书)

  1. 回到 Cloudflare 控制台,进入 123456.com 的 DNS 配置页面。
  2. 最下方找到 “自定义主机名的 DCV 委派”。
  3. 复制 提供的 ACME DCV 质询 CNAME 记录。
  4. 回到 Cloudflare 控制台,进入 winward.com 的 DNS 配置页面。
  5. 添加新的 CNAME 记录:
    • Name(主机名):_acme-challenge.
    • 例:_acme-challenge.nas.winward.com
    • Target(目标地址):.abcd.dcv.cfvalidation.com
    • 例:nas.winward.com.abcd.dcv.cfvalidation.
    • Proxy status(代理状态):选择 灰色云朵(关闭代理)。

完成配置

到这里,整个配置就完成了。

你已经成功配置了 SaaS 回源 + 优选域名 来加速通过 Cloudflare Tunnel 解析的站点访问。

一张图说清Cloudflare Tunnel 配置及加速

一图流

Step1: 在服务器(如192.168.1.100)上,安装 Cloudflare Tunnel(方法省略)

Step2: 创建隧道 “Zero Trust” –”网络”–”Tunnels”–”创建隧道”(方法省略)

Step3: 配置主机 “Zero Trust” –”网络”–”Tunnels”–”配置”–”公共主机名”

① 创建主机名 “lan.BBB.com” 指向 “192.168.1.100” (创建tunnel指向内网服务器地址后, Cloudflare自动配置dns)

② 创建主机名 “www.AAA.com“ 指向 “192.168.1.100:80” (内网服务器地址+端口,Cloudflare自动配置dns)

Step4. DNS增加设置 “ip.BBB.com “ CNAME “visa.cn” (visa.cn 为优选IP, 可替代其他)

Step5. DNS修改设置 “www.AAA.com “ CNAME “ip.BBB.com”

Step6: 回退源设置,在备用域名下 “SSL/TLS” – “自定义主机名”:

① “回退源” 修改为 “lan.BBB.com”注意空格

② “添加自自定义主机名” 增加 “www.AAA.com“

Step7: 按Step6 - ② 页面提示的内容,在主力域名DNS设置 “主机验证”、”证书验证”、”DCV委派”(同服务器多个端口服务,重复Step3-② 、Step6-②、Step7)

Setp8: 在”SSL/TLS” – “自定义主机名”看各自定义主机配置是否生效,使用”https://www.itdog.cn/http/“ 检查是否达到提速效果

核心原理解析

核心原理解析 我们通过一个巧妙的“验证与优选分离”的技巧,来达成目的:

1. Tunnel & 回退源 (Fallback Origin):

我们创建一个标准的 Tunnel,并为其设置一个官方的、用于配置和识别的域名,我们称之为“回退源”(例如 tunnel-origin.bbb.com)。这个回退源是整个配置的“锚点”。

2. SaaS 自定义主机名:

我们使用 Cloudflare for SaaS 功能,告诉 Cloudflare:“我希望用我的域名 xxx.aaa.com 来访问那个‘回退源’”。Cloudflare 为了确认你拥有 xxx.aaa.com 的控制权,会要求你将 xxx.aaa.com CNAME 到回退源。

3. CNAME 验证与切换:

我们先按照要求完成 CNAME 配置,让 Cloudflare 验证通过,激活自定义主机名。

一旦激活,Cloudflare 就只关心流量的 Host 请求头是不是 xxx.aaa.com,而不再严格检查 CNAME 指向。

4. 优选域名/IP 介入:

验证通过后,我们立即将 xxx.aaa.com 的 CNAME 记录从“回退源”修改为速度更快的“优选域名/IP”。

5. 最终流量路径:

客户端 -> DNS 解析 xxx.aaa.com -> 得到优选 IP -> 客户端访问优选 IP (请求头 Host: xxx.aaa.com) -> Cloudflare 边缘节点收到请求 -> 识别出这是一个 SaaS 主机名,查询其配置 -> 内部路由到 ‘回退源’ 对应的 Tunnel -> cloudflared 客户端 -> 你的内网服务。