自从美国宣布“清洁网络”行动后,很多了解互联网的人的第一反应就是,美国人会攻击根域名服务器吗?图片来自Pexels这种担心已经不是一两年了。2014年6月24日《人民日报》上引述专家的话:“目前,全球互联网13个域名根服务器中,美国掌握了10个。理论上,只要在根服务器上屏蔽该国域名,该国的顶级域名网站瞬间就“消失”在互联网上。从这个意义上说,美国对互联网拥有独特的控制权,有能力威慑他国的互联网前沿和互联网主权。例如,在伊拉克战争期间,在美国政府的授意下,终止了伊拉克顶级域名“.iq”的申请和解析工作,所有以“.iq”为后缀的网站从互联网上消失》2014年第10期的《信息安全与通信保密》杂志的一篇文章写道:“2004年,由于与利比亚在顶级域名管理方面发生争执,美国终止了利比亚顶级域名的解析服务。.LY域名,导致利比亚从互联网上消失了3天。”我们需要害怕这个吗?我们需要什么?对策?我不是专家,所以我真的无法回答这个问题。因为这需要了解DNS的工作原理以及根域名的管理方式。这里先简单回答一下:不排除这种可能,但也不是没有可能。一句话道理:虽然根不在我们手中,但我们有一面镜子。DNS傻瓜书先了解一些基本概念,了解DNS的可以直接跳过这部分。①什么是DNS?DNS就是把域名转换成IP,因为我们人的记忆力太差,根本记不住IP,电脑通讯必须要用IP。于是人类发明了域名,让我们记住了baidu.com、taobao.com这些我们至今还能记住的域名。然后通过DNS,将这些域名转换为电脑需要的IP。②DNS是如何工作的?每台计算机都配备了本地DNS服务器(简称LDNS)。必要时,它会向LDNS发送请求。LDNS向Internet上的权威域名服务器(简称权威DNS)询问。有时仅仅问一个是不够的。是的,你必须问很多问题才能得到答案。③什么是权威DNS?问我域名,我告诉你IP。如果我不知道,我会告诉你谁可能知道,你可以再问。④什么是根域名服务器(简称根DNS)?当LDNS什么都不知道的时候(也就是没有缓存),去问根DNS,根可以告诉LDNS接下来要问谁。⑤世界上有多少个根DNS?13个,其中美国10个,英国和瑞典1个,日本1个。⑥根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)是辅助根。为什么只有13个根DNS?这一段你看不懂也没关系(一般人看不懂),你只需要知道,由于历史和技术原因,对于IPv4,根DNS只能有13个IP。正宗的答案是:DNS主要是用UDP数据报来传输报文,不包括前面的headers。要求DNS消息控制在512字节以内(RFC1035)。主要考虑的是这个尺寸在网上几乎可以畅通无阻。畅通无阻,不会因为路径中的某个MTU太小而造成IP分片(MTU通常>=576,见RFC791),从而防止各种不可预知的后果。并且每个根DNS在DNS报文中都占用了一定的字节数,比如根的名称,TTL,IP地址等。这样13个根域名服务器基本上就占了差不多的空间,剩下的字节用于封装DNS头和其他协议参数,所以根域名服务器不容易有太多,13个是比较合适的数字。详情请参考《为什么要13台DNS根服务器?》一文。真的只有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个。在根服务器网站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存储记录,最常见的三种:A记录(记录域名与其IP的对应关系)、NS记录(记录域名和负责解析该域名的权威DNS)、CNAME记录(负责记录域名及其IP别名)。如果权限可以直接回答,则返回A记录;如果需要其他权威DNS回答,则返回NS记录,然后LDNS再去其他权威DNS询问;如果记录是别名类型,会返回CNAME,LDNS会再去解析别名。递归DNS:通常是LDNS,它接受终端的域名查询请求,并负责在互联网上四处询问后,将答案返回给终端。现在举个具体的例子:比如终端请求域名www.baidu.com的IP。当没有缓存时,LDNS会从根DNS询问:LDNS会询问根DNS:“www.baidu.com的IP是多少?”。根DNS说:“我没时间关心你的详细问题,你可以问com顶级域的DNS,我只关心顶级域,这里,这些是名称和IPcom顶级域DNS的。你可以问他们。“。(用NS记录回应)LDNS赶紧又去问com的权威DNS,com的权威DNS说:“你问的是三级域名,我不管那么多,你可以去问权威DNSbaidu.com的名字是ns.baidu.com,IP是XXX(这里可以给多个权威DNS)”。LDNS继续问baidu.com的权威DNS,这下开心了,因为www.baidu.com是它管理的,它可能直接给A记录,也可能给CNAME记录,如果是前者,会直接获取IP,如果是后者,则需要重新查询别名。最后LDNS获取www.baidu.com的IP返回给终端。细心的人会问,在第1步LDNS询问根DNS的时候,他是怎么知道根DNS的IP的?这13个IP通常在LDNS中预先配置。当LDNS初始化DNS缓存或缓存失效时,LDNS会向其中一个预先配置的IP发起根查询(即查询.的NS记录),获取最新的根DNS信息。对于DNS服务器软件,这13个IP配置在根提示文件(roothintsfile)中,可能是named.cache或root.ca或root.hints等。以上就是各种教材中提到的DNS查询过程,其实并没有那么麻烦,因为各级都有缓存。实际的DNS查询过程如下:(比如用户在浏览器中输入这个域名:123.abc.qq.com.cn)①浏览器会先检查是否有这个域名的缓存,如果有就直接返回,没有就去问操作系统,操作系统也会检查自己的缓存,有就直接返回,没有就去hosts文件,如果有是否,那么它会询问LDNS。②LDNS会先检查是否有123.abc.qq.com.cn的A记录,有则直接返回,没有则检查是否有abc.qq.com的NS记录。cn.如果有,就问问它的答案,如果没有,查看是否有qq.com.cn的DNS记录,如果有,请问它,如果没有,查看是否有com.cn的DNS记录,如果没有,查看cn是否有DNS,如果没有cn的NS记录,再问root。所以有了缓存,教科书上从根问起的情况其实很少发生。如果任何地方都没有缓存,我们只会询问root。根映像有什么作用?根映像执行与根相同的功能。在根DNS中,最重要的文件就是根区文件(RootZonefile)。所有TLD记录都存储在根区域文件中。从根从主根同步数据,根镜像从根同步数据。最终,所有根和镜像都具有相同的根区域文件。最有趣的是,根映像与根具有相同的IP。我们知道全球有超过一千个根镜像,但大多数人不知道的是,它们共享13个IP!没错,因为只有13个根。这是怎么做到的?答案是任播(Anycast,又译任播)技术。如果您不关心技术细节,请直接阅读本节最后一句。Anycast最初由RFC1546提出,主要用于DNS根服务器上。Anycast是指在IP网络上通过IP地址识别一组提供特定服务的主机。服务访问方不关心哪台主机提供服务,访问该地址的数据包可以路由到“最近”的一台(最好只有一台,不要发送到多台)服务器。这里的“最近”可以指路由器跳数、服务器负载、服务器吞吐量、客户端与服务器之间的往返时间(RTT,roundtriptime)、链路的可用带宽等特征值。这样,一方面,用户可以就近访问;另一方面,即使某些根失败了。有的同学可能会想到负载均衡,没错,大致就是这个意思。对于中国用户来说,root请求一般不会去美国,而是通过anycast技术路由到中国的root镜像。根DNS是如何管理的?根DNS目前由12个组织管理。A根是主根,由美国威瑞信公司管理。根DNS中最重要的文件,即根区域文件,由ICANN管理。ICANN(TheInternetCorporationforAssignedNamesandNumbers,互联网名称与数字地址分配机构)是一个非盈利组织,成立于1998年,在美国注册。根DNS管理的历史变迁过程比较复杂。这里简单介绍一下。DNS最初的技术开发者和管理者是南加州大学的JonPostel博士,他在互联网早期负责根DNS的管理和分配。1988年,美国政府要求乔恩·波斯特尔采取更安全、更合理的措施,确保互联网核心资源的分配和管理。于是,著名的IANA(TheInternetAssignedNumbersAuthority,互联网号码分配机构)在DARPA和南加州大学信息科学研究所(ISI)的合同下组建和管理。IANA负责管理和协调互联网的全球编号和编码。之所以需要这样一个组织,是因为互联网协议的值或参数必须在世界范围内是唯一的,否则就无法互联互通。例如,HTTP协议默认在80端口等待用户请求,而404代码始终表示“找不到页面”。IANA的主要职责包括IP地址段的分配、协议代码和号码的分配(如协议号、端口号)、自治系统号(ASN)的分配、DNS根区管理(包括gTLD和国家和地区)1998年ICANN成立后,美国商务部以合同形式委托ICANN承担IANA的日常运营,IANA由ISI转交给ICANN。对于顶级域名的管理,ICANN的政策是每个顶级域名(如com、cn、org,目前有1000多个顶级域名)找一个托管人,所有的事务域名由托管人处理。.cn域名的监管机构是中国互联网络信息中心(CNNIC),它决定了.cn域名的各项政策。.com、.net、.name和.gov四个顶级域均由Verisign托管。威瑞信和ICANN有过几次不愉快:2003年,威瑞信推出了新的业务SiteFinder,访问未注册的.com或.net域名的用户将被引导至威瑞信的网站。这意味着它实际上拥有所有未注册的.com和.net域。几天之内,威瑞信就跻身世界前10大网站之列。ICANN要求威瑞信立即停止业务或终止域名托管合同。威瑞信就此让步,停止了业务,但随后将ICANN告上法庭,要求法庭要求双方签订合同,ICANN是否有权干涉其业务。2006年底,他们达成庭外和解。ICANN同意延长Verisign的顶级域托管合同,并同意将Verisign向消费者收取的单一域名注册费用上限从6美元提高到7.85美元。这个收费标准一直沿用至今。注册.com或.net域名时,ICANN收取的管理费是0.18美元,Verisign收取的托管费是7.85美元,剩下的钱是域名零售商。费用。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宣布不会延长现有合同。尽管存在一些障碍,但ICANN与美国商务部之间关于IANA职能的合同最终于2016年10月1日到期且未续签,ICANN成为一个完全独立的非营利机构。IANA部门的人员和其他相关资源被转移到ICANN新成立的子公司PTI(PublicTechnicalIdentifiers,公共技术标识符)。ICANN使用全球多利益相关方治理模型进行治理。PTI的董事会有5个席位,3个席位由ICANN任命,2个席位由全球互联网社区代表组成的提名委员会选出。2017年2月,ICANN发布了PTI董事选举公告。Afterhalfayearofinterviewsandbackgroundchecks,thenominationcommitteeannouncedonOctober26,2017thatWangWeifrommycountry'sBeilongChinaNetworkandanotherEuropeanrepresentativehadbeenelected.在又一个半月的利益冲突审查之后,2017年12月13日,ICANN董事会正式确认了王Wei的选举。谁管理我所在国家/地区的根映像?根据我目前查到的资料,从2003年开始,我国不断推出根镜像,尤其是去年,根镜像的数量增长迅速。2003年,中国电信推出了国内第一个根镜像节点(F根)。2005年,I-root服务器运营商在CNNIC建立了中国第二个根镜像(I-root)。2006年,中国联通(原中国网通)与美国VeriSign公司合作,在中国正式开通J根镜像服务器,同时引入全球最大的二级顶级域名“.COM”和“.NET”镜像节点;引入这些镜像的主要目的是提高根域名和顶级域名的解析性能。2014年,21Vianet与ICANN合作,在中国新增L根域名服务器镜像。2019年6月24日,工信部批准CNNIC设立6个域名根镜像服务器(F、I、K、L)。这6台域名根服务器编号为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根(taproot)的内容还是有可能被篡改的。也就是说,根区域文件可以被篡改。怎么会被篡改?我们先来看看根区文件长什么样。根区文件可以在ICANN官网下载:https://www.iana.org/domains/root/files这个文件保存了所有顶级域名的信息,目前大小为2.2M,更多超过20,000行。每当TLD发生变化时,都会更新此文件。可以看到,cn域名解析相关的记录只有几十行:如果把cn相关的那几行删掉,很快就会同步到所有根。那么,当所有的缓存都过期之后,世界上就没有人可以访问.cn后缀的网站了。如何处理?由于我们维护根映像,因此我们控制了映像中的内容。而在中国的根访问,通过我们的运营商,将落在我们国家根镜像的访问上。我们可以取消同步cn上的更改。就这么简单。你可以简单地编写一个程序,在每次同步后立即添加cn记录。您也可以自己设置一个主根,与美国根完全不同步。(相当于建立了一个单独的中心)当然,如果不采取任何行动,不在我们管理范围内的世界各地的根和根镜像仍然会同步这些删除。那么,除了中国本身,其他国家的人是无法访问.cn网站的。不过,这些国家很快就会做出反应。任何国家要访问.cn网站,都会把cn记录加回去,拒绝同步美国删除的行。最后只有美国人进不去.cn网站。综合以上分析,我认为美国这样做的可能性不大,因为此举太自卑了,会彻底抹黑美国政府,失去未来在互联网领域的任何话语权。而ICANN也会失去公信力,整个互联网世界都会选择使用新的机构和新的主根。因为互联网世界的一贯原则是:有禁令就绕开。在后记的最后,我们来看看本文开头提到的两个断线事件到底是怎么回事。关于伊拉克域名事件,可以看看清华大学段海欣教授的文章:《伊拉克域名的背后。主要原因是2002年.iq域名前任管理人入狱,新任管理人(NCMC)在2005年才提出申请,当时IANA也考虑过寻求新老代理双方对新授权的一致认可,所以才出现了所谓的“申请分析工作终止”。利比亚域名事件,您可以阅读这篇文章:《利比亚国家顶级域名(.LY)暂停服务的原委》.LY域名服务器解析)。这些事件发生后,2004年10月、ICANN批准.LY授予利比亚邮电公司,.LY事件尘埃落定。文中提到的风险和应对措施主要是我个人的分析,我们来看看业内专家是怎么说的。吴中国工程院院士、清华大学计算机系主任建平在2019年接受采访时表示,DNS根域名服务器并不是互联网的“核按钮”。全球互联网根域名服务器的运营商不可能同时关闭包括影子服务器在内的所有根服务器。互联网域名系统(ZDNS)北京工程研究中心主任毛伟表示:互联网专家一直在不断完善域名根系统的安全机制。即使真的断了“根”,也有应急措施可以解决。国内可以通过备份根区数据,设置应急根服务器的方式解决;在全球层面,可以通过使用根镜像、扩大IPv6环境中根服务器的数量以及根服务器运营商的替代机制来解决。现在,了解了这么多,关于根域名服务器,是不是放心了许多?作者:韦建凡编辑:陶家龙来源:转载自公众号微悦人华
