做者:衛劍釩
來源:公衆號微月人話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環境下的根服務器數量擴展、根服務器運行機構備選機制等方法來解決。
如今,瞭解了這麼多,關於根域名服務器,你是否是放心了不少。
參考文獻: