1.引入
Cloudflare 想必大家都十分熟悉,提供免费的 Anycast CDN 以及近乎无限的 DDoS 防护,但是除非 Enterprise 计划的用户才可以使用大陆节点,同时 Cloudflare 开放给免费用户的节点往往线路优化不怎么好,由此便引申出了境内采用其他 CDN ,境外使用 Cloudflare 的方法,但是这种方法便正需要 CNAME 方式来接入。
2.准备
- 一个 Cloudflare 账户
- 两个域名,一个在 Cloudflare (此处示例为 mefrp.top),一个在其他服务商(你需要接入的域名,此处示例为 efmeit.com)
- 一张银行卡(Cloudflare 支持银联,只是走个过场, SaaS 是免费的)
3.配置
添加付款方式
我这里添加过了,不再过多解释
开通 SaaS 服务
SaaS 即自定义主机名,这是他的官方文档 Cloudflare for SaaS · Cloudflare for Platforms docs
配置回退源
通俗来说,就是配置源站,需要我们去 DNS 中添加一个解析,主机记录随意,指向你的源站服务器,并开启 Cloudflare 的代理。随后,回到自定义主机名的页面,点击,输入刚刚的回退源域名,点击添加回退源。
然后,我面点击“添加自定义主机名“来添加我们想要 CNAME 接入的域名
点击添加,随后会要求我们添加两条 TXT 记录
按照要求添加即可,等待一会静待刷新
如图即为已经接入成功了,现在我们去添加指向该域名的 DNS 纪录(CNAME 即可,可以选择 CNAME 到刚刚的回退源)
然后就可以开始愉快的访问了
3.进阶使用
我们可以使用智能解析来分国内国外解析,此处提供 DNSPOD DNS服务和基于 PowerDNS 的自建权威 DNS 服务示例(二选一即可,实际使用建议使用 DNSPOD / 阿里云解析,等大厂提供的 DNS 解析服务)
DNSPOD
如下图所示即可(注意线路类型个人建议留一个默认给到境外,不然一个境内一个境外很可能有偶见性匹配不出来的情况?)
PowerDNS
如下图所示,使用官方提供的 LUA 解析功能和 GeoIP 支持
apt 安装即可,后在 pdns.conf 配置 LUA 解析、GeoIP 数据库(可从 MaxMind 获取)等
# 启用 LUA 解析
enable-lua-records=yes
# 此处示例使用的是 MySQL 作为后端,具体需要自行调整
launch=gmysql,geoip
# GeoIP 数据库文件
geoip-database-files=/etc/geoip/GeoLite2-City.mmdb
PowerDNS 提供了一个叫做 country 的函数
例如这样
TXT ";if(country('CN')) then return 'YES' else return 'NO' end"
在国内的解析结果就是 YES,境外就是 NO
根据他我们就可以写出我们需要的 DNS 记录
CNAME "";if(country('CN')) then return 'test.femeit.com.cdn.dnsv1.com.cn' else return 'mefrp.top' end"' end"
配置如下
无论你是如何配置的,最终我们可以看到这样的 DNS 解析结果,ping 值也都比较好看了
参考文章: