智能 DNS 概念
智能 DNS 服务,顾名思义是智能的域名解析服务,即自动根据访问域名客户端的 IP 地址返回对应的解析记录。如一个网站的域名分别有电信、联通、移动 3 条带宽,当电信的用户访问网站时,智能 DNS 将自动识别用户的源 IP 地址,将电信带宽的服务器地址返回给用户;当联通用户访问网站时返回联通的服务器地址;当移动的用户访问网站时返回移动的服务器地址。
在无智能 DNS 策略时,DNS 服务器仅负责为用户解析出结果,不用判断用户来源,可能会导致用户访问的域名的速度和体验,甚至由于请求时延导致无法打开网站。智能 DNS 在解析域名时会做一些智能化的判断和检测,自动选择最优的解析结果返回给用户,最终提升用户体验。
AI.png访问一个网站时,解析到最佳的服务器地址,可以提升打开网站的速度。
在 互联网基础服务之DNS—基础篇 中提到 DNS 名称服务器从功能上划分为授权服务器、递归服务器及缓存服务器。智能 DNS 服务在授权服务器、递归服务器处均会有所体现,分别为【智能 DNS 权威服务】和【智能 DNS 递归服务】,用于承载不同的应用场景的智能 DNS 服务。
本篇仅介绍智能 DNS 权威服务,有关智能 DNS 递归服务、公共 DNS 递归服务及运营商 DNS 架构等相关介绍,会在下一篇章中详细阐述。
什么是智能 DNS 权威服务?
通常提到的智能 DNS 服务通常指服务化的授权服务器,即将 DNS 授权服务器的功能通过互联网服务重新定义,并提供智能解析的一种平台,也被称为云解析。
-
如基础篇中所讲,DNSPOD、CloudXNS、ZDNS 及云解析平台均为授权服务器类的智能 DNS 平台;
-
主要能力是托管域名解析,并提供智能解析的配置和管理;
-
通过智能 DNS 平台,可自主接入域名托管,并通过简单操作分别在各线路及地域配置域名解析记录,几分钟内即可完成智能 DNS 的接入并即是生效。
-
通常智能 DNS 权威平台均可提供域名的解析数据及统计,并可分析访问域名的用户数据,如地域、运营商、终端设备等;
另外,企业也可自己管理域名的授权和解析,通过 DNS 软件的 View 参数及 IP 地址库也可实现简单的智能解析,详情可参考 Bind 管理员手册 。自己构建域名授权服务器时域名解析记录及数据会存储在本地,使用智能 DNS 权威服务平台数据会存储在智能 DNS 平台,可根据企业的需求选择适合的方案。
智能 DNS 权威服务的工作原理
IntelligentDNS.png-
根据 DNS 解析及工作原理,我们了解 DNS 解析过程中,是由 LocalDNS 代替真正的用户去请求权威服务器,进行迭代请求的,即在域名解析时,DNS 权威服务仅接受来自 LocalDNS 服务器的请求,即智能 DNS 平台是根据 LocalDNS 的服务器 IP 地址来判断用户来源,从而返回 LocalDNS 所在地域的最优解析记录给用户;
-
智能 DNS 权威服务平台会收录全球各地域的 IP 地址库,并将 IP 地址库划分归纳为各种线路,如北京移动、上海电信、江西移动、北京联通等;
-
当用户配置的 DNS 为北京移动分配的 DNS 时,智能 DNS 权威服务会根据北京移动 DNS 地址的 IP 线路,智能返回对应北京移动的服务器 IP 地址,并把 DNS 解析记录缓存在 LocalDNS 服务器中;
-
当用户配置的 DNS 在所有线路中无法匹配时,则会通过默认线路的智能策略返回结果给 LocalDNS 服务器;
-
在资源记录的 TTL 值到期前,LocalDNS 会自动返回结果给用户,而不会去请求智能 DNS 平台;
-
若用户配置的是 DNS 为公共 DNS 地址(如 8.8.8.8 )时,智能 DNS 权威平台会根据公共 DNS 的 IP 地址返回所对应的解析记录;
智能 DNS 平台为解决服务器宕机而导致的故障,均提供 宕机检测 功能,提供配置 HTTP(URL)和 TCP(端口)及其它业务拔测方式,通过多个监控节点进行业务拔测,若配置的解析记录 IP 地址宕机,智能 DNS 平台会自动检测,并把 DNS 解析请求解析到运行正常的服务器 IP 地址(可提前配置备用 IP 地址),以保证业务的高可用。同时宕机检测一般还支持报警及通知功能,如通过邮件、短信、微信及其它方式通知相关负责人进行故障维护等。
智能 DNS 权威服务的应用场景
-
CDN 加速服务——最典型的智能 DNS 应用场景,一般在 CDN 系统中称智能 DNS 为调度系统,是 CDN 加速的最核心服务,只有将用户的请求通过智能 DNS 调度至最佳的节点上,才可以更快的拿到 CDN 缓存的结果;
-
数据中心业务容灾——可将不同数据中心的同一个业务分别配置为不同的解析记录,在数据中心多活的状态下,可轻松实现容灾方案;
-
业务负载调度——根据地域按照权重比例设置业务解析记录,动态控制业务在各地域的承载量,灵活应对业务运营,提升业务运营效果;
-
业务负载均衡——通过 A 记录轮询及个性化权重轮询功能,配合监控及宕机检测功能,简单实现业务负载均衡,节省成本的同时,保证业务高可用;
-
抗 DDOS 攻击——智能 DNS 权威服务平台一般均通过 AnyCast 及 HA 等架构在全球多个数据中心部署海量集群,由于 AnyCast 架构本身技术架构特性,可帮助业务承载一部分 DDOS 攻击;
如何接入智能 DNS 权威服务平台?
智能 DNS 权威服务意在解决域名权威记录的智能解析,即域名最原始数据——资源记录的智能解析,在智能 DNS 平台添加的解析记录即基础篇 6 章节中提到的资源记录(域名、TTL、信息类型、类型、值)。通常域名需要托管至智能 DNS 平台,需将域名的 NS 记录指定为智能 DNS 平台给予的 NS 服务器地址。
-
CloudXNS 智能 DNS 平台的 NS 服务器地址为:
lv3ns1.ffdns.net
、lv3ns2.ffdns.net
; -
DNSPOD 智能 DNS 平台的 NS 服务器地址为:
f1g1ns1.dnspod.net
、f1g1ns2.dnspod.net
;
如果需要将域名托管至智能 DNS 平台,就需要在域名注册商处将域名的 NS 记录进行修改,即给域名重新指定 NS 服务器。根据基础篇第 8 章节所描述的 DNS 工作原理,域名解析时 LocalDNS 将拿到域名的新 NS 记录,通过域新 NS 服务器地址拿到域名的资源记录数据。如域名 fastcp.cn 托管至 CloudXNS 平台 NS 记录如下:
image-20181227231441521-5923681.png
域名的 SOA 记录通常是由智能 DNS 权威服务平台自动为域名添加的,一般不开放给用户查看和管理。
智能 DNS 平台支持哪些域名解析记录?
通常除 SOA 记录和 域名本身 NS 资源记录无需配置外,智能 DNS 平台均支持通用的 DNS 资源记录,如 A 、AAAA、CNAME、NS、MX、TXT、SRV 等。另外智能 DNS 平台为解决多种应用场景,均进行了资源记录扩展,如 301、302 及支持加权重的资源记录等。如 CloudXNS 平台支持的域名解析记录如下:
image-20181227231040037-5923440.png不同的智能 DNS 平台会提供多种形式的特性,通常基本的 DNS 资源记录即可满足大多数应用需求。
注:一个域名 A 记录和 CNAME 记录是互斥关系,即同一个域名 A 记录和 CNAME 不可同时共存。
智能 DNS 如何根据真正的用户源 IP 进行解析?
根据智能 DNS 权威服务的工作原理描述,智能 DNS 权威平台是根据用户配置的 LocalDNS 进行调度,即根据 LocalDNS 服务器的 IP 地址进行判断。
若用户配置的 LocalDNS 非本地域 DNS 或者为 Public Local DNS(即公共 DNS 解析服务器) ,可能出现调度不精准的情况。如用户配置的 DNS 为谷歌的公共 DNS 8.8.8.8 ,智能 DNS 平台很可能将你的请求解析为一个非本地域的解析记录,即服务器 IP 地址并不是距用户最佳的节点,可能影响业务访问的速度。
考虑到这种场景,伟大的 Google 公司提交了一份 DNS 扩展协议 edns-client-subnet ,允许 DNS Resolver 在解析域名的过程中传递用户的源 IP 地址给权威 DNS 服务器,在 DNS 请求过程中将用户的源公网 IP 地址填充至请求包的 Additional Records
区域,即携带用户真实 IP 地址。工作原理如下:
-
智能 DNS 平台通过 edns-client-subnet 可获取用户真实 IP 地址,并根据真实 IP 地址进行精准调度和解析;
-
如上图所示用户向支持 edns-client-subnet 的 LocalDNS 发出 DNS 请求,LocalDNS 会在请求中传递用户源公网 IP 地址给智能 DNS 平台;
-
若智能 DNS 权威平台支持 edns-client-subnet ,刚会识别到用户的真实 IP 地址;
-
通过校验解析记录数据,分别根据用户 A 和用户 B 的公网 IP 地址返回对应线路的解析记录给 LocalDNS;
-
LocalDNS 将解析结果分别返回给用户 A 和用户 B ,并将解析结果缓存在本地;
-
edns-client-subnet 协议需 DNS 解析全链路均支持才可生效,即权威 DNS 服务器、LocalDNS 均需支持该协议才可真正将用户源 IP 地址从客户端传递给权威服务器;
-
目前仅有限的权威服务器、智能 DNS 平台、LocalDNS 平台支持 edns-client-subnet 协议;
-
支持 edns-client-subnet 的智能 DNS 权威服务平台有 CloudXNS 、DNSPOD 等;
-
支持 edns-client-subnet 的公共 LocalDNS 有 8.8.8.8 、119.29.29.29 等;
在全链路 edns-client-subnet 的支持下,当用户配置的 DNS 为 8.8.8.8 时,智能 DNS 权威平台收到的解析请求将会在 Additional Records 区域携带用户源公网 IP 地址,智能 DNS 权威平台将根据源地址进行解析,并将最精准的 IP 地址返回给 8.8.8.8 后,再将结果返回给用户。
伟大的公司总是在各个方面都如此的伟大,优秀的人总会有优秀的习惯。
edns-client-subnet 解析示例分析
为方便演示和分析,本示例使用 8.8.8.8 作为 LocalDNS ,使用个人域名 fastcp.cn
作为示例域名。如前文描述,该域名已在阿里云将 NS 记录修改为 CloudXNS 智能 DNS 平台的 NS 服务器。
智能 DNS 权威平台设置解析记录
通过智能 DNS 平台分别设置 www.fastcp.cn 域名在各运营商线路的 A 记录,即 IP 地址。如下图所示:
fastcpdns.jpg-
www.fastcp.cn 共配置了6 条 A 记录,在不同线路下分别解析为 1.1.1.1、2.2.2.2 、3.3.3.3 等;
-
海外默认代表当请求的源地址为国外 IP 地址,即解析为 2.2.2.2 ;
-
电信默认代表当请求的源地址为电信 IP 地址,即解析为 3.3.3.3 ;
-
联通默认代表当请求的源地址为联通 IP 地址,即解析为 4.4.4.4 ;
解析示例及分析
1、如下图所示,首先通过 8.8.8.8 默认解析的结果为 2.2.2.2 。根据智能 DNS 的解析记录得知 CloudXNS 是通过 LocalDNS 8.8.8.8 海外 IP 地址进行解析。
8.8.8.8.jpg2、接下来通过支持 edns-client-subnet 的 dig 工具,使用网通 IP 地址 202.106.0.20 作为源 IP 地址进行解析,即在 dig 域名时加 +client=源IP地址
,如下图所示:
-
通过联通 202.106.0.20 地址解析到的结果为 4.4.4.4 ,符合域名解析记录的配置;
-
在 CLIENT-SUBNET 中,可以看到请求携带了源 IP 地址 202.106.0.20;
-
抓包查看 Additional records 中附加了 Option 信息,其中可以看到客户端的源 IP 地址为 202.106.0.20 ;
3、使用电信 IP 地址 223.5.5.5.5 作为源 IP 地址进行解析,如下图所示:
223.5.5.5.jpg-
通过电信 223.5.5.5 地址解析到的结果为 3.3.3.3 ,符合域名解析记录的配置;
-
在 CLIENT-SUBNET 中,可以看到请求携带了源 IP 地址 223.5.5.5 ;
-
抓包查看 Additional records 中附加了 Option 信息 ,其中可以看到客户端的源 IP 地址为 223.5.5.5 ;
通过解析和抓包得知,采用 edns-client-subnet 可以得到更精准的调度,可以更加快速的访问到所需服务。
注:dig 工具默认不支持 edns-client-subnet ,可通过打补丁的方式支持。
如何让 dig 工具支持 edns-client-subnet
本文仅描述 Linux 或 MAC 系统 dig 工具的升级方式,目前 bind-9.9.3 可以支持 edns-client-subnet 的 path 。
下载 bind 和 path
wget ftp://ftp.isc.org/isc/bind9/9.9.3/bind-9.9.3.tar.gz</pre>
tar xf bind-9.9.3.tar.gz
cd bind-9.9.3
wget http://wilmer.gaa.st/edns-client-subnet/bind-9.9.3-dig-edns-client-subnet-iana.diff
将补丁打进 bind 并编译 bind 源码
patch -p0 < bind-9.9.3-dig-edns-client-subnet-iana.diff
./configure && make
替换系统默认 dig 工具
cp /usr/bin/dig /usr/bin/dig.bak
cp ./bin/dig/dig /usr/bin
替换成功后,就可以使用 dig 命令 +client=源IP地址
;
为何解析到的 TTL 值与权威服务配置的不一致?
互联网基础服务之DNS—基础篇 中根据 DNS 协议详细描述了资源记录的组成,包括域名、TTL 、信息类型、资源记录类型、值。其中 TTL 值代表资源记录数据的生存周期为多长时间,默认递归服务器(LocalDNS)拿到的 TTL 值为管理员在智能 DNS 平台中为每条资源记录设置的值,TTL 值到期时,递归服务器会重新去请求 DNS 权威服务器或平台。
通常 LocalDNS 为提高用户体验,减轻递归服务器集群的压力,会将 TTL 值修改为一个较大的值,以提升递归服务器的性能。
-
递归服务器拿到解析记录数据,会将数据缓存,当用户来请求域名时,直接返回解析结果给用户;
-
缓存的命中率越高,则递归服务器重新请求权威服务器的机率就越小,可减轻递归服务器的性能压力;
-
TTL 值较小时,递归服务器请求权威服务器的频率会更高;
-
TTL 值较大时,递归服务器请求权威服务器的频率会降低;
-
对于不经常修改资源记录,比较适合配置较大的 TTL 值,不会对解析产生影响;
-
资源记录的值经常变化时,不适合修改较大的 TTL 值,会对解析和访问产生较大影响;
-
如一个域名的 TTL 为 60 秒,默认递归服务器拿到资源记录的 TTL 值为 60 秒;
-
即递归服务器每隔 60 秒,会触发迭代请求,向权威服务器请求域名的解析记录;
-
若递归服务器为减轻递归压力,修改 TTL 值为 1 天,则每隔一天去请求域名的最新记录;
-
若用户在 1 天内多次修改域名记录,而递归服务器仅缓存了第一次的资源记录,即用户在 1 天内请求到的结果很可能是不正确的,导致网站或业务无法访问到真实服务器地址;
-
若发生此类解析故障,可联系运营商将该域名的 TTL 值放入白名单,不对 TTL 值进行修改,后续介绍智能递归服务时,会进行详细阐述。
如何构建一套智能 DNS 权威服务?
大多数情况下,您可以通过 BIND 软件搭建一套简单的智能 DNS 权威服务平台。若需要提供更强大的性能及解析能力,你可能需要通过 AnyCast 的技术架构搭建 DNS 集群系统,用于承载高并发、高性能、高可用的智能 DNS 服务。通常情况下,你至少需要 2 台以上的服务器、2 台以上的三层交换机及其它设备;若考虑平台的安全防护 (如 DDOS ),可能还需要在系统内核和 DNS 软件级别做大量的调试和优化,同时需要配备专业的安全设备。
关于具体搭建指南,后期会专门介绍 AnyCast 网络技术及 DNS 集群构建,可持续关注。
智能 DNS 权威服务分布式部署在全球多个数据中心及企业机房中,每个域名都有自己的权威服务器,如 .cn
域名由 CNNIC 进行授权管理;在阿里云注册的域名,由万网(阿里云)授权管理;在新网注册的域名,默认由新网进行授权和管理,同时也由域名注册商提供域名的授权服务器。
当我们将域名的 NS 记录指向第三方平台时,即将域名授权给第三方平台进行授权管理,同时也由第三方平台提供域名的权威服务器。当 NS 记录修改成功后,域名在解析过程中,将通过根、顶级域名一级一级找到 NS 记录指向的服务器,通过域名的权威服务器查找相关资源记录数据。
全球域名的根(.
)域名的授权服务器从 A 到 M 共有 13 个节点集群,由美国政府授权的互联网域名与号码分配机构 ICANN 统一管理。13 个节点中有 1 个主根服务节点和 12 个从服务节点。主根服务点和其中 9 个从服务器节点在美国,英国 1 个从服务节点、瑞典 1 个从服务节点、日本 1 个从服务节点。有关根服务器及根服务器镜像后续会详细介绍。
顶级域名分散在各个国家及不同机构分别进行授权管理,如 ".com" 最初由美国国防部管理,现在则由 VeriSign 公司管理,同时该公司也管理着 “.net” 和 “.org” 。
最后中文顶级域名的管理和授权是由 CNNIC 进行管理,如 “.中国” 、“.网络”、 “.公司” 等,可关注 CNNIC 及 互联网域名系统北京市工程研究中心有限公司的官方网站及相关介绍。
qrcode_for_gh_b2aa911dd097_258.jpg
网友评论