以下文章来源于微月人话 ,作者卫 sir
自从美国宣布“清洁网络”行动后,很多懂点网络的人,第一反应是,美国人会下手根域名服务器吗?
这种忧虑可不是一年两年了。
2014 年 6 月 24 日的《人民日报》上引用专家发言:“目前美国掌握着全球互联网 13 台域名根服务器中的 10 台。理论上,只要在根服务器上屏蔽该国家域名,就能让这个国家的国家顶级域名网站在网络上瞬间“消失”。在这个意义上,美国具有全球独一无二的制网权,有能力威慑他国的网络边疆和网络主权。譬如,伊拉克战争期间,在美国政府授意下,伊拉克顶级域名“.iq”的申请和解析工作被终止,所有网址以“.iq”为后缀的网站从互联网蒸发。”1
《信息安全与通信保密》杂志 2014 年第 10 期的一篇文章写道:“2004 年,由于与利比亚在顶级域名管理权问题上发生争执,美国终止了利比亚的顶级域名 .LY 的解析服务,导致利比亚从网络中消失 3 天。”2
对此,我们需要害怕吗?我们需要什么样的反制措施?
不是专家,还真回答不了这个问题。
因为这需要了解 DNS 的工作原理,了解根域名的管理机制。
这里先给出简要回答:不排除这种可能性,但并不是没有办法。
一句话原因:虽然根不在我们手里,但我们有镜像。
DNS 傻瓜书
先了解点基本概念,懂 DNS 的可以直接跳过本节。
1、DNS 是什么?
DNS 就是将域名转换为 IP 的,因为我们人类的记忆力太差,根本记不住 IP,而电脑通信又必须用 IP,所以人类发明了域名,让我们可以记住 baidu.com、taobao.com 这种还算能记得住的域名。然后通过 DNS,将这些域名转换为电脑需要的 IP。
2、DNS 是怎么工作的?
每个电脑里面都设置了本地 DNS 服务器(简称 LDNS),需要的时候,就向 LDNS 发出请求,LDNS 在网上问权威域名服务器(简称权威 DNS),有时候问一家是不够的,要问一大圈下来,最后才能得到答案。
3、权威 DNS 是干什么的?
问我一个域名,我告诉你 IP,如果我不知道,我告诉你谁可能知道,你再去问它。
4、什么是根域名服务器(简称根 DNS)?
当 LDNS 啥都不知道的时候(也即没有任何缓存),就去问根 DNS,根能告诉 LDNS 下一步该问谁。
5、全世界有多少根 DNS?
13 个,其中 10 个在美国,英国和瑞典各 1 个,日本 1 个。
6、根 DNS 的名字和 IP 都是什么?
在这个网址:
https://www.internic.net/domain/named.root
打开可以看到,里面有 13 个根的名字和 IP,其名字从A.root-servers.net 到M.root-servers.net。
A 开头那个简称A根,是主根,其他 12 个(B、C、D、E、F、G、H、I、J、K、L、M)是辅根。
为什么根 DNS 只有 13 台?
本节看不懂没关系(一般人都看不懂),你只需要知道,由于历史原因和技术原因,对于 IPv4 而言,根 DNS 只能有 13 个 IP。
正宗答案是:DNS 主要使用 UDP 数据报传送报文,不含前面的各种头部,DNS 报文要求被控制在 512 字节之内( RFC1035 ),主要考虑是这个大小几乎可以在互联网上畅通无阻,不会因为路径中某个 MTU 太小( MTU 通常总会 >= 576,见 RFC791 )而导致 IP 分片,从而预防了各种不可预期的后果3。
而每一个根 DNS 在 DNS 报文中都要占用一定的字节数,比如根的名称、TTL、IP 地址等。这样,13 个根域名服务器基本上就把空间占差不多了,剩余的字节还要用于包装 DNS 报头以及其它协议参数,所以根域名服务器不易太多,13 个算是比较合适的数目。具体可以看一下“Why 13 DNS root servers?”这篇文章。4
真的只有 13 台服务器吗?
和很多人想象的完全不一样,这 13 个根域名服务器,并不是只有 13 台物理的服务器。
这 13 个根,只是一个逻辑上的概念,每个根 DNS,背后都有多台真正的物理服务器在工作!
截至 2020 年 8 月 12 日,全球一共有 1097 个根服务器。每一个根都有若干个镜像,分布在全球不同的地方。
这个数目在不断上涨,去年 10 月 1 日新中国成立 70 周年阅兵的时候,我看了一下,是 1015 个服务器。
这 13 个根由 12 个独立的机构管理,比如A根和J根都是由 Verisign 公司管理,截至 2020 年 8 月 12 日,A根在全球各地有 53 个站点,J根有 185 个站点。L根由 ICANN 管理,全球有 167 个站点,其中北京 2 个,上海 1 个。
在 root-servers 网站上5,可以查到所有这些根服务器的分布,从网站展示的根镜像服务器地图上看(2020 年 8 月 12 日),北京有 5 个根镜像服务器,上海 1 个,杭州 2 个,武汉 1 个、郑州 1 个、西宁 1 个、贵阳 1 个、广州 1 个、香港 9 个,台北 6 个。
包含港澳台部分,我国一共有 28 个根镜像。
我国境内发出的对根 DNS 的请求,其实都由镜像完成了。这一点后面会解释。
现在,为了增长知识,你该硬着头皮看一些 DNS 细节了。
DNS 到底是怎么工作的?
对于 IT 从业者,希望你能理解并牢牢记住本节的内容。
因为你迟早会遇到有关 DNS 的困惑。
先介绍一下域名的级别:
.代表根域名, .com 这种是顶级域名,也叫一级域名,baidu.com 这种叫二级域名, www.baidu.com 这种叫三级域名,依次类推。
注:也有其他叫法的,反正你知道这个意思就可以了。
再介绍一下最常见的两种域名服务器:
权威 DNS:负责对请求作出权威的回答。权威 DNS 中存储着记录,最常见的 3 种:A记录(记录某域名和其 IP 的对应),NS 记录(记录某域名和负责解析该域的权威 DNS),CNAME 记录(负责记录某域名及其别名)。权威能直接回答的,就回A记录;需要其他权威 DNS 回答的,就回 NS 记录,然后 LDNS 再去找其他权威 DNS 问;如果该记录是别名类型的,就回 CNAME,LDNS 就会再去解析别名。
递归 DNS:通常就是 LDNS,它接受终端的域名查询请求,负责在网上问一圈后,将答案返回终端。
现在举一个具体的例子:比如终端请求 www.baidu.com 这个域名的 IP。
在没有缓存时,LDNS 会从根 DNS 问起:
1、LDNS 问根 DNS 说:“www.baidu.com 的 IP 是多少啊?”。
2、根 DNS 说:“我哪有时间管你这么细的问题,你去问 com 顶级域的 DNS 吧,我只管到顶级域,喏,这些是 com 顶级域 DNS 的名字和 IP,你去问它们吧”。(以 NS 记录回应)
3、LDNS 又忙问 com 的权威 DNS,com 权威 DNS 说:“你问的这是三级域名,我不管这么多,你去问 baidu.com 的权威 DNS 吧,它的名字是 ns.baidu.com,他的 IP 是 XXX(这里可能给出多个权威 DNS)”。
4、LDNS 继续问 baidu.com 的权威 DNS,这次痛快,因为 www.baidu.com 正是它管的,它可能直接给出A记录,也可能给出 CNAME 记录,如果是前者,就直接得到 IP,如果是后者,就需要对别名再做查询。
5、最终,LDNS 得到 www.baidu.com 的 IP,并将其返回给终端。
细心的人会问,在第 1 步中,LDNS 问根 DNS 的时候,他是怎么知道根 DNS 的 IP 的?
这 13 个 IP 通常是预先配置在 LDNS 里面的。在 LDNS 初始化 DNS 缓存或者缓存失效的时候,LDNS 向自己被预先配置的这些 IP 中的一个,发起对根的查询(也即询问.的 NS 记录),获得最新的根 DNS 的信息6。
对于 DNS 服务器软件而言,这 13 个 IP,配置在根提示文件(root hints file)中,可能是 named.cache 或 root.ca 或 root.hints 等等之类的文件。
上面就是各种教科书中都会讲到的 DNS 查询过程,但实际上,没有这么麻烦,因为各个层面都是有缓存的。
实际 DNS 查询的过程,是这样的:
举个例子,比如用户在浏览器中输入这个域名:123.abc.qq.com.cn
1、浏览器会先看自身有没有对这个域名的缓存,如果有,就直接返回,如果没有,就去问操作系统,操作系统也会去看自己的缓存,如果有,就直接返回,如果没有,再去 hosts 文件看,也没有,才会去问 LDNS。
2、LDNS 会去先看看自己有没有 123.abc.qq.com.cn 的A记录,要有就直接返回,要没有,就去看有没有 abc.qq.com.cn 的 NS 记录,如果有,就去问它要答案,如果没有,就去看有无 qq.com.cn 的 NS 的记录,如果有,就去问它,没有就去看有无 com.cn 的 DNS,还没有就去看有无 cn 的 DNS,如果连 cn 的 NS 记录都没有,才去问根。
所以,有了缓存以后,教科书上那种从根问起的情况,实际上很少发生。
只有在各处都没有缓存的时候,我们才会问根。
根镜像起什么作用?
根镜像承担起和根一样的功能。
根 DNS 中,最重要的文件就是根区文件(Root Zone file)。所有顶级域名记录都存在根区文件中。
辅根从主根同步数据,根镜像从根同步数据。最终,所有根和镜像都有着同样的根区文件。
而且最有意思的是,根镜像和根有着同样的 IP。
我们知道,全球有一千多个根镜像,但是大多数人不知道,它们一起共享 13 个 IP! 对的。因为只有 13 个根。
这是如何做到的?答案是任播(Anycast,又译泛播)技术。
不关心技术细节的,请直接看本节的最后一句。
任播最初由 RFC1546 提出,主要用在 DNS 根服务器上。
任播是指在 IP 网络上通过一个 IP 地址标识一组提供特定服务的主机,服务访问方并不关心提供服务具体是哪一台主机提供的,访问该地址的报文可以被 IP 网络路由到“最近”的一个(最好也只是一个,别送到多个)服务器上。这里“最近”可以是指路由器跳数、服务器负载、服务器吞吐量、客户和服务器之间的往返时间( RTT,round trip time )、链路的可用带宽等特征值。
这样,一方面,用户可以就近访问;另一方面,即便部分根出现故障也没事。
有些同学可能联想到负载均衡,没错,大致上就是这个意思。
对于中国用户来说,对根的请求,一般不会跑到美国去,而是通过任播技术路由到中国境内的根镜像上。
根 DNS 是怎么管理的?
根 DNS 目前由 12 家机构管理。A根是主根,由美国公司 Verisign 管理。
根 DNS 中最重要的文件,根区文件,由 ICANN 管理。
ICANN(The Internet Corporation for Assigned Names and Numbers,互联网名称与数字地址分配机构)是成立于 1998 年的一家注册在美国的非营利性组织。
根 DNS 管理的历史变迁过程还是比较复杂的。这里简要说一下。
DNS 最初的技术开发者与管理者是美国南加州大学的 Jon Postel 博士,他掌管互联网初期根 DNS 的管理和分配。
1988 年,美国政府要求 Jon Postel 采取更安全和更合理的措施来保证互联网核心资源的分配和管理7。于是,大名鼎鼎的 IANA(The Internet Assigned Numbers Authority,互联网数字分配机构)被组建,并在 DARPA 和南加州大学信息科学研究所(ISI)的合同下管理。
IANA 负责互联网全局编号和编码的管理与协调,之所以需要这么个机构,是因为互联网协议的值或参数,必须是全球唯一的,否则无法互联互通,比如 HTTP 协议默认都在 80 端口等待用户请求,而 404 编码则一致代表"未找到页面”。IANA 主要职责包括 IP 地址段的分配、协议代码和编号的分配(如协议号、端口号)、自治系统编号 (ASN) 分配、DNS 根区管理(包括通用顶级域名 gTLD 以及国家和地区顶级域名 ccTLD 管理)等。8
1998 年 ICANN 成立之后,美国商务部以合同形式,委托 ICANN 承担 IANA 日常运行,IANA 从 ISI 转移到 ICANN 之下。
对于顶级域名的管理,ICANN 的政策是,每个顶级域名(像 com、cn、org 这种顶级域名,目前有 1000 多个)都找一个托管商,该域名的所有事项都由托管商负责。
.cn 域名的托管商是中国互联网络信息中心(CNNIC),它决定 .cn 域名的各种政策。
.com、.net 、.name、.gov 这四个顶级域名都由 Verisign 公司托管。
Verisign 和 ICANN 还是闹过几次不愉快的。9
2003 年,Verisign 推出了一项新业务 Site Finder,用户访问没有注册过的 .com 或 .net 域名,都会被导向 Verisign 的网站。这意味着,它事实上拥有了所有没有注册过的 .com 和 .net 域名。几天之内,Verisign 就挤入了全世界的前 10 大网站。
ICANN 要求 Verisign 立刻停止该业务,否则将终止域名托管合同。Verisign 屈服了,停止了这项业务,但是接着就把 ICANN 告上了法庭,要求法庭厘请两者之间的合同,ICANN 到底有没有权力干涉它的业务。
2006 年底,他们达成了庭外和解。ICANN 同意延长 Verisign 的顶级域名托管合同,并且同意 Verisign 向消费者收取的单个域名注册费的上限,从 6 美元提高到了 7.85 美元。这个费用标准,一直沿用到了今天,你去注册一个 .com 或 .net 域名,所交的钱有 0.18 美元是 ICANN 收取的管理费,7.85 美元是 Verisign 收取的托管费,其余的钱就是域名零售商的费用。
虽然是 ICANN 运营着 IANA,但毕竟是在美国政府的合同管理之下,全球各国以及民间人士颇有微词,一致认为美国政府应该彻底退出。
2014 年 3 月 14 日,美国商务部国家通讯与信息管理局(NTIA)宣布愿意将 IANA 的管理权完全移交给 ICANN,并要求 ICANN 制定移交计划。NTIA 尤其强调,移交计划要强化多利益相关方模式,不能以政府间组织或政府领导的组织取代当前 NTIA 扮演的角色。
2016 年 3 月 17 日,ICANN 向 NTIA 提交了移交计划。2016 年 6 月 9 日,NTIA 公布审核意见,表示 ICANN 提交的移交计划满足了此前设定的条件。
2016 年 8 月 16 日,NTIA 宣布不再延期现有合同。
虽然遇到一些阻挠10,最终,2016 年 10 月 1 日,ICANN 和美国商务部之间关于 IANA 职能的合同到期且不再续约,ICANN 彻底成为独立的非营利机构。IANA 部门的员工和其他的相关资源都被转移到 ICANN 新设立的附属机构 PTI(Public Technical Identifiers,公共技术标识符)中。
ICANN 使用全球多利益相关方治理模型(global multistakeholder governance model)进行管理。PTI 董事会共 5 席,3 席由 ICANN 委派,2 席由全球互联网社群代表组成提名委员会产生。2017 年 2 月,ICANN 发布 PTI 董事竞选公告,经半年多轮面试及背景调查,提名委员会于 2017 年 10 月 26 日宣布我国北龙中网的王伟与另一欧洲代表中选。又经一个半月的利益冲突审查,2017 年 12 月 13 日 ICANN 董事会正式确认王伟当选。11
我国的根镜像由谁管理?
从目前我所找到的资料看,自 2003 年以来,我国在不断引进根镜像,尤其是去年,根镜像个数增速很快。
2003 年,中国电信引入了国内第一个根镜像节点(F根)。
2005 年,I根服务器运行机构在 CNNIC 设立了中国第二个根镜像(I根)。
2006 年,中国联通(原中国网通)与美国 VeriSign 公司合作, 在国内正式开通J根镜像服务器,同时引入了全球最大的两个顶级域名 “.COM”和“.NET”镜像节点;引进这些镜像的主要目的是提高根域名和顶级域名的解析性能。
2014 年,世纪互联与 ICANN 合作在中国增设L根域名服务器镜像。
2019 年 6 月 24 日,工信部批准 CNNIC 设立六台域名根镜像服务器(F、I、K、L)。这六台域名根服务器编号为 JX0001F、JX0002F、JX0003I、JX0004K、JX0005L 和 JX0006L12,并批准互联网域名系统北京市工程研究中心(ZDNS)设立L根镜像服务器 JX0007L13。
2019 年 11 月 6 日,工信部批复同意中国信息通信研究院设立L根镜像服务器,编号分别为 JX0008L、JX0009L。
2019 年 12 月 5 日,工信部批复同意中国信息通信研究院设立域名根服务器(K根镜像服务器),编号为 JX0010K。
2019 年 12 月 9 日,工信部批复同意 CNNIC 设立域名根服务器(J、K根镜像服务器),编号分别为 JX0011J、JX0012K。
从工信部的批文中可以了解到,相关单位负责根镜像的运行、维护和管理工作,维护国家利益和用户权益,并接受工信部的管理和监督检查。
工信部在给 CNNIC 的批文中写道:“你中心应严格遵守《互联网域名管理办法》《通信网络安全防护管理办法》及相关法律法规、行政规章及行业管理规定,接受我部的管理和监督检查,建立符合我部要求的信息管理系统并与我部指定的管理系统对接,保证域名根服务器安全、可靠运行,为用户提供安全、方便的域名服务,保障服务质量,保护用户个人信息安全,维护国家利益和用户权益。”
美国能对根 DNS 做什么手脚?
虽然 ICANN 是一个独立的非营利性机构,但如果美国政府动用强制力量,A根(主根)的内容仍然存在被篡改的可能。
也就是根区文件可以被篡改。
会怎么篡改?
我们先看看根区文件长什么样。
从 ICANN 官网上可以下载根区文件:
https://www.iana.org/domains/root/files
该文件保存所有顶级域名的信息,目前大小为 2.2M,2 万余行。
每当有顶级域名的变动时,该文件就会更新。
我们可以看到,和 cn 域名解析相关的记录也就那么几十行。
如果删除和 cn 相关的那些行,很快,就会同步到所有的根中。
然后,在所有的缓存都过期之后,全球所有人都访问不了 .cn 后缀的网站。
如何应对?
因为我们维护着根镜像,所以我们控制着镜像中的内容。
而中国境内的对根的访问,通过我们的运营商,都会落到对我国根镜像的访问上。
我们可以不同步关于 cn 的修改。
就这么简单。
可以简单写个程序,每次同步完立刻加上 cn 记录。
也可以自己搭个主根,完全不和美国的根同步。(相当于另立中央了)
当然,世界各地不在我们管理之下的根和根镜像,如果不加行动,仍然会同步这些删除。
那么,除了中国自己,其他国家的人都无法访问 .cn 网站。
但是,这些国家很快就会有响应,凡是想访问 .cn 网站的国家,都会把 cn 记录加回去,并拒绝同步美国删去的这几行。
最终,只有美国人,访问不了 .cn 网站。
综上分析,我认为美国这么做的可能性不大,因为这一招过于低劣,将会让美国政府完全颜面扫地,并失去今后在互联网领域的任何话语权。而 ICANN 也将失去公信力,整个互联网世界,会推选使用新的机构和新的主根。
因为互联网世界的一贯准则就是:如有封禁,就绕过它。
后记
最后,我们看看本文开头所提的两个断网事件是怎么回事:
关于伊拉克域名事件,可以看看清华大学段海新教授的文章:“伊拉克域名 .IQ 被美国删除的背后以及早期的根域名管理”,里面把整个事件的来龙去脉说的很清楚。主要原因是 .iq 域名的前任管理者于 2002 年被关进监狱,新任管理者(NCMC)于 2005 年才提出申请,而 IANA 当时还考虑征求新旧代理双方对新授权的一致认可,所以才出现了所谓的“申请和解析工作被终止”。
关于利比亚域名事件,可以看看此文:“利比亚国家顶级域名(.LY)中止服务始末”,事实情况是参与运营 .LY 的两家机构因争夺归属权而内斗的结果(其中一方关闭了 .LY 域名服务器的解析)。经过这番变乱,2004 年 10 月,ICANN 批准将 .LY 授予利比亚邮电总公司,.LY 事件算是尘埃落定。
本文中提到的风险和应对,主要是我个人的分析,下面看看业内专家的说法。
中国工程院院士、清华大学计算机系主任吴建平在 2019 年的一次访谈14中表示,DNS 根域名服务器不是互联网的“核按钮”。全球互联网根域名服务器运行者,不可能同时关闭所有的根服务器,包括影子服务器。
互联网域名系统北京市工程研究中心(ZDNS)主任毛伟表示15:互联网专家一直都在不断完善域名根系统安全保障机制,就算真的断“根”了,也有应急方法来解决。在境内,可以采用根区数据备份并搭建应急根服务器来解决;在全球层面,可以用根镜像、IPv6 环境下的根服务器数量扩展、根服务器运行机构备选机制等方法来解决。
现在,了解了这么多,关于根域名服务器,你是不是放心了很多。
参考文献:
从网络大国走向网络强国(http://opinion.people.com.cn/n/2014/0624/c1003-25189448.html)
美国网络霸权浅析(http://www.wanfangdata.com.cn/details/detail.do?_type=perio&id=xxaqytxbm201410030)
为什么域名根服务器只能有 13 台呢?(https://www.zhihu.com/question/22587247)
Why 13 DNS root servers?(https://miek.nl/2013/november/10/why-13-dns-root-servers/)
https://root-servers.org
Initializing a DNS Resolver with Priming Queries (https://tools.ietf.org/html/draft-ietf-dnsop-resolver-priming-11)
薛虹:互联网全球治理的新篇章(https://zhuanlan.zhihu.com/p/23042167)
ICANN: IANA 职能(https://www.icann.org/zh/system/files/files/iana-functions-18dec15-zh.pdf)
阮一峰:根域名的知识
徐培喜:IANA 职能管理权移交谁是赢家
北龙中网王伟任职 PTI 董事我国专家就任国际互联网治理关键岗位(http://news.sina.com.cn/c/2017-12-25/doc-ifypwzxq6350205.shtml)
工业和信息化部关于同意中国互联网络信息中心设立域名根服务器(F、I、K、L根镜像服务器)及域名根服务器运行机构的批复(http://www.miit.gov.cn/n1146285/n1146352/n3054355/n3057709/n4704651/c7015545/content.html)
工业和信息化部关于同意互联网域名系统北京市工程研究中心有限公司设立域名根服务器(L根镜像服务器)及域名根服务器运行机构的批复(http://www.miit.gov.cn/n1146285/n1146352/n3054355/n3057709/n4704651/c7015527/content.html)
中国工程院院士吴建平:DNS 根服务器不是互联网的核按钮!
ZDNS 毛伟:互联网根并不能让中国断网,更应重视企业域名服务风险