前言:
关于cloudflare优选域名的问题其实网上有很多相关的网站和CDN视频了,不过他们都是基于域名一直被Cloudflare(以下称cf)托管(开启小黄云)的条件下进行优选IP的。本篇文章是围绕使用workers脚本进行重定向前的优选IP进行展开,对一些关于优选IP的一些个人见解,并且提供一些在常见优选域名方法的定制优化,提高访问速度。
这篇文章算是对下面文章CDN优选域名的补充和优化,如果没有看过上一篇文章下面的建议先去看看:
一、起因
在上一篇文章我提到了利用workers的重定向功能来实现最接近完美的http访问,其中就提到了“添加CNAME记录到IP优选域名”,这个操作确实可以降低首次访问的延迟,但是没有详细对其进行展开,因此本篇文章我会详细对CDN优选域名这个操作为什么能够降低首次访问的延迟。
二、为什么不直接开启小黄云代理?
这个原因是因为默认直接开启小黄云的话cf给你分配到的CDN节点可能会很烂,访问速度会比较慢,甚至可能因为DNS污染的原因导致无法访问
未开启CDN优选:
开启CDN优选:
显而易见的结果,开启了CDN优选的话能够解决某些地区解析失败的问题
三、为什么CDN优选可以加快重定向速度?
上面说过,默认直接使用小黄云分配到的CDN服务器可能会很烂,访问速度会不理想,因此我们做的工作就是将你的请求发往最佳的CDN节点进行解析。从一开始直接访问默认分配到的节点再进行重定向和先访问优选节点,在进行重定向后者会快很多。
四、使用网上现成的CDN优选域名可以吗?
网上其实有很多三网优化的CDN优选域名,这些域名会根据你运营商的不同自动给你分配相应的CDN服务器进行CDN优化。这样做确实是万金油的做法,也非常适用于全国地区访问加速
不过这样的缺点就是这样并不能让你所在地区的连接速度最大化,即特调优化是比通用型访问要快的。
这里我进行了特调的CDN优选,将博主连接质量最好的一个CDN节点进行了ip解析,而不选用三网优化的CDN域名,显然这速度是快了非常多的。(如何实现在章节七、优化http请求有说明)
五、再度深入研究整个过程
回顾一下计算机网络的知识,使用域名进行http访问主要要经历3个大阶段:
①dns请求:将dns解析成ip地址并返回
②http请求:带着域名去访问解析到的ip地址
③http回复:http服务器返回所请求域名对应的资源
这就是我们要进行http请求要经历的三个大阶段了
进一步优化
关于优化整个过程,我们可以将这http请求的3个阶段又分为2优化点:
- dns请求优化,加快dns的解析速度
- http请求优化,加快http请求的请求和回复时间
dns请求的话可以可以可以使用国内dns服务器进行替代;http请求优化的话可以为CDN服务器选择特调ip地址
六、优化DNS
我们将域名托管到Cloudflare和将域名托管到国内DNS服务商的解析速度肯定是不一样的,因此如果想优化DNS请求速度的话可以将域名托管到国内的DNS提供商(这里以腾讯云DNS为例)
1、新问题
如果我们将域名解析到国内DNS的话,就不能使用白嫖一些cf的功能的,这显然是不能接受的
2、新方案
之前在看cloudflare优选域名的时候发现一个功能:saas回源
这个思路是参考Netsec的一篇博客:⭐[教程] 通过CloudFlare+SaaS回源优选IP使国内用户高速访问网站 – Dooo.ng 个人博客,我们用到了saas回源的2个功能:自定义主机名和回退源
(1)、自定义主机名
自定义主机名的作用就是相当于使用另一个域名可以代替托管在cf上的域名,例如a.com托管在腾讯云,b.net托管在cf,只要让a.com(包括子域名)的一条解析记录到cf的cdn的ip地址(cname也可以),在cf那边在收到a.com的请求就会当作b.net来处理。这个从a.com->b.net的过程就叫做回退,对应下图步骤1-5
(2)、回退源
回退源是意思就是告诉cf你应该如何处理这个自定义主机名,一般来说就是让这个自定义主机名的请求解析到b.net添加解析的ip地址上(必须开启小黄云),对应上图步骤6。
总结
通过使用cf的saas功能,可以实现a.com不托管到cf上,dns解析使用了是国内的dns解析,可以很快速的返回cdn优选ip,变相加快了dns的解析速度,并且也可以使用上cf的一些功能
3、方案前提
使用cf的saas功能的要求还是挺麻烦的,需要绑定信用卡,这个绑卡操作并不会进行实际的扣费操作,只不过使用这个功能需要绑卡。但是我们大多数人都是没有信用卡的,那又该如何是好呢?其实除了绑定信用卡,cf还支持从paypal授权绑定,paypal是支持绑定正常的银联卡的,因此我们可以先注册好paypal绑定银联卡后cf通过paypal授权来完成绑卡操作。具体如何如何实现大家可以参考网上教程,这里就不过多叙述了。
除此之外还需要主域名在腾讯云解析一个你stun的公网ipv4地址,可以为*.stun.a.com
4、添加自定义主机名
在cf左侧面板的ssl/tls->自定义主机名可以进行自定义主机名的添加,域名填写你的主域名。注意,这里不支持泛域名的自定义主机名,如果你有多个子域名要添加的话只能一个一个地添加
添加完成后需要你验证这个域名的所有权,你需要去到你的主域名的dns托管商,添加下列两条TXT解析记录
这里添加的TXT域名是不包含你的根主域名的,即解析到_acme-challenge.www
和_cf-custom-hostname.www
就可以了
添加完成后等待几分钟刷新一下就可以完成自定义主机名的验证
5、添加回退源
(1)、添加回退dns记录
回到cf上b.net的dns解析,添加一条新的dns解析记录,名称为back,地址填写任意,重点是要开启小黄云,这样我们就可以让这条解析记录可以被workers脚本触发重定向功能。这里其实可以直接将泛域名开启小黄云也是可以的,主要还是让www.a.com的解析能指向一个b.net的小黄云交给workers处理
(2)、绑定回退源
回到自定义主机名这,添加一条回退源,域名填写刚才添加的回退源back.b.net
这样就已经完成了托管在腾讯云www.a.com的请求交给在cf上的back.b.net来处理了,但是我们的workers还不能处理www.a.com的请求,因为里面默认的请求是使用*.b.net/*的,因此我们还需要手动添加一条a.com域名的路由规则
(3)、添加workers路由规则从而
去到重定向的workers路由规则(萌新如果看不懂的话建议先回看[原创]最快的访问!使用Cloudflare+CDN节点优选+workers重定向lucky的ipv4-stun穿透http请求这篇文章的workers原理),添加*.a.com/*的路由
这样你的redirect_workers路由同时存在主域名和副域名的路由记录,这样就可以实现www.a.com的域名解析记录也会被b.net的workers的重定向接管了,至于其他a.com的子域名着需要在自定义主机名一条一条添加完成TXT验证就可以了被workers接管了,于是你的请求最终会变成
①请求www.a.com
②腾讯云收到dns请求并转发给cf的CDN处理
③CDN收到www.a.com的请求
④发现*.a.com是*.b.net的自定义主机名
⑤回退给back.b.net处理
⑥workers接管www.a.com的请求
⑦将请求重定向到www.stun.a.com:6666
⑧查询腾讯云的www.stun.a.com的dns记录并访问对应6666端口
这样的话每次dns请求都是访问腾讯云来解析,避免了第一次查询是向cf进行dns查询,从而加快了dns查询速度
七、优化http请求
对于http请求优化,最关键的就是服务器的延迟和下载速度两个要素了。
1、CloudflareSpeedTest
这个一个由Github大佬XIU2开发用来优选cf的cdn服务器的工具,点我打开
正如XIU2所说,Cloudflare 公开了所有 IP 段,我们可以依次对这些CDN服务器进行延迟和速度测试,来筛选与我们连接最优的CDN节点,这样的话延迟和下载速度就能达到最大化,从而提升我们http的请求和回复速度。
2、如何优化
CloudflareSpeedTest其实主要是用作本地hosts静态解析使用的,给本地的客户端设置一个特调优选的CDN节点ip来加快访问,但是我们也可以将其变为通用型访问,将结果解析到dns上,这样就可以不需要对每一个客户端进行host设置了
3、优缺点
但是这样的设置也是有利有弊的
优点
优点很明显,他可以加快服务器区域内的http请求,并且不需要对每一个客户端进行优选ip的host设置,非常方便,并且在服务器区域内的请求是非常的快的
缺点
虽然这个结果非常美好,但是这种比较激进的实现还是有局限性的
(1)、区域限制大
别看上图的特调IP结果这么美好,但是这会导致http请求受区域影响非常严重,明显呈由服务器往四周递减的分布,因此也就限制了这个特调IP仅适用于和服务器在同一个城市访问户比较快,适合个人在外访问的时候家中服务器的情况,不怎么需要考虑其他外省区域的情况,有些甚至可能会出现解析失败的结果
另外,如果你的服务器和本人不再同一个城市那该如何实现这个特调IP呢?其实方法也很简单,就是在你当前城市的网络使用CloudflareSpeedTest进行测试同步到cf上面就可以实现最快访问了,但是这样就依赖你本地需要同步当前网络的CloudflareSpeedTest测试结果到优选ip的dns解析结果就可以了
(2)、跨运营商结果参差不齐
上面的测试结果其实都是基于同一网络运营商的情况下测出来的,如果是跨运营商的解释结果可能会增加一定的延迟,而并非最快http请求。
可以发现不同运营商之间只使用一个优选IP的话会导致跨运营商之间结果是参差不齐了,这就是网上那些三网优化的cdn优选IP来源的原因了,通常的话他们会存在3大运营商的网络,并分别对cdn进行测速,根据对应不同运营商的结果来返回不同的IP。因为网上的优选IP实现比较复杂,对于家庭网络来说同时存在3条运营商网络也是不太现实的,因此我们能做的就是将其中一条线路优化好。
如果想自己实现三网优化的话可以往下看章节八、cloudlfare分线路解析优化
(3)、需要额外配置定时更新优选IP
使用网上现成的优选域名的话可以省去定时测速更新的工作,因为cdn节点的连接质量会随访问量情况而动态变化,可能会出现白天是最佳的cdn节点,到了晚高峰却无法访问的情况,因此定时更新节点还需要而外配置一些脚本来实现定时更新功能。
目前的博主这边测试广东移动的优选IP可以一直正常访问,并且连接质量还是比较偏优且稳定的,选定了一个优选ip其实不用实现定时更新也是可以的, 但是不排除其他地区是否也是如此,因此还是得需要通过测试才可以评定。
3、小结
如果主要是自己使用的话可以选择地区特调的优选ip进行修改,并且家庭网络和你的设备网络都是同一运营商的话访问速度可以最大化。如果你还需要给全国各地的用户的去访问的话,使用网上的优选域名可以实现均衡稳定的访问。
目前的话博主这边测试大部分地区使用特调ip其实都还是正常访问的,可能就是有些时段部分地区会出现无法访问的情况,对于这种情况的话一般只要换一个解析dns域名就有可能改善,使用运营商默认域名的话可能会出现dns封锁或者污染的问题。
八、cloudlfare分线路解析优化
腾讯云可以支持分线路解析dns地址,因此我们可以为每一条线路设定单独的dns解析记录,从而达到三网优化的效果。
1、前提条件
需要拥有本地三大运营商的网络,可以是热点,可以是WIFI,甚至是蹭别人家的网络也是可以的。一般来说自己家里的网络已经存在一个运营商了,手机流量如果是不同运营商就解决这个问题了,还有一个可以找朋友的手机帮忙开个热点或者蹭一下不同运营商的WIFI也是可以的
2、添加分线路优选IP的
使用CloudflareSpeedTest将3个不同运营商的测速结果分别填写到对应的线路解析就可以了
这样就可以实现分线路解析加速了,并且是三网优化线路
总结
关于优选域名这一块呢,也算是讲清楚为什么要配置优选域名了,对于首次访问的提升还是挺明显的,特别是对于一些访问cf慢的地区。如果只是自己使用的话设置一个特调cdn的ip地址可以实现最大化加速,搭配上saas将dns解析到国内,同时实现dns和http访问最低延迟
📌 本文由 FishBoss_Tca 原创,转载请注明作者和原文链接。
原文链接:https://www.ytca.top/stun/1853/