如何用智能DNS分流加速网站?让境外访客走CloudflareCDN, 境内访客走国内反代/CDN

ShowUNow 发布于 2025-03-12 1,310 次阅读


写在前面

最近我的博客被人莫名其妙地刷了流量,2天跑了我将近500g的上行流量。而且因为这种恶意刷流量的行为导致我的网站也几乎不能正常访问。起初我是不想管的,因为我这博客本身也没啥人看,闲的没事干想搞破坏就搞吧。但是我突然想起来,我这是华为云的服务器,一旦流量被刷干了,不会停机还会欠费,弄不好直接给我干破产了... 所以,因为这位闲的蛋疼的人,所以才有了这篇文章。

这个项目可以实现什么?

这篇文章可以实现通过国内的只能DNS解析来实现对不同地区的流量分流,比如如果是大陆地区的用户在访问我的博客时,会通过腾讯云广州服务器来访问;而境外用户,则会通过Cloudflare CDN网络来访问。这样做的好处就是既保证了源站的安全,又可以保证境内和境外地区访问的速度。

具体实现的效果可以前往Ping测试网站来Ping 本站域名来实现。

1. 准备工作

需要一个Cloudflare账号、一个可以满足分地域进行智能DNS解析的域名托管平台(阿里云、华为云、腾讯云等均可,本文选择阿里云DNS解析)、一个或多个域名(本文以123.xyz和tingyun.top为例子)。

2. 域名托管

本文将域名123.xyz托管在了Cloudflare平台上,将tingyun.top托管在了阿里云上。

3. Cloudflare开通SaaS

点击你托管在Cloudflare上的域名。在页面左侧找到如图所示的菜单。

开通是免费的,但需要绑定信用卡或paypal。cloudflare作为全球最大的免费CDN服务商,不想绑信用卡,你可以绑定paypal。

由于我已经开通了,没有那个开通界面没法截图了,按照开通步骤操作即可。

4. 设置中转信息

到Cloudflare DNS解析中设置一条DNS解析记录,IPv4地址处填写你源站的IP地址,并打开代理状态。

添加一条记录:

  • 类型:A
  • 名称:任意二级域名(支持顶级域名)
  • 内容:源站IP地址(即你想加速域名它的服务器IP。注如果你已经开启了国内的CDN,也是填写服务器IP,而并非CDN的IP)
  • 代理状态:开(默认)
  • TTL:自动(默认)

然后,保存。

5. 配置Cloudflare SaaS

5.1 先添加回退源

输入框中写123.xyz

点击“添加回退源”,保存后刷新一下,检测是否有效。有效会显示下图这样:

5.2 接入域名

当上面显示“有效”,就可以开始接入我们想要加速的域名了。点击 SSL/TLS→自定义主机名→添加自定义主机名

自定义主机名处填写tingyun.top(即加速的域名),其余保持默认即可。

其他选项保持默认,直接点添加自定义主机名。随后cloudflare会给出两个TXT记录:“证书验证”“主机名预验证”

然后我们切换到需要加速域名的服务商这里来设置上面给出的TXT验证。

当你把TXT都设置正确后,返回到cloudflare SaaS界面,就会看到“证书状态”和“主机名状态”都识别成有效了。如下图:

6. 解析域名

然后就可以开始解析域名了。

在加速域名服务商那,设置:

你设置过要加速的域名。注意不是完整填写,如果你要加速二级域名,就填写对应的前缀。如果是加速主域名,就像我上图一样,填写@。

记录值:完整的中转域名。

然后就是在 线路类型 这里,改成境外。如果发现部分国内访问也在走cloudflare线路,就把原本直连的A记录或CDN的cname记录改成走“境内”

大功告成!这样我们的网站,被国内访问就正常走国内的直连或CDN,当被国外访问时就走了cloudflare CDN。

7. 设置速率限制

在创建规则中,按如图所示的内容填写。

这个规则需要等待大概30s的时间生效。之后如果有人请求的这个频率超过了设定的频率,那么则会触发429封禁。

临时起意搭建的博客,不知道能坚持下去多久。
最后更新于 2025-03-16