《孙子兵法》曰:“知己知彼,百战不殆”。无论我们从事网络测量还是网络安全研究,如果我们不能对被测试的目标有一定的了解,那么测量和安全研究就无从谈起。一些大型厂商所提供的互联网基础设施由于负载量大,往往会采用较为复杂的负载均衡机制和安全策略。如果研究者不能对这种研究目标的内部结构有一定了解,那么就很难获得准确的测量结果,更不用说能有效地发现安全问题了。因此,业界普遍对这种大型基础设施的内部设计架构感兴趣。
本次介绍的论文主要从设计者和运维者的角度,对 Akamai DNS 这一大型域名权威服务的网络架构设计进行介绍,包括负载均衡架构、故障恢复机制和安全防护机制。论文发表于计算机网络顶级会议 ACM SIGCOMM 2020,作者团队来自 Akamai 公司和马萨诸塞大学阿默斯特分校。
全文约3000字,阅读约9分钟。
01
【研究背景】
目前,互联网的流量呈中心化趋势,越来越多的用户倾向于使用第三方域名托管服务,而不是自己搭建域名权威服务器 [1]。近年的研究表明,在排名前 10 万的流行域名中,有 89% 依赖于第三方域名托管服务 [2]。这种第三方域名托管服务,尤其是那些由大型厂商提供的,已经成为互联网基础设施的重要组成部分,其鲁棒性和安全性受到了学术界和工业界的重视。
然而,针对这些大型域名托管服务的研究并不容易。其中一个重要的原因就是:为了保证可用性和鲁棒性,这些大型域名服务往往采用复杂的负载均衡架构。尽管这种设计对普通用户是透明化、无感知的,但会影响到专业研究的测量结果,需要研究者精心设计测量和测试方案。举例来说,研究公共递归服务时,研究者利用缓存记录 TTL (Time to Live) 的侧信道信息,巧妙推断递归服务的多级缓存架构 [3]。
作为最著名的域名托管平台,Akamai DNS 每秒处理约 500 万次 DNS 查询(如图 1 所示)。本论文从设计者和运维者的角度,详细介绍了 Akamai DNS 这一大型域名托管平台的核心功能——域名权威服务器架构。论文的主要内容包括三个方面:
-
负载均衡架构:独立服务点(PoP, Point of Presence)部署方法和组成部分
-
故障恢复机制:机器层面的故障恢复机制和用户输入诱发的故障恢复机制
-
安全防护机制:NS 分配策略、应急策略决策树和用户请求过滤机制
图 1: Akamai DNS每秒处理的DNS查询时间序列图
02
【负载均衡架构】
Akamai DNS 采用任播(Anycast)机制,在全球各地部署大量的独立服务点,以保证能快速响应用户的 DNS 查询请求。Akamai DNS 共维护 24 个不同的任播IP地址前缀,每个独立服务点被分配单个特定的任播前缀。当用户向指定的任播前缀发起查询时,他的报文会被就近路由至一个独立服务点进行处理。
独立服务点包含一系列组件(如图 2 所示),以保证能快速进行故障恢复。具体来说,每个独立服务点配备一个路由器,接入邻接 AS 网络,负责将 BGP 路由信息向外传播,将 DNS 查询流量向内转发。在路由器内部,部署了一组权威服务器节点,运行定制化的 DNS 软件,接受网站管理员的配置,处理来自用户的 DNS 查询。对于每台权威服务器节点,部署一个本地监控节点,持续监控对应的权威服务器节点工作情况。每台权威服务器节点还配备一个 BGP 广播器,向独立服务点路由器广播本权威服务器的路由信息。
图 2: 独立服务点架构
03
【故障恢复机制】
针对两种用户输入导致的故障,Akamai DNS 设计的对应的恢复机制,以尽可能迅速地恢复服务。第一种是用户查询导致的故障,其 DNS 查询路由至其中一个权威服务器节点,导致该节点崩溃;另一种是网站管理员配置导致的故障,网站运维者更新配置文件,如插入 DNS 记录,有可能同时导致所有权威服务器节点崩溃。
对于用户查询导致的故障,往往只影响少量的权威服务器节点。一旦发现权威服务器节点不能正常工作,BGP 广播器会撤回该权威服务器节点的路由信息,使得用户的 DNS 流量转移到其他权威服务器节点;对于网站管理员配置导致的故障,每个独立服务点包含一个特殊的权威服务器节点,这个特殊的节点采用输入延迟策略——即不使用网站管理员提供的最新配置,而是使用其提供的上一版本的历史配置。在正常情况下,BGP 广播器不会传播该特殊节点的路由,使得该特殊节点不处理任何 DNS 查询请求。当检测到由于网站运维者更新配置导致普通节点产生崩溃后,BGP 广播器会撤回崩溃的普通节点路由信息,同时广播特殊节点的路由信息,使得用户的查询请求能被特殊节点处理。尽管用户获得的查询结果是网站管理员的历史配置,但 Akamai 认为相比所有的节点崩溃导致的服务中断,这是个较好的折衷方案。
04
【安全防护机制】
Akamai DNS 主要采取三个层面的安全防护机制,尽最大可能阻止不法分子的攻击,同时避免波及正常用户的流量。论文详细介绍的安全防护机制包括:“分布式部署和授权策略”、“任播流量控制决策树”和“查询优先级策略”。
“分布式部署和授权策略”是一种分摊攻击流量,同时避免其他域名受到攻击波及的安全防护机制。在 DNS 流量中心化的趋势下,域名托管平台的一个独立服务点往往同时承担大量域名的解析工作,一旦一个独立服务点遭受攻击,往往会波及大量域名的正常使用 [1, 2]。为了避免这个问题,Akamai DNS 拥有 24 个任播前缀,分配给全球百余个独立服务点,这些独立服务点被分布式部署。Akamai DNS 通过不同的组合方式,将任播前缀分配给不同的域名。一个例子如图 3 所示:域名 ex1.com 被授权给 A, B, C, D, E, F;域名 ex2.com 同样被授权给 A, B, C, D, E,但不包含 F,而是 G。考虑一个攻击者试图使 ex1.com 瘫痪,那么他必须同时瘫痪使用6个任播前缀 A, B, C, D, E, F 的全部独立服务点,否则,ex1.com 仍有可能正常解析;假设攻击者能力足够同时瘫痪 ex1.com 的6个任播前缀,那么因为没有瘫痪 G 前缀,攻击者仍不能瘫痪 ex2.com,这种分布式部署和授权策略能有效减少攻击者能影响的域名。
图 3: 独立服务点的分布式部署和授权
Akamai DNS 还采用“任播流量控制决策树”,以决定在遭受攻击时流量链路的变化策略。该决策树如图 4 所示,根据解析器是否不可用、邻接链路是否拥塞等多个条件,决定是否要分散流量,或舍弃一些正常的流量以阻止更多的攻击流量。以最左边的决策路径为例:对于一个遭受攻击的独立服务点,假设攻击流量足够大,导致解析器已经无法正常解析域名,并且本独立服务点的邻接链路已经拥塞。如果其他独立服务点能够分散攻击流量,那么就撤回本独立服务点到攻击来源的 AS 的全部链路,使得攻击流量被其他独立服务点处理,尽量避免其中混杂的正常流量受到影响。
图 4: 任播流量控制决策树
如果攻击流量非常大,Akamai DNS 采用“查询优先级策略”,用以对 DNS 查询进行优先级排序,尽可能优先服务正常用户的流量,并丢弃可疑的攻击流量。具体来说,每个查询都会经过四个过滤器,评估该查询的响应大小、源 IP 地址的查询速率、随机子域名和伪造源地址的可能性。这四个过滤器根据该查询的可疑程度,各自输出一个惩罚值。最后,根据惩罚值之和,查询进入一个优先队列。惩罚值高的代表可疑的查询,处理优先级低,并且在必要的时候还会将其丢弃。
05
【总结】
本论文对一个每秒处理约 500 万次 DNS 查询的大型域名托管平台 —— Akamai DNS 的网络架构设计进行了详细的介绍,包括负载均衡架构、故障恢复机制和安全防护机制。这篇论文对学术界和工业界来说具有很大的参考意义:一方面,它为学术研究者提供了一个契机,来了解大型域名解析服务的设计细节;另一方面,它也能启发相关厂商优化网络架构,进一步提升其服务的效率和可靠性。
原文链接
https://doi.org/10.1145/3387514.3405881
参考文献
[1] Aqsa Kashaf, Vyas Sekar, and Yuvraj Agarwal. 2020. Analyzing Third Party Service Dependencies in Modern Web Services: Have We Learned from the Mirai-Dyn Incident?. In Proceedings of the ACM Internet Measurement Conference (Virtual Event, USA) (IMC ’20). Association for Computing Machinery, New York, NY, USA, 634–647. https://doi.org/10.1145/3419394.3423664
[2] Giovane C. M. Moura, Sebastian Castro, Wes Hardaker, Maarten Wullink, and Cristian Hesselman. 2020. Clouding up the Internet: How Centralized is DNS Traffic Becoming?. In Proceedings of the ACM Internet Measurement Conference (Virtual Event, USA) (IMC ’20). Association for Computing Machinery, New York, NY, USA, 42–49. https://doi.org/10.1145/3419394.3423625
[3] Audrey Randall, Enze Liu, Gautam Akiwate, Ramakrishna Padmanabhan, Geoffrey M. Voelker, Stefan Savage, and Aaron Schulman. 2020. Trufflehunter: Cache Snooping Rare Domains at Large Public DNS Resolvers. In Proceedings of the ACM Internet Measurement Conference (IMC ’20). Association for Computing Machinery, New York, NY, USA, 50–64. https://doi.org/10.1145/3419394.3423640
编辑 & 审校 | 王一航、张一铭
原文始发于微信公众号(NISL实验室):【论文分享】Akamai DNS是怎么实现的?