随着IPv6规模部署的持续推进,越来越多的CDN服务商完成了节点双栈改造。但节点支持IPv6只是基础条件,真正把IPv6能力交付给用户,还需要DNS解析层面的适配。接下来国科云结合多年DNS服务经验,针对CDN场景下IPv6的DNS解析适配做下简单介绍。
一、CDN对DNS解析的基本要求
CDN的工作原理依赖于DNS调度。用户访问一个使用CDN加速的域名时,DNS服务商返回的是CDN节点的IP地址,而不是源站的真实IP。在IPv6场景下,CDN需要同时响应两种记录查询:A记录查询返回IPv4地址,AAAA记录查询返回IPv6地址。
对于支持双栈的客户端,操作系统会同时请求A记录和AAAA记录。CDN的DNS系统需要能够正确处理这两种请求,返回对应的IP地址。如果只配置了IPv4解析而没有配置IPv6解析,IPv6用户就无法通过域名访问到CDN节点。
工信部在IPv6规模部署行动计划中明确了时间节点要求,网络承载能力需要全面支持IPv6。对于使用CDN的业务来说,这意味着CDN服务商需要提供完整的IPv6接入能力,而DNS解析是其中不可绕过的一环。
二、双栈解析的配置要点
在CDN控制台启用IPv6功能后,通常需要配置域名的AAAA记录。这里有一个容易出错的地方:只配置AAAA记录是不够的,CDN节点本身需要真正开启IPv6监听。有些用户只添加了DNS解析记录,但CDN平台侧没有开通IPv6权限,结果导致IPv6用户解析成功却无法建立连接。
正确的做法是采用A记录加AAAA记录的双栈配置,两条记录都指向CDN节点。这样可以保证IPv4和IPv6用户都能正常访问。需要留意的是,两条记录应该指向同一个CDN服务商提供的节点,不能把IPv4指向CDN节点、IPv6指向源站IP,否则会出现部分用户访问异常。
TTL值的设置也值得关注。IPv6网络环境变化较快,建议将AAAA记录的TTL设置在300秒以下,以便在网络发生变化时能够快速更新。CDN节点发生切换或者IP地址变更时,较低的TTL可以缩短解析缓存的生效时间。
三、CNAME与A/AAAA记录的冲突问题
这是DNS层面一个比较隐蔽的问题。RFC1034标准规定,CNAME记录必须独占一个资源记录集节点,不能和任何其他类型的记录共存。也就是说,如果`www.example.com`配置了CNAME指向CDN的调度域名,就不能再给`www.example.com`配置A记录或AAAA记录。
但在CDN场景下,业务方通常需要把自有域名通过CNAME指向CDN服务商提供的域名,同时又希望终端用户能够通过这个域名拿到IPv6地址。这就产生了矛盾:CNAME独占节点,A记录和AAAA记录无法同时存在。
解决这个问题的方法是在架构上做分离。创建一个专门用于服务发现的域名,这个域名只配置A记录和AAAA记录,不配置CNAME。然后让业务域名通过CNAME指向这个服务发现域名。CDN服务商提供的调度域名本身负责返回节点IP,业务域名只做别名指向。这样既满足了CNAME的使用需求,又保证了双栈解析的完整性。
四、源站回源的DNS解析策略
用户端解析完成之后,CDN节点还需要向源站请求内容,这个环节涉及回源链路的DNS解析。
比较常见的策略是“协议跟随”。CDN节点获取和用户请求相同类型的IP地址,用户用IPv6访问,CDN就解析源站的IPv6地址;如果获取不到,再解析IPv4地址。
另一种策略是固定优先顺序。可以配置为“IPv6优先”,不论用户是用IPv6还是IPv4访问,都先尝试获取源站IPv6地址,失败后再回请求IPv4。当然也可以配置为“IPv4优先”,主要用于没有完成IPv6改造的源站。
除此之外,还有的服务商支持在IPv4和IPv6之间做负载均衡,按权重分配回源请求。
选择建议:如果源站已经完成了IPv6改造,建议采用IPv6优先;如果源站只支持IPv4,则需要配置CDN节点接收IPv6用户请求后使用IPv4回源,避免回源失败。
五、调度精准度与EDNS扩展
CDN的价值体现在把用户调度到最近的节点。IPv6环境下,这个需求没有变化,但实现方式需要适配。EDNS-Client-Subnet(ECS)扩展可以在DNS请求中携带客户端的子网信息,帮助DNS服务器做出更精准的调度决策。
在IPv6场景下,ECS同样适用。CDN的DNS系统通过ECS获取用户的大致位置,然后返回距离用户最近的IPv6节点地址。有实践数据显示,通过EDNS扩展实现精准调度后,IPv6解析成功率可以提升到99%以上。
六、过渡期的兼容方案
对于尚未完成IPv6改造的业务,可以采用一些过渡方案,如DNS64+NAT64技术。DNS64把IPv4地址合成为IPv6地址,NAT64网关则负责完成IPv6和IPv4数据包之间的转换,这样IPv6用户就能通过协议和数据转换访问没有完成IPv6改造的网站了。
另一种方法是在CDN边缘节点进行协议转换,把IPv6用户的请求翻译成IPv4请求再发往源站,这种方式不需要源站完成改造,但需要CDN侧做好兼容性测试。
七、总结
总的来说,CDN场景下IPv6的DNS解析适配,主要集中在三个方面。
DNS解析层面,要正确配置A记录和AAAA记录,确保IPv4和IPv6用户都能正常解析。
回源策略层面,要根据源站的实际情况选择合适的回源方式。源站支持IPv6的可以配置IPv6优先,不支持的可以配置IPv4回源或采用协议转换方案。
调度优化层面,利用EDNS-Client-Subnet等扩展技术提升调度的精准度,把IPv6用户引导到合适的边缘节点。
推荐阅读:



