美國如果把根域名伺服器封了,中國會從網路上消失?

宗恩發表於2020-08-20

美國如果把根域名伺服器封了,中國會從網路上消失?
作者:衛劍釩
來源:公眾號微月人話


自從美國宣佈“清潔網路”行動後,很多懂點網路的人,第一反應是,美國人會下手根域名伺服器嗎?

這種憂慮可不是一年兩年了。

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/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)是輔根。

為什麼根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 和 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的批文中寫道:“你中心應嚴格遵守《網際網路域名管理辦法》《通訊網路安全防護管理辦法》及相關法律法規、行政規章及行業管理規定,接受我部的管理和監督檢查,建立符合我部要求的資訊管理系統並與我部指定的管理系統對接,保證域名根伺服器安全、可靠執行,為使用者提供安全、方便的域名服務,保障服務質量,保護使用者個人資訊保安,維護國家利益和使用者權益。”

美國能對根DNS做什麼手腳?

雖然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環境下的根伺服器數量擴充套件、根伺服器執行機構備選機制等方法來解決。

現在,瞭解了這麼多,關於根域名伺服器,你是不是放心了很多。


參考文獻:

  1. 從網路大國走向網路強國(http://opinion.people.com.cn/...
  2. 美國網路霸權淺析(http://www.wanfangdata.com.cn..._type=perio&id=xxaqytxbm201410030)
  3. 為什麼域名根伺服器只能有13臺呢?(https://www.zhihu.com/questio...
  4. Why 13 DNS root servers?(https://miek.nl/2013/november...
  5. https://root-servers.org
  6. Initializing a DNS Resolver with Priming Queries(https://tools.ietf.org/html/d...
  7. 薛虹:網際網路全球治理的新篇章(https://zhuanlan.zhihu.com/p/...
  8. ICANN: IANA職能(https://www.icann.org/zh/syst...
  9. 阮一峰:根域名的知識
  10. 徐培喜:IANA職能管理權移交誰是贏家
  11. 北龍中網王偉任職PTI董事 我國專家就任國際網際網路治理關鍵崗位(http://news.sina.com.cn/c/201...
  12. 工業和資訊化部關於同意中國網際網路絡資訊中心設立域名根伺服器(F、I、K、L根映象伺服器)及域名根伺服器執行機構的批覆(http://www.miit.gov.cn/n11462...
  13. 工業和資訊化部關於同意網際網路域名系統北京市工程研究中心有限公司設立域名根伺服器(L根映象伺服器)及域名根伺服器執行機構的批覆(http://www.miit.gov.cn/n11462...
  14. 中國工程院院士吳建平:DNS根伺服器不是網際網路的核按鈕!
  15. ZDNS毛偉:網際網路根並不能讓中國斷網,更應重視企業域名服務風險

原文連結

segmentfault 公眾號

相關文章