阿里云域名解析异常事件分析:域名解析过程及根域名服务器作用

阿里云核心域名被劫持事件引发对域名解析过程和根域名服务器作用的关注。文章分析了事件原因和影响,并详细解析了域名解析过程。

原文标题:从阿里云域名解析异常事件看下域名解析过程

原文作者:牧羊人的方向

冷月清谈:

本文分析了阿里云核心域名aliyuncs.com被劫持事件,该事件导致大量依赖阿里云服务的网站和应用出现故障。文章探讨了事件的可能原因,包括安全合规性接管和地缘政治干预,并分析了事件的影响,例如暴露了域名系统在安全管理上的潜在风险。此外,文章详细解析了域名解析的过程,从用户输入域名到最终建立连接,涵盖了本地缓存检查、递归查询、迭代查询以及根域名服务器和顶级域服务器的作用,旨在帮助读者了解域名解析的底层逻辑和根域名服务器的重要性。最后,文章还介绍了中国在IPv6根服务器部署方面的努力,以应对IPv4时代根域名服务器的被动局面。

怜星夜思:

1、阿里云域名劫持事件中,即使阿里云很快修复,但依旧造成了5个多小时的服务中断,除了文中所说的域名去国际化、建立根域名服务器镜像、使用备用域名避免单一依赖等,你认为还有什么其他的应对措施可以减少类似事件的影响?
2、文章提到国内已经部署了IPv6根服务器,你认为IPv6根服务器的部署对中国互联网安全,或者对普通网民来说,有什么意义?
3、域名解析过程中,本地DNS解析器起到了至关重要的作用,但如果本地DNS服务器本身遭到了攻击或者污染,比如返回了错误的IP地址,用户应该如何应对?

原文内容

近日阿里云核心域名aliyuncs.com解析异常,涉及众多依赖阿里云服务的网站和应用,故障从发现到修复耗时5个多小时。本文简要分析下整个事件的过程,并分析域名解析的过程,了解根域名服务器在其中的作用,以了解。

1、aliyuncs.com域名解析异常

2025年6月6日,阿里云核心域名aliyuncs.com 被劫持并重定向至 sinkhole.shadowserver.org,导致其对象存储服务(OSS)、内容分发网络(CDN)以及云解析DNS等多项核心云服务出现大范围故障,波及众多依赖阿里云服务的网站和应用。从发现故障到完成修复,耗时5小时43分。

1.1 事件背景

1)被劫持域名

aliyuncs.com是阿里云核心服务的关键域名,其子域名承载了对象存储(OSS)、内容分发网络(CDN)、容器镜像服务(ACR)等核心功能。

2)劫持目标

域名被指向sinkhole.shadowserver.org——这是非营利安全组织Shadowserver用于接管恶意流量的“安全黑洞”地址,通常用于隔离僵尸网络、钓鱼网站等威胁。

3)技术操作

劫持是通过修改域名的NS记录(权威域名服务器)实现的。原本指向阿里云自有DNS服务器(如 ns3.aliyun.com)的记录被改为Shadowserver的服务器,导致全球DNS递归查询均被导向安全黑洞。

1.2 事件原因

关于事件的原因,目前还没有官方的澄清,主流观点集中在两种:

1)安全合规性接管论

Shadowserver是一个网络安全机构,长期配合FBI等机构打击网络犯罪,曾接管勒索软件域名。此次可能因aliyuncs.com下某子域名涉及恶意活动(如托管病毒、钓鱼页面、违规内容等),被认定为“高危域名”。因此,Shadowserver向域名注册商 VeriSign(.com域名管理者)提交证据,VeriSign依据ICANN条款紧急修改NS记录,然后将域名控制权移交Shadowserver。但是阿里云作为主流云服务商,若因个别子域名违规遭整体接管,显得“过度执法”,缺乏分级响应机制。具体原因尚未得到阿里云或Shadowserver的官方证实。

2)地缘政治干预论

美国注册商VeriSign可基于本国司法命令快速冻结域名(如“紧急接管条款”)。结合中美科技竞争背景,不排除政治动机操作。不过事件未伴随任何政府声明,且修复需与VeriSign协商,而阿里云很快完成了修复,这种可能性不大。

1.3 事件影响

由于aliyuncs.com是阿里云核心服务的基础域名,解析异常导致大量依赖阿里云基础设施的网站和应用无法正常运行,包括cnblog博客园等知名平台因此受到波及。此次事件暴露域名系统在安全管理上的潜在风险:核心业务域名若受制于国际注册商(如VeriSign),可能因政策、司法或安全干预瞬间崩坏。因此需要有相应的应对措施,比如域名去国际化、建立根域名服务器镜像、使用备用域名避免单一依赖等。

面对IPv4时代根域名服务器的被动局面,国内早已采取了“双轨并行”的战略:首先是在国内部署镜像根服务器,通过专用硬件设备实时同步全球域名数据,一旦国际链路中断,国内镜像服务器可在5秒内完成切换,保障基础网络服务;另外在2015年,中国联合日本、美国等16国发起全球IPv6根服务器部署计划,截至2025年全球已架设25台IPv6根服务器,其中4台部署在中国(1台主根、3台辅根)。

2、域名解析过程
2.1 什么是根域名服务器

互联网的底层逻辑始终围绕着根域名服务器(Root Server)展开。在IPv4体系下,全球仅13组根服务器构成了互联网的“中枢神经”,其中1个为主根域名服务器在美国,其余12个均为辅根域名服务器,其中9个放置在美国,欧洲2个位于英国和瑞典,亚洲1个位于日本,而国内是没有IPv4根域名服务器的。

这13组根服务器对应的是13个IP地址,对应了A-M共13个编号(如a.root-servers.net到m.root-servers.net)。其背后使用了任播(Anycast)技术,任播最初由RFC1546提出,主要用在DNS根服务器上,具体的解释如下:

任播是指在IP网络上通过一个IP地址标识一组提供特定服务的主机,服务访问方并不关心提供服务具体是哪一台主机提供的,访问该地址的报文可以被IP网络路由到“最近”的一个(最好也只是一个,别送到多个)服务器上。这里“最近”可以是指路由器跳数、服务器负载、服务器吞吐量、客户和服务器之间的往返时间(RTT,round trip time)、链路的可用带宽等特征值。

这意味着在全球范围内部署了数百台物理服务器,它们共享这13个IP地址。当向其中一个IP发送查询时,网络路由会将你的请求引导到离你地理位置最近、网络状况最好的一个物理服务器实例上。这种部署极大地提高了根服务器的性能、可靠性和抗攻击能力。

1)根域名服务器作用

  • DNS查询的起点: 当本地DNS解析器不知道某个域名的权威服务器在哪里时,它首先会查询根域名服务器。
  • 提供顶级域(TLD)服务器的指引:根服务器本身通常不存储具体域名(如 www.aliyun.com)的IP地址信息。它们存储的是所有顶级域(Top-Level Domains, TLDs)的权威服务器信息。这些顶级域包括:通用顶级域(gTLD):如.com, .net, .org, .edu, .gov, .mil, .int, 以及后来的 .info, .biz, .name, .xyz 等新gTLD;国家和地区代码顶级域(ccTLD):如 .cn, .uk, .jp, .de 等。
  • 引导解析器:根服务器在收到查询后,会告诉解析器:“你要找的域名属于.com 这个顶级域,负责.com域的权威服务器的地址是这些”。解析器接着就去查询.com的权威服务器。
2.2 域名和DNS区别

域名是人类可读、便于记忆的互联网地址标识符。它是一个层次化的字符串,用于唯一标识一台服务器、服务或网络资源在互联网上的位置。例如:www.aliyun.com、www.baidu.com。

DNS是一个分布式数据库系统和一个服务协议,它会将人类可读的域名转换成机器可用的IP地址 。DNS采用树状层级结构,根服务器在顶端,下面是顶级域(TLD)服务器,再下面是二级域(如 aliyun.com)的权威服务器,依此类推。同时DNS中定义了客户端(解析器)如何向服务器查询信息,以及服务器如何响应的规则。

2.3 域名解析过程

当从客户端输入某个域名地址如www.aliyun.com,整个域名解析过程如下所示:

1)用户输入与本地缓存检查

用户在浏览器中输入https://www.aliyun.com并回车。浏览器首先检查自己的缓存中是否有www.aliyun.com对应的IP地址,并且该记录是否未过期(TTL未超时)。如果有且有效,则直接使用该IP建立连接,跳过后续所有DNS查询步骤。

2)操作系统缓存检查

如果浏览器缓存没有,浏览器会询问操作系统的DNS缓存。操作系统缓存可能保存着之前其他程序查询过的结果。如果找到有效记录,则返回给浏览器使用。

3)本地Hosts文件检查

如果操作系统缓存也没有,操作系统会检查本地的hosts文件(如Linux的/etc/hosts)。这个文件可以手动配置域名到IP的映射。如果找到匹配项,则使用该IP。

4)查询本地DNS解析器

如果以上缓存和hosts文件都没有所需记录,操作系统会将DNS查询请求发送给配置的本地DNS解析器。这个解析器通常是路由器(192.168.x.x)、ISP 提供的DNS服务器(如 8.8.8.8, 114.114.114.114),或者公共 DNS(如 8.8.8.8, 1.1.1.1)。

5)本地DNS解析器的缓存检查

本地DNS解析器首先检查自己的缓存中是否有www.aliyun.com的记录且未过期。如果有,则直接返回结果给客户端操作系统,操作系统再给浏览器。

6)递归查询开始(向根域名服务器)

如果本地DNS解析器的缓存里没有www.aliyun.com的记录,它必须开始一个递归查询过程来找到答案。首先解析器知道根域名服务器的IP地址列表(这些地址通常是硬编码在解析器软件中或通过配置获得),然后解析器向13组根域名服务器中的某一个(通常是随机选择一个,或者根据网络状况选择最快的)发送一个DNS查询请求,询问 www.aliyun.com 的A记录。

注意: 根服务器只负责顶级域(TLD)的信息,它不知道aliyun.com或www.aliyun.com的具体地址。

7)根域名服务器的响应

根服务器收到查询后,查看请求的域名www.aliyun.com。它识别出这个域名的顶级域(TLD)是 .com,它不会给出www.aliyun.com的IP,而是给出一个 “引荐”(Referral)响应。这个响应包含:负责.co这个顶级域的权威域名服务器(TLD Nameservers)的域名列表以及这些域名对应的IP地址列表。通常响应里会直接包含这些TLD服务器的IP地址(称为“胶水记录” Glue Records),以避免解析器再去查询这些TLD服务器域名的IP。

8)查询 TLD(.com)权威服务器

本地DNS解析器收到根服务器的引荐响应后,选择其中一个.com TLD权威服务器的IP地址(如192.xx.xx.xx-a.gtld-servers.net)。解析器向这个.com TLD权威服务器发送查询请求,同样询问www.aliyun.com的A记录。

9)TLD(.com)权威服务器的响应

.com TLD 权威服务器收到查询后,查看请求的域名www.aliyun.com。它识别出这个域名的二级域(Second-Level Domain)是aliyun.com。TLD服务器也不知道www.aliyun.com的具体地址,但它知道负责aliyun.com这个域的权威域名服务器(Authoritative Nameservers)的域名列表(如 dns9.hichina.com, dns10.hichina.com)。TLD服务器返回一个引荐响应给本地DNS解析器,包含 aliyun.com 的权威服务器的域名列表,通常也会包含这些权威服务器的IP地址(胶水记录)。

10)查询 aliyun.com 的权威服务器

本地DNS解析器收到TLD服务器的引荐响应后,选择其中一个aliyun.com权威服务器的IP地址。解析器向这个aliyun.com的权威服务器(例如 dns9.hichina.com)发送查询请求,询问www.aliyun.com的A记录。

11)aliyun.com 权威服务器的响应

aliyun.com 的权威服务器是最终掌握 aliyun.com 及其子域名(如 www.aliyun.com)真实记录的服务器。它查找自己的区域文件(Zone File),找到 www.aliyun.com 对应的A记录(IP地址)。它将该IP地址(如 203.xx.xx.xx)作为 “权威应答”(Authoritative Answer)返回给本地DNS解析器。

12)本地DNS解析器缓存并返回结果

本地DNS解析器终于获得了www.aliyun.com的IP地址。解析器将这个结果以及相关的TTL(生存时间)值缓存到自己的内存中,以便后续相同的查询能快速响应。最后将这个最终的IP地址返回给发起查询的客户端操作系统。

13)客户端建立连接

客户端操作系统将IP地址交给浏览器。浏览器使用这个IP地址(203.xx.xx.xx)向阿里云的Web服务器发起TCP连接,开始传输网页内容。

2.4 DNS中几个概念

1)递归与迭代查询

客户端到本地DNS解析器为递归查询(解析器负责完整结果)。本地DNS解析器向根/TLD/权威服务器为迭代查询(逐步获取引荐)

2)胶水记录(Glue Records)

根/TLD服务器在响应中直接提供下一级服务器的IP,避免额外查询 。

3)TTL控制缓存

所有缓存均受TTL约束,确保及时更新。

参考资料:

  1. https://blog.csdn.net/techforward/article/details/131172230
  2. https://www.secrss.com/articles/79518
  3. https://status.aliyun.com/#/eventDetail?eventId=27

IPv6根服务器的部署对中国互联网安全和普通网民来说,意义重大,可以从以下几个方面理解:

1. 提高网络自主可控性: IPv4根服务器长期由美国主导,中国在IPv4根服务器体系中处于被动地位。IPv6根服务器的部署,打破了这种局面,提升了中国在互联网基础设施方面的话语权和自主权,降低了受制于人的风险。

2. 增强网络安全性: IPv6根服务器的分布式部署,降低了单点故障的风险。即使部分根服务器受到攻击或发生故障,其他根服务器仍然可以提供服务,保障全球域名解析的稳定性。此外,IPv6本身也具有更高的安全性,例如支持IPsec等安全协议,可以有效防范网络攻击。

3. 优化网络访问体验: IPv6根服务器的部署,可以缩短国内用户访问根服务器的物理距离,降低网络延迟,提高域名解析速度,从而提升用户的上网体验。尤其是在访问国外网站时,可以减少因跨境网络拥堵造成的延迟。

4. 促进IPv6发展: IPv6根服务器的部署,是推动中国IPv6发展的重要举措。随着IPv6基础设施的完善,将加速IPv6的普及应用,为物联网、5G等新兴技术的发展奠定基础。

5. 应对未来网络挑战: 随着互联网的快速发展,IPv4地址资源日益枯竭,IPv6是解决地址资源短缺的根本途径。IPv6根服务器的部署,为未来互联网的发展提供了充足的地址空间,可以满足物联网等海量设备接入的需求。

这事儿说白了,就是“把命运掌握在自己手里”。以前IPv4根服务器都在别人家,就像把钥匙交给了别人,心里总不踏实。现在有了自己的IPv6根服务器,就像自己配了把钥匙,安全感大大提升。

对我们普通老百姓来说,可能感觉不出来啥,但以后上网速度可能会更快更稳定,而且不用担心哪天突然上不了网了。这就像有个靠谱的“门卫”,保护着我们家的网络安全。

从更长远的角度看,我认为IPv6根服务器的部署,是中国参与构建下一代互联网治理体系的重要一步。以前的互联网治理规则,主要是由美国主导的。现在我们有了自己的根服务器,就可以更多地参与到互联网标准的制定和规则的讨论中,推动建立一个更加公平、开放、安全的互联网环境。

这就像加入了一个“联合国”,大家一起商量事儿,而不是一家说了算。这对于维护中国的网络主权和保障全球互联网的健康发展,都具有重要意义。

我认为可以考虑以下几个方面:

1. 加强安全监控和快速响应机制: 建立更完善的域名安全监控系统,实时监测域名解析状态,一旦发现异常能够立即告警并启动应急预案。同时,需要建立高效的应急响应团队,能够迅速定位问题、评估影响并采取措施。

2. 多重DNS解析方案: 采用主备DNS解析方案,比如同时使用多个不同服务商的DNS服务,并将它们配置为互为备份。这样,即使主DNS服务出现问题,备用DNS服务也能迅速接管,保障域名解析的连续性。

3. CDN加速与缓存优化: 充分利用CDN(内容分发网络)的加速和缓存能力,将网站的静态资源缓存到全球各地的CDN节点上。当域名解析出现问题时,用户仍然可以从CDN节点获取缓存的资源,从而保证网站的基本访问体验。

4. 关键业务的容灾备份: 对于核心业务,建立完善的容灾备份系统,将数据和应用程序备份到多个地理位置不同的数据中心。一旦主数据中心出现故障,可以迅速切换到备用数据中心,保证业务的连续性。

5. 与注册商建立快速沟通渠道: 与域名注册商建立紧密的合作关系,确保在出现紧急情况时能够快速沟通并采取措施。例如,可以与注册商签订服务级别协议(SLA),明确故障处理时间和响应速度。

6. 定期进行应急演练: 定期组织应急演练,模拟各种故障场景,检验应急预案的有效性,并及时发现和解决存在的问题。通过演练,可以提高团队的应急处理能力,缩短故障恢复时间。

从安全角度,我认为最重要的是养成验证结果的习惯。即使更换了DNS服务器,也不能完全保证安全。可以使用在线工具(比如VirusTotal的URL扫描功能)检查网站的IP地址是否安全,或者使用SSL证书信息来验证网站的真实性。

此外,可以考虑使用DNSSEC验证工具。虽然DNSSEC不能防止DNS服务器被攻击,但可以验证DNS数据的完整性,确保你收到的结果没有被篡改。当然,这需要网站和你的DNS解析器都支持DNSSEC。

从技术角度看,我觉得可以考虑引入DNSSEC(DNS安全扩展)。虽然这次事件是NS记录被篡改,但DNSSEC能提供域名信息的来源认证和数据完整性校验,防止DNS欺骗和缓存污染。当然,这需要域名注册商、解析服务商和客户端共同支持,部署起来比较复杂,但能显著提升安全性。

另外,我觉得可以借鉴互联网的“尽力而为”原则,设计“降级服务”。比如,网站瘫痪时,至少能显示一个静态页面,告诉用户“我们正在抢修”,总比一片空白要好。这需要对服务进行模块化设计,区分核心功能和非核心功能,在紧急情况下优先保证核心功能可用。

我觉着这事儿吧,有点像家里停电,不能光想着多买几个充电宝。除了文里说的那些“硬核”措施,还得在“软实力”上下功夫:

* 搞好“邻里关系”: 多跟安全机构、云服务商啥的交流,信息共享,说不定人家早发现了啥猫腻,能提前预警。
* 练好“内功”: 别光依赖大厂,自己也得懂点安全技术,能快速排查问题,实在不行还能自己手动改hosts文件顶一阵儿。
* 做好“心理建设”: 别指望100%不出事,万一真瘫了,有个Plan B能安抚用户,别让他们觉得“世界末日”了。

说白了,就是“鸡蛋别放一个篮子里”,啥都备份一份,心里才踏实。

如果本地DNS服务器遭到攻击或污染,返回了错误的IP地址,用户可以采取以下措施进行应对:

1. 更换DNS服务器: 这是最直接有效的方法。用户可以将本地DNS服务器更换为其他可靠的公共DNS服务器,例如:
* Google Public DNS: 8.8.8.8 和 8.8.4.4
* Cloudflare DNS: 1.1.1.1 和 1.0.0.1
* Quad9: 9.9.9.9 和 149.112.112.112
* 国内公共DNS:114.114.114.114

更换DNS服务器的方法:
* Windows:控制面板 → 网络和Internet → 网络和共享中心 → 更改适配器设置 → 右键点击当前网络连接 → 属性 → 选择“Internet协议版本4 (TCP/IPv4)” → 属性 → 选择“使用下面的DNS服务器地址” → 输入首选DNS服务器和备用DNS服务器地址。
* macOS:系统偏好设置 → 网络 → 选择当前网络连接 → 高级 → DNS → 点击“+”号添加DNS服务器地址。
* Linux:修改/etc/resolv.conf文件,添加nameserver 8.8.8.8等DNS服务器地址。

2. 刷新本地DNS缓存: 清除本地DNS缓存可以强制操作系统重新获取最新的DNS解析结果。方法:
* Windows:打开命令提示符,输入ipconfig /flushdns并回车。
* macOS:打开终端,输入sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder并回车。
* Linux:不同的Linux发行版有不同的命令,可以搜索“Linux flush DNS cache”找到对应的命令。

3. 检查Hosts文件: Hosts文件可以将域名直接映射到IP地址,绕过DNS解析。检查Hosts文件(Windows位于C:\Windows\System32\drivers\etc\hosts,Linux和macOS位于/etc/hosts)是否被篡改,删除恶意条目。

4. 使用VPN: VPN可以加密网络流量,并通过VPN服务器进行DNS解析,避免本地DNS服务器污染。

5. 使用DoH/DoT: DNS over HTTPS (DoH) 和 DNS over TLS (DoT) 是加密DNS查询的协议,可以防止DNS劫持和中间人攻击。一些浏览器和操作系统支持DoH/DoT,用户可以在设置中启用。

6. 安全软件: 安装杀毒软件和防火墙,可以扫描和清除恶意软件,防止DNS被篡改。

7. 联系ISP: 如果怀疑是ISP的DNS服务器出现问题,可以联系ISP进行确认和解决。

这事儿搁古代,就像是“驿站”给的消息是假的,直接影响出行效率。现在我们能做的就是:

* 换个“驿站”: 赶紧换个靠谱的DNS,就像楼上说的那些,都是公开免费的。
* 自己查“地图”: 手动查一下正确的IP地址,加到hosts文件里,相当于自己记路,不依赖“驿站”了。
* 开启“护身符”: 用VPN加密,就像穿了马甲,让坏人没法识别你的目的地。

总之,就是多条路可选,别在一棵树上吊死。