@IT·互联网dns

互联网基础服务之智能 DNS 权威服务

2018-12-31  本文已影响10人  cinder_lv
dns1.png

智能 DNS 概念

智能 DNS 服务,顾名思义是智能的域名解析服务,即自动根据访问域名客户端的 IP 地址返回对应的解析记录。如一个网站的域名分别有电信、联通、移动 3 条带宽,当电信的用户访问网站时,智能 DNS 将自动识别用户的源 IP 地址,将电信带宽的服务器地址返回给用户;当联通用户访问网站时返回联通的服务器地址;当移动的用户访问网站时返回移动的服务器地址。

在无智能 DNS 策略时,DNS 服务器仅负责为用户解析出结果,不用判断用户来源,可能会导致用户访问的域名的速度和体验,甚至由于请求时延导致无法打开网站。智能 DNS 在解析域名时会做一些智能化的判断和检测,自动选择最优的解析结果返回给用户,最终提升用户体验。

访问一个网站时,解析到最佳的服务器地址,可以提升打开网站的速度。

AI.png

互联网基础服务之DNS—基础篇 中提到 DNS 名称服务器从功能上划分为授权服务器、递归服务器及缓存服务器。智能 DNS 服务在授权服务器、递归服务器处均会有所体现,分别为【智能 DNS 权威服务】和【智能 DNS 递归服务】,用于承载不同的应用场景的智能 DNS 服务。

本篇仅介绍智能 DNS 权威服务,有关智能 DNS 递归服务、公共 DNS 递归服务及运营商 DNS 架构等相关介绍,会在下一篇章中详细阐述。


什么是智能 DNS 权威服务?

通常提到的智能 DNS 服务通常指服务化的授权服务器,即将 DNS 授权服务器的功能通过互联网服务重新定义,并提供智能解析的一种平台,也被称为云解析。

另外,企业也可自己管理域名的授权和解析,通过 DNS 软件的 View 参数及 IP 地址库也可实现简单的智能解析,详情可参考 Bind 管理员手册 。自己构建域名授权服务器时域名解析记录及数据会存储在本地,使用智能 DNS 权威服务平台数据会存储在智能 DNS 平台,可根据企业的需求选择适合的方案。


智能 DNS 权威服务的工作原理

IntelligentDNS.png

智能 DNS 平台为解决服务器宕机而导致的故障,均提供 宕机检测 功能,提供配置 HTTP(URL)和 TCP(端口)及其它业务拔测方式,通过多个监控节点进行业务拔测,若配置的解析记录 IP 地址宕机,智能 DNS 平台会自动检测,并把 DNS 解析请求解析到运行正常的服务器 IP 地址(可提前配置备用 IP 地址),以保证业务的高可用。同时宕机检测一般还支持报警及通知功能,如通过邮件、短信、微信及其它方式通知相关负责人进行故障维护等。


智能 DNS 权威服务的应用场景


如何接入智能 DNS 权威服务平台?

智能 DNS 权威服务意在解决域名权威记录的智能解析,即域名最原始数据——资源记录的智能解析,在智能 DNS 平台添加的解析记录即基础篇 6 章节中提到的资源记录(域名、TTL、信息类型、类型、值)。通常域名需要托管至智能 DNS 平台,需将域名的 NS 记录指定为智能 DNS 平台给予的 NS 服务器地址。

如果需要将域名托管至智能 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 地址。工作原理如下:

edns.png

在全链路 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
解析示例及分析

1、如下图所示,首先通过 8.8.8.8 默认解析的结果为 2.2.2.2 。根据智能 DNS 的解析记录得知 CloudXNS 是通过 LocalDNS 8.8.8.8 海外 IP 地址进行解析。

8.8.8.8.jpg

2、接下来通过支持 edns-client-subnet 的 dig 工具,使用网通 IP 地址 202.106.0.20 作为源 IP 地址进行解析,即在 dig 域名时加 +client=源IP地址 ,如下图所示:

202.106.0.20.jpg

3、使用电信 IP 地址 223.5.5.5.5 作为源 IP 地址进行解析,如下图所示:

223.5.5.5.jpg

通过解析和抓包得知,采用 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 值进行修改,后续介绍智能递归服务时,会进行详细阐述。


如何构建一套智能 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
上一篇 下一篇

猜你喜欢

热点阅读