自從美國宣布「清潔網絡」行動後,很多懂點網絡的人,第一反應是,美國人會下手根域名伺服器嗎?
這種憂慮可不是一年兩年了。
「目前美國掌握著全球網際網路 13 臺域名根伺服器中的 10 臺。理論上,只要在根伺服器上屏蔽該國家域名,就能讓這個國家的國家頂級域名網站在網絡上瞬間「消失」。在這個意義上,美國具有全球獨一無二的制網權,有能力威懾他國的網絡邊疆和網絡主權。譬如,伊拉克戰爭期間,在美國政府授意下,伊拉克頂級域名「.iq」的申請和解析工作被終止,所有網址以「.iq」為後綴的網站從網際網路蒸發。」
《信息安全與通信保密》雜誌 2014 年第 10 期的一篇文章寫道:
「2004 年,由於與利比亞在頂級域名管理權問題上發生爭執,美國終止了利比亞的頂級域名 .LY 的解析服務,導致利比亞從網絡中消失 3 天。」
對此,我們需要害怕嗎?我們需要什麼樣的反制措施?不是專家,還真回答不了這個問題。因為這需要了解 DNS 的工作原理,了解根域名的管理機制。
這裡先給出簡要回答:不排除這種可能性,但並不是沒有辦法。一句話原因:雖然根不在我們手裡,但我們有鏡像。
先了解點基本概念,懂 DNS 的可以直接跳過本節。
DNS 就是將域名轉換為 IP 的,因為我們人類的記憶力太差,根本記不住 IP,而電腦通信又必須用 IP。
所以人類發明了域名,讓我們可以記住 baidu.com、taobao.com 這種還算能記得住的域名。然後通過 DNS,將這些域名轉換為電腦需要的 IP。
每個電腦裡面都設置了本地 DNS 伺服器(簡稱 LDNS),需要的時候,就向 LDNS 發出請求,LDNS 在網上問權威域名伺服器(簡稱權威 DNS),有時候問一家是不夠的,要問一大圈下來,最後才能得到答案。
問我一個域名,我告訴你 IP,如果我不知道,我告訴你誰可能知道,你再去問它。
當 LDNS 啥都不知道的時候(也即沒有任何緩存),就去問根 DNS,根能告訴 LDNS 下一步該問誰。
13個,其中 10 個在美國,英國和瑞典各 1 個,日本 1 個。
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)是輔根。
本節看不懂沒關係(一般人都看不懂),你只需要知道,由於歷史原因和技術原因,對於 IPv4 而言,根 DNS 只能有 13 個 IP。
正宗答案是:DNS 主要使用 UDP 數據報傳送報文,不含前面的各種頭部,DNS 報文要求被控制在 512 字節之內( RFC1035 ),主要考慮是這個大小几乎可以在網際網路上暢通無阻,不會因為路徑中某個 MTU 太小( MTU 通常總會 >= 576,見 RFC791 )而導致 IP 分片,從而預防了各種不可預期的後果。
而每一個根 DNS 在 DNS 報文中都要佔用一定的字節數,比如根的名稱、TTL、IP 地址等。
這樣,13 個根域名伺服器基本上就把空間佔差不多了,剩餘的字節還要用於包裝 DNS 報頭以及其它協議參數,所以根域名伺服器不易太多,13 個算是比較合適的數目。
具體可以看一下「Why 13 DNS root servers?」這篇文章。
和很多人想像的完全不一樣,這 13 個根域名伺服器,並不是只有 13 臺物理的伺服器。
這 13 個根,只是一個邏輯上的概念,每個根 DNS,背後都有多臺真正的物理伺服器在工作!
截至 2020 年 8 月 12 日,全球一共有 1097 個根伺服器。每一個根都有若干個鏡像,分布在全球不同的地方。
這個數目在不斷上漲,去年 10 月 1 日新中國成立 70 周年閱兵的時候,我看了一下,是 1015 個伺服器。在 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 的信息。
對於 DNS 伺服器軟體而言,這 13 個 IP,配置在根提示文件(root hints file)中,可能是 named.cache 或 root.ca 或 root.hints 等等之類的文件。
上面就是各種教科書中都會講到的 DNS 查詢過程,但實際上,沒有這麼麻煩,因為各個層面都是有緩存的。
實際 DNS 查詢的過程,是這樣的:(舉個例子,比如用戶在瀏覽器中輸入這個域名:123.abc.qq.com.cn)
所以,有了緩存以後,教科書上那種從根問起的情況,實際上很少發生。只有在各處都沒有緩存的時候,我們才會問根。
根鏡像承擔起和根一樣的功能。
根 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 採取更安全和更合理的措施來保證網際網路核心資源的分配和管理。
於是,大名鼎鼎的 IANA(The Internet Assigned Numbers Authority,網際網路數字分配機構)被組建,並在 DARPA 和南加州大學信息科學研究所(ISI)的合同下管理。
IANA 負責網際網路全局編號和編碼的管理與協調,之所以需要這麼個機構,是因為網際網路協議的值或參數,必須是全球唯一的,否則無法互聯互通,比如 HTTP 協議默認都在 80 埠等待用戶請求,而 404 編碼則一致代表"未找到頁面」。IANA 主要職責包括 IP 地址段的分配、協議代碼和編號的分配(如協議號、埠號)、自治系統編號 (ASN) 分配、DNS 根區管理(包括通用頂級域名 gTLD 以及國家和地區頂級域名 ccTLD 管理)等。
1998 年 ICANN 成立之後,美國商務部以合同形式,委託 ICANN 承擔 IANA 日常運行,IANA 從 ISI 轉移到 ICANN 之下。
對於頂級域名的管理,ICANN 的政策是,每個頂級域名(像 com、cn、org 這種頂級域名,目前有 1000 多個)都找一個託管商,該域名的所有事項都由託管商負責。
.cn 域名的託管商是中國網際網路信息中心(CNNIC),它決定 .cn 域名的各種政策。.com、.net 、.name、.gov 這四個頂級域名都由 Verisign 公司託管。
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 宣布不再延期現有合同。
雖然遇到一些阻撓,最終,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 董事會正式確認王偉當選。
從目前我所找到的資料看,自 2003 年以來,我國在不斷引進根鏡像,尤其是去年,根鏡像個數增速很快。
2003 年,中國電信引入了國內第一個根鏡像節點(F 根)。
2005 年,I 根伺服器運行機構在 CNNIC 設立了中國第二個根鏡像(I 根)。
2006 年,中國聯通(原中國網通)與美國 VeriSign 公司合作, 在國內正式開通J根鏡像伺服器,同時引入了全球最大的兩個頂級域名 「.COM」和「.NET」鏡像節點;引進這些鏡像的主要目的是提高根域名和頂級域名的解析性能。
這六臺域名根伺服器編號為 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 的批文中寫道:「你中心應嚴格遵守《網際網路域名管理辦法》《通信網絡安全防護管理辦法》及相關法律法規、行政規章及行業管理規定,接受我部的管理和監督檢查,建立符合我部要求的信息管理系統並與我部指定的管理系統對接,保證域名根伺服器安全、可靠運行,為用戶提供安全、方便的域名服務,保障服務質量,保護用戶個人信息安全,維護國家利益和用戶權益。」
雖然 ICANN 是一個獨立的非營利性機構,但如果美國政府動用強制力量,A 根(主根)的內容仍然存在被篡改的可能。也就是根區文件可以被篡改。
會怎麼篡改?我們先看看根區文件長什麼樣。從 ICANN 官網上可以下載根區文件:
https://www.iana.org/domains/root/files
該文件保存所有頂級域名的信息,目前大小為 2.2M,2 萬餘行。每當有頂級域名的變動時,該文件就會更新。
如果刪除和 cn 相關的那些行,很快,就會同步到所有的根中。然後,在所有的緩存都過期之後,全球所有人都訪問不了 .cn 後綴的網站。
因為我們維護著根鏡像,所以我們控制著鏡像中的內容。而中國境內的對根的訪問,通過我們的運營商,都會落到對我國根鏡像的訪問上。
我們可以不同步關於 cn 的修改。就這麼簡單。可以簡單寫個程序,每次同步完立刻加上 cn 記錄。
也可以自己搭個主根,完全不和美國的根同步。(相當於另立中央了)當然,世界各地不在我們管理之下的根和根鏡像,如果不加行動,仍然會同步這些刪除。
那麼,除了中國自己,其他國家的人都無法訪問 .cn 網站。但是,這些國家很快就會有響應,凡是想訪問 .cn 網站的國家,都會把 cn 記錄加回去,並拒絕同步美國刪去的這幾行。
最終,只有美國人,訪問不了 .cn 網站。
綜上分析,我認為美國這麼做的可能性不大,因為這一招過於低劣,將會讓美國政府完全顏面掃地,並失去今後在網際網路領域的任何話語權。
而 ICANN 也將失去公信力,整個網際網路世界,會推選使用新的機構和新的主根。
因為網際網路世界的一貫準則就是:如有封禁,就繞過它。
最後,我們看看本文開頭所提的兩個斷網事件是怎麼回事。
關於伊拉克域名事件,可以看看清華大學段海新教授的文章:
「伊拉克域名 .IQ 被美國刪除的背後以及早期的根域名管理」,裡面把整個事件的來龍去脈說的很清楚。主要原因是 .iq 域名的前任管理者於 2002 年被關進監獄,新任管理者(NCMC)於 2005 年才提出申請,而 IANA 當時還考慮徵求新舊代理雙方對新授權的一致認可,所以才出現了所謂的「申請和解析工作被終止」。
「利比亞國家頂級域名(.LY)中止服務始末」,事實情況是參與運營 .LY 的兩家機構因爭奪歸屬權而內鬥的結果(其中一方關閉了 .LY 域名伺服器的解析)。經過這番變亂,2004 年 10 月,ICANN 批准將 .LY 授予利比亞郵電總公司,.LY 事件算是塵埃落定。
本文中提到的風險和應對,主要是我個人的分析,下面看看業內專家的說法。
中國工程院院士、清華大學計算機系主任吳建平在 2019 年的一次訪談中表示,DNS 根域名伺服器不是網際網路的「核按鈕」。全球網際網路根域名伺服器運行者,不可能同時關閉所有的根伺服器,包括影子伺服器。
網際網路域名系統北京市工程研究中心(ZDNS)主任毛偉表示:
網際網路專家一直都在不斷完善域名根系統安全保障機制,就算真的斷「根」了,也有應急方法來解決。在境內,可以採用根區數據備份並搭建應急根伺服器來解決;在全球層面,可以用根鏡像、IPv6 環境下的根伺服器數量擴展、根伺服器運行機構備選機制等方法來解決。
現在,了解了這麼多,關於根域名伺服器,你是不是放心了很多。
作者:衛劍釩
編輯:陶家龍
出處:轉載自公眾號微月人話