利用Cloudflare Partner和第三方DNS解析 自定义CF IP 实现国内访问加速

温馨提示:本文最后修改于 78 天前,部分内容可能已经过时。如文章内容或静态资源失效,请联系我进行更新,谢谢~
最后更新:2020.1.18 更正细节,补充内容

引子

几天前,我发现访问我的博客速度飞快,延迟很低,只在晚上稍有丢包,路由追踪过去发现cloudflare的CDN节点竟然在香港!平常通常会指向美西,这使得CF免费版的CDN在国内访问速度不佳,对于我移动的网络更是“减速器”。路由追踪指向香港,物理距离近了很多,速度当然飞快。

然而,好景不长。最近几天,我在使用我的私有云时,发现网速奇慢无比。路由追踪一看——WTF!被解析到了法国法兰克福!延迟最低200+,高了有400+!高峰时段丢包率也不是很低。习惯之前超低延迟的我,自然受不了了。得想个办法。

实现技术

cloudflare免费版分配到的IP通常是104.24.4.110和104.24.5.110.而这两个IP是任播“Anycast”IP,虽然IP地址相同,但在全球不同地域,入口却是不同的,理论上算法会选择与你距离(不单单是物理距离,这个算法非常复杂)最近的入口进入。

像CF这样的大型云计算网络,它们内部是高速互联的,会以最好的网络进行互联互通。再加上CDN的缓存,不同入口进入的用户,也能拿到一模一样的数据。就像一座摩天大楼,不管从离你多远的入口进入,都算你进入了大楼。这也就是几年前,用“扫描Google IP”的方法给利用GAE的GoAgent续命翻WALL的原理。

然而我不是氪金用户,我是CF免费版用户,这套算法自然而然的也不会把最好的资源给我。这就是为什么有明明有更好的香港的服务器,我却被分配到了法兰克福的服务器上。用户不得不听从CF这套算法的指令,从更远的入口进入。

我所要做的,就是从我最近的入口进入,用最少的时间,拿到相同的数据,让浏览器完成渲染,展示出博客页面。

步骤

言简意赅的记录下步骤,近期比较忙,可能稍有疏漏,待我日后慢慢补充。

一、Cloudflare Partner部分

  1. 到一家Cloudflare Partner提供商处进行注册,我使用的是这家的https://cdn.bnxb.com(没时间弄这个,有时间的话肯定自己搭一个)。期间需要输入你的Cloudflare账号和密码,不放心的可以自己自建Cloudflare Partner,我暂时不提供教程了。
  2. 点击上方的“域名接入”,选择DNS接入即可,后面可以进行更改。弹出的提示框选择确定即可。
  3. 点击上方的“域名列表”,选择自己的域名,进行下面的管理操作。今后我们对域名的操作,很大一部分在这里完成,而不是在CF官网的控制台中。利用Cloudflare Partner和第三方DNS解析 自定义CF IP 实现国内访问加速
  4. 先点击“变更接入”,选择CNAME接入(图中我已经接入过了,所以没有CNAME的选项)。弹出的提示框选择确定即可。
  5. 然后点击“解析管理”,加入我们想要解析的子域名即可。在这一部分,跟在CF官网所填的内容是一致的,回源地址填写你的服务器IP地址,这个按照之前的填法就可以。
  6. 刷新页面,在页面的下方就有我们需要填到第三方DNS解析的CNAME记录的结果了。想用CDN的域名都会出现在这里。利用Cloudflare Partner和第三方DNS解析 自定义CF IP 实现国内访问加速

二、第三方DNS部分

  1. 到一家第三方DNS提供商处进行注册,我是用的是DNSPOD的服务,注意是https://www.dnspod.cn,从腾讯云进入需要上传身份证进行实名,在https://www.dnspod.cn不需要,直接QQ登录即可。(虽然QQ是实名的...)阿里云等其他第三方dns等理论上也可以,我没有亲自试过,试过的可以在评论区留下你使用的感受:)
  2. 进入DNSPOD控制台(不是腾讯云的),添加域名即可。
  3. 进入域名的控制台,添加CNAME记录:把刚才之前Cloudflare Partner“解析管理”页面下方的CNAME记录导入进来;再添加其他记录:之前Cloudflare Partner“解析管理”页面下方并不是你的所有子域名,而只是你想用CDN的域名。把剩下的,不使用CDN的子域名都加上你源服务器的A记录,或者是其他记录。以上线路类型都为默认。这样,在国外还是会就近选择CDN,国外用户能享受到良好的网络体验。利用Cloudflare Partner和第三方DNS解析 自定义CF IP 实现国内访问加速
  4. 重点来了:自定义CDN节点。我只定义了国内的,推荐这样做,否则工程量太大,另外很容易被境外的cloudflare服务器发现,导致域名账号被列入黑名单。给你想用CDN的域名分线路的加入CDN服务器的A记录,移动联通电信三家分开。至于填写什么IP,具体见下方的三大运营商推荐线路。
附:cloudflare官方IP:
https://www.cloudflare.com/ips-v4
可以对这些官方IP进行路由追踪,选出最适合的IP。
另外还可以查看cloudflare官网使用的节点,通常是最好的线路:
https://www.cloudflare.com/cdn-cgi/trace
其中colo值为当前服务器位置,使用nslookup www.cloudflare.com查询当前使用的IP。
除了官方的广播IP外,还有一些分地域的IP。自己谷歌一下吧!这里就不公布了。

附:三大运营商推荐线路,2020.1.18更新
移动:最推荐使用ntt新加坡线路,延迟较低,丢包率低,但IP很难找,IP段在104.24.95.0-104.24.110.0之间。其次是hkix香港线路,通常1.0.0.1使用的就是此线路。再次是美东洛杉矶,不推荐cmhk香港直连,虽然白天延迟很好看,但到晚上丢包率极高,基本无法使用。
电信:推荐使用美东cogentco线路,到洛杉矶机房,通常1.0.0.1使用的就是此线路。
联通:推荐使用美东线路,到洛杉矶机房,通常1.0.0.1使用的就是美东线路,另外日本ntt线路需要自己查找,延迟略低但晚间丢包率爆炸。
注:线路都是动态的,运行商随时可能调整线路,有的稀有IP还是需要自己找的~附赠一个我自用的IP:104.24.108.166,三网体验都不错。

三、域名提供商部分

  1. 到你的域名提供商处,把NS服务器改为DNSPOD提供的服务器。DNSPOD的大都是f1g1ns1.dnspod.net.f1g1ns2.dnspod.net.

大功告成啦!等待DNS解析生效即可。

效果

效果不言而喻。这是在亚太地区晚高峰,欧洲地区低谷时段进行的测试,二者的差距仍然非常明显。

利用Cloudflare Partner和第三方DNS解析 自定义CF IP 实现国内访问加速

此外,最近几天我还对这个主题的静态资源进行进一步整合,CSS和JS等静态资源几乎全都用上了国内CDN,速度应该也会有提升吧。

参考资料:

张戈博客使用CloudFlare CDN加速的经验技巧分享张戈博客 | 张戈博客
CloudFlare 自选IP/CloudFlare Pro - 萌精灵

~~End Of File~~

本文永久链接:https://blog.xmgspace.me/archives/cf-custom-ip.html

本文文章标题:利用Cloudflare Partner和第三方DNS解析 自定义CF IP 实现国内访问加速

本站欢迎转载与引用~但您需要注明文章标题与链接,并表明转载/引用自Xiaomage's Blog。

授权协议:署名-非商业性使用-相同方式共享 4.0 国际(CC BY 4.0)

标签:DNS , Cloudflare , CDN

还没有人评论哦,还不快抢沙发~

添加新评论

i_f01.pngi_f02.pngi_f03.pngi_f04.pngi_f05.pngi_f06.pngi_f07.pngi_f08.pngi_f09.pngi_f10.pngi_f11.pngi_f12.pngi_f13.pngi_f14.pngi_f15.pngi_f16.pngi_f17.pngi_f18.pngi_f19.pngi_f20.pngi_f21.pngi_f22.pngi_f23.pngi_f24.pngi_f25.pngi_f26.pngi_f27.pngi_f28.pngi_f29.pngi_f30.pngi_f31.pngi_f32.pngi_f33.png