利用优选域名加速 Cloudflare tunnel 在中国的访问速度

参考文章:

准备:

  1. 需要两个域名, 例如 A.com, B.free.com, 这里假设 A.com 是想让别人访问的顶级域名, B.free.com 可以是网上随便申请的免费二级域名
  2. 需要一个域名解析支持分国家地区线路的dns解析商, 例如 腾讯云的dns服务
  3. 需要开通 Cloudflare SASS 服务, 这里可以绑定国区的paypal, 或者网上搜索的没有钱的虚拟信用卡, 能过验证就行, 不会扣费

前置准备

  1. A.com B.free.com 都添加到 cloudflare
  2. B.free.com -> ssl/tsl -> 自定义主机名 -> 开通SASS, 自定义主机名需要开通sass, 绑定paypal或者信用卡, 不会扣费
  3. 添加一个回退源, 例如 falkback.B.free.com

添加 tunnels

  1. Zero Trust -> 网络 -> Tunnels 创建隧道
  2. 在需要暴露内网的服务器上安装 cloudflared
  3. 在该隧道添加公共主机名 falkback.B.free.com, 服务随便指向服务器上的端口, B.free.com 的 dns 记录会多一条 falkback 记录, CNAME 向 cloudflare 分配给我们的免费域名, 并且是开通了小云朵的
  4. 添加需要暴露的服务, 主机名 www.A.com, 这时候 A.com 的 dns 记录上就多了一条 www 记录, CNAME 向 cloudflare 分配给我们的免费域名, 并且是开通了小云朵的

www.A.com 是我们想让别人访问的项目, 托管在 cloudflare 上, 国外访问没问题, 但国内一般速度很慢, 甚至访问不了.

其实有些使用cloudflare托管的国际大厂在国内也开通了业务, 他们的域名在国内解析出来的ip并没有被墙, 速度非常不错, 我们就是要借助这些大厂的域名来访问

还有的是热心的网友提供的域名, 部署服务扫描在不同运营商下有哪些快的ip, 然后通过api设置不同的解析, 这些就是就是所谓的优选域名

优选域名

大厂的域名: 我常用www.apnic.net

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
shopify.com
time.is
icook.sh
icook.tw
ip.sb
japan.com
malaysia.com
russia.com
singapore.com
skk.moe
www.visa.com.sg
www.visa.com.hk
www.visa.com.tw
www.visa.co.jp
www.visakorea.com
www.gco.gov.qa
www.gov.se
www.gov.ua

网友提供的域名: 这些域名随时可能失效, 用之前最好用 itdog 站点工具tcp ping下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
www.cloudflare-cn.com
freeyx.cloudflare88.eu.org
cf.090227.xyz #三网自适应分流官方优选
ct.090227.xyz #电信官方优选
cmcc.090227.xyz #移动官方优选
cfip.xxxxxxxx.tk #OTC提供维护官方优选
bestcf.onecf.eu.org #Mingyu提供维护官方优选
cf.zhetengsha.eu.org #小一提供维护官方优选
acjp2.cloudflarest.link #KJKKK维护官方优选
achk.cloudflarest.link #KJKKK维护官方优选
xn--b6gac.eu.org
yx.887141.xyz
8.889288.xyz
cfip.1323123.xyz
cf.515188.xyz
cf-st.annoy.eu.org
cf.0sm.com
cf.877771.xyz
cf.345673.xyz

回退域名设置

  1. 添加自定义主机名 www.A.com, 选 txt 验证, 会显示名称为xxx.www.A.com, 值为xxxx

腾讯云设置

  1. 添加 www.A.com 子域名解析, 会提示你在cloudflare上添加一个txt记录来验证, 按要求添加
  2. www.A.com 解析设置里, 添加记录 @, 类型CNAME, 路线境内, 记录值为优选域名, 如www.apnic.net
  3. 添加记录 @, 类型CNAME, 路线境外, 记录值为回退域名, 如falkback.B.free.com
  4. 上方会有红色报错, 显示未生效, 点击查看详情, 提示要添加两条ns记录到 cloudflare 上 A.com 的dns记录, 原来有一条默认的 www.A.com 的cname记录, 改为ns记录, 再添加另外一条, 稍等一会, 点击重新验证, 会变绿
  5. 添加一条 txt 类型记录, 记录为 回退域名设置里的 xxx, 值为 xxxx
  6. 返回上级面板, 最右边的更多 -> 开始解析
  7. 等几分钟后, 自定义主机名那里的状态就会变成绿色有效
  8. 如果状态一直没有通过, 重复 回退域名设置-步骤2-删掉重新添加, 腾讯云设置-步骤5-修改txt值, 再等几分钟看看
sequenceDiagram participant User as 用户 participant DNS as DNS解析 participant OptDomain as 优选域名服务器 participant FallbackDomain as 回退域名服务器 participant CF as Cloudflare边缘节点 participant Tunnel as Cloudflare Tunnel participant Origin as 源站服务器 User->>DNS: 请求解析 www.A.com alt 中国境内用户 DNS->>User: 返回优选域名IP (www.apnic.net 等) Note over User,OptDomain: Host头保持为www.A.com User->>OptDomain: 请求 (Host: www.A.com) OptDomain->>CF: 转发请求到Cloudflare边缘 else 中国境外用户 DNS->>User: 返回回退域名IP (fallback.B.free.com) Note over User,FallbackDomain: Host头保持为www.A.com User->>FallbackDomain: 请求 (Host: www.A.com) FallbackDomain->>CF: 通过SAAS服务转发 end CF->>Tunnel: 根据Host头(www.A.com)识别并路由 Tunnel->>Origin: 转发请求到内部服务 Origin->>Tunnel: 返回响应 Tunnel->>CF: 转发响应 CF->>User: 返回最终响应

worker 设置优选域名

  1. 创建一个 worker 项目
  2. 在cloudflare 上添加 dns 记录, 类型 cname, 名称 www, 目标 www.apnic.net, 关掉小黄云
  3. 在 workers 路由, 添加路由, 路由为 www.A.com, worker 选中上面创建的worker

pages 设置优选域名

  1. 创建一个pages 项目
  2. 绑定自定义域 www.A.com, 等待验证完成后, A.com 的 dns 记录会多一条 cname 记录, 指向 pages 分配给我们的免费域名
  3. 参考 tunnel 的设置, 在腾讯云上添加 www.A.com 的子域名解析, 同样在cloudflare上添加两条ns记录, 在腾讯云上添加两条 cname 记录, 国内指向 www.apnic.net, 国外指向 pages 分配给我们的免费域名

通过 tunnel ssh登录

在本地电脑上的~/.ssh/config 中添加配置

1
2
3
4
5
6
7
Host 简称
  HostName tunnel上暴露的公共主机域名
  Port 一般是默认22
  User 用户名
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/密钥
  ProxyCommand /usr/local/bin/cloudflared access ssh --hostname %h

需要安装 cloudflared, 在 ProxyCommand 中调用

原理

  • 自定义主机名:

    • 在 Cloudflare 中配置 www.A.com 映射到你的 Tunnel,告诉 Cloudflare:「任何 Host 为 www.A.com 的请求都交给这个服务处理」。
  • SaaS + 回退域名:

    • 通过 Cloudflare SaaS,将 fallback.B.free.com 设置为 www.A.com 的"别名"。即使用户访问的是 fallback.B.free.com,只要 Host 头是 www.A.com,Cloudflare 就能识别并正确路由。
  • Host 头不变是关键:

    • 不论请求经过哪个域名 IP,到达 Cloudflare 时的 Host 始终是 www.A.com,Cloudflare 就能根据这点统一处理。

DNS 只是"流量入口",不是"路由规则"

真正决定请求怎么走的,是 Cloudflare 的「边缘配置」

自定义主机名和回退域名的正常用法

假设你是一个建站平台 builder.com:

  1. 客户 张三 想用自己的域名 www.zhangsan.com

  2. 他把域名 CNAME 到你的平台的 custom.builder.com。

  3. 你在 Cloudflare 为 www.zhangsan.com 添加 Custom Hostname 记录。

  4. 设置 Fallback Origin 为 saas-backend.builder.com。

  5. 当访问 www.zhangsan.com

    • Cloudflare 提供自动证书。
    • 请求转发到 saas-backend.builder.com。
    • 后端读取 Host: www.zhangsan.com 来识别用户身份
build with Hugo, theme Stack, visits 0