智能DNS解析

介绍

传统DNS解析,不判断访问者来源,会随机选择其中一个 IP 地址返回给访问者。而智能 DNS 解析,会判断访问者的来源(ECS),为不同的访问者智能返回不同的 IP 地址,可使访问者在访问网站时可获取用户指定的 IP 地址,能够减少解析时延,并提升网站访问速度的功效

权威 DNS 可以根据信息做出不同响应,比如可将移动用户解析到移动节点、联通用户解析到联通节点,电信用户解析到电信节点等,当然了, EDNS 可以做到的不止按运营商分别解析。

ECS

  • edns-client-subnet

在之前,它使用 DNS 解析器(LocalDNS)的 IP 地址对内容进行 DNS 查询。在特定解析器具有单一固定地理位置的时代,此模型运行良好。今天,许多流行的 DNS 解析器在地理上分散(Google DNS 和 OpenDNS 是两个很好的例子),并且特定解析器的位置不再是客户端位置的准确预测器。如果对内容的请求被路由到比需要更远的边缘位置,这可能会导致性能欠佳,因此 Google 提交了一份 DNS 扩展协议,允许 DNS resolver 传递用户的 IP 地址给 authoritative DNS server。

DNS 协议的 EDNS-Client-Subnet 扩展通过返回附加信息以响应 DNS 查询来解决此问题。该信息允许内容交付网络做出更好的决策。此扩展是作为 Faster Internet 项目的一部分开发的。

智能解析实现原理

云解析是通过识别LOCALDNS的出口 IP,来判断访问者来源

  • 客户端LOCALDNS支持 EDNS
    因为云解析 DNS 支持 edns-client-subnet ,所以在获取访问者来源 IP 时,优先获取 edns-client-subnet 扩展里携带的 IP ,如果 edns-client-subnet 扩展里存在 IP,云解析 DNS 会以该 IP 来判断访问者的地理位置 ;如果不存在,则以 LocalDNS 出口 IP 来判断访问者的地理位置。
  • 客户端LocalDNS不支持EDNS
    LocalDNS 会迭代请求至云解析 DNS,云解析 DNS 根据访问者 LocalDNS 出口 IP 来判断访问者的地址位置,实现智能解析
  • 客户端LocalDNS变相支持EDNS
    用户发起 DNS 请求,递归到 LocalDNS,则 LocalDNS 将本次请求发送到二级节点,通过二级节点向云解析 DNS 发起请求,此时云解析DNS会根据 LocalDNS二 级节点的地域位置返回具体的细分线路解析结果

查看DNS是否支持 ECS

使用o.myaddr.l.google.comTXT记录集,把Resolver-IP替换为你查询的 LocalDNS IP

dig +nocl TXT o-o.myaddr.l.google.com @Resolver-IP +short
  • 如果不支持 EDNS 客户端子网扩展,则输出将与以下类似
  • 国内外的机器执行可能会有不一样的结果,可能假(有些DNS国内不支持EDNS)
[root@wiki-doc /]# dig +nocl TXT o-o.myaddr.l.google.com @223.5.5.5 +short//国内
"219.128.79.148"
[root@7qrdsfdses0 /]# dig +nocl TXT o-o.myaddr.l.google.com @223.5.5.5 +short//境外
"47.242.82.131""edns0-client-subnet 5.181.224.0/25"

在此例中,输出表明 IP 地址为47.242.82.131的解析程序支持EDNS客户端子网扩展。客户端子网5.181.224.025信息将被发送到权威名称服务器,权威DNS通过客户端子网判断请求者的地理位置,进而应答精确的地理 IP

DNS请求传递客户端子网

  • 如果您使用的是DIG9.9.3或更高版本,则还可以使用dig命令传递客户端子网
  • 第一行表示DN解析程序的IP地址。第二行提供了edns0-client-subnet,该值已传递给权威名称服务器
[root@7qrdsfdses0 /]# dig +nocl TXT o-o.myaddr.l.google.com @8.8.8.8 +subnet=1.1.1.0/24 +short"172.253.5.4""edns0-client-subnet 1.1.1.0/24"

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注