做者:卫剑钒
来源:公众号微月人话html
自从美国宣布“清洁网络”行动后,不少懂点网络的人,第一反应是,美国人会下手根域名服务器吗?面试
这种忧虑可不是一年两年了。segmentfault
2014年6月24日的《人民日报》上引用专家发言:“目前美国掌握着全球互联网13台域名根服务器中的10台。理论上,只要在根服务器上屏蔽该国家域名,就能让这个国家的国家顶级域名网站在网络上瞬间“消失”。在这个意义上,美国具备全球独一无二的制网权,有能力威慑他国的网络边疆和网络主权。譬如,伊拉克战争期间,在美国政府授意下,伊拉克顶级域名“.iq”的申请和解析工做被终止,全部网址以“.iq”为后缀的网站从互联网蒸发。”_(1)_浏览器
《信息安全与通讯保密》杂志2014年第10期的一篇文章写道:“2004年,因为与利比亚在顶级域名管理权问题上发生争执,美国终止了利比亚的顶级域名.LY的解析服务,致使利比亚从网络中消失3天。”_(2)_缓存
对此,咱们须要惧怕吗?咱们须要什么样的反制措施? 安全
不是专家,还真回答不了这个问题。服务器
由于这须要了解DNS的工做原理,了解根域名的管理机制。网络
这里先给出简要回答:不排除这种可能性,但并非没有办法。负载均衡
一句话缘由:虽然根不在咱们手里,但咱们有镜像。dom
先了解点基本概念,懂DNS的能够直接跳过本节。
一、DNS是什么?
DNS就是将域名转换为IP的,由于咱们人类的记忆力太差,根本记不住IP,而电脑通讯又必须用IP,因此人类发明了域名,让咱们能够记住baidu.com、taobao.com这种还算能记得住的域名。而后经过DNS,将这些域名转换为电脑须要的IP。
二、DNS是怎么工做的?
每一个电脑里面都设置了本地DNS服务器(简称LDNS),须要的时候,就向LDNS发出请求,LDNS在网上问权威域名服务器(简称权威DNS),有时候问一家是不够的,要问一大圈下来,最后才能获得答案。
三、权威DNS是干什么的?
问我一个域名,我告诉你IP,若是我不知道,我告诉你谁可能知道,你再去问它。
四、什么是根域名服务器(简称根DNS)?
当LDNS啥都不知道的时候(也即没有任何缓存),就去问根DNS,根能告诉LDNS下一步该问谁。
五、全世界有多少根DNS?
13个,其中10个在美国,英国和瑞典各1个,日本1个。
六、根DNS的名字和IP都是什么?
在这个网址:
https://www.internic.net/doma...
打开能够看到,里面有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)是辅根。
本节看不懂不要紧(通常人都看不懂),你只须要知道,因为历史缘由和技术缘由,对于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个根,只是一个逻辑上的概念,每一个根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细节了。
对于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问起:
一、LDNS问根DNS说:“www.baidu.com的IP是多少啊?”。
二、根DNS说:“我哪有时间管你这么细的问题,你去问com顶级域的DNS吧,我只管到顶级域,喏,这些是com顶级域DNS的名字和IP,你去问它们吧”。(以NS记录回应)
三、LDNS又忙问com的权威DNS,com权威DNS说:“你问的这是三级域名,我无论这么多,你去问baidu.com的权威DNS吧,它的名字是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的信息_(6)_。
对于DNS服务器软件而言,这13个IP,配置在根提示文件(root hints file)中,多是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.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目前由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 和 JX0006L_(12)_,并批准互联网域名系统北京市工程研究中心(ZDNS)设立L根镜像服务器JX0007L_(13)_。
2019年11月6日,工信部批复赞成中国信息通讯研究院设立L根镜像服务器,编号分别为JX0008L、JX0009L。
2019年12月5日,工信部批复赞成中国信息通讯研究院设立域名根服务器(K根镜像服务器),编号为JX0010K。
2019年12月9日,工信部批复赞成CNNIC设立域名根服务器(J、K根镜像服务器),编号分别为JX0011J、JX0012K。
从工信部的批文中能够了解到,相关单位负责根镜像的运行、维护和管理工做,维护国家利益和用户权益,并接受工信部的管理和监督检查。
工信部在给CNNIC的批文中写道:“你中心应严格遵照《互联网域名管理办法》《通讯网络安全防御管理办法》及相关法律法规、行政规章及行业管理规定,接受我部的管理和监督检查,创建符合我部要求的信息管理系统并与我部指定的管理系统对接,保证域名根服务器安全、可靠运行,为用户提供安全、方便的域名服务,保障服务质量,保护用户我的信息安全,维护国家利益和用户权益。”
虽然ICANN是一个独立的非营利性机构,但若是美国政府动用强制力量,A根(主根)的内容仍然存在被篡改的可能。
也就是根区文件能够被篡改。
会怎么篡改?
咱们先看看根区文件长什么样。
从ICANN官网上能够下载根区文件:
https://www.iana.org/domains/...
该文件保存全部顶级域名的信息,目前大小为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环境下的根服务器数量扩展、根服务器运行机构备选机制等方法来解决。
如今,了解了这么多,关于根域名服务器,你是否是放心了不少。
参考文献: