一台DNS根伺服器與同伴失去了聯繫草台班子維運讓故障持續長達四天
在過去的四天多的時間裡,網際網路域名系統最核心的一台伺服器與它的12 台根伺服器不同步,原因是一個無法解釋的故障,它可能會導致全球範圍內的穩定性和安全性問題。這台伺服器由網際網路業者Cogent Communications維護,是提供網際網路根區的13 台根伺服器之一,位於被稱為網域名稱系統(DNS)的分級分散式資料庫的頂端。
以下簡要介紹網域名稱系統的工作方式以及根伺服器在其中的作用:
當有人在瀏覽器中輸入wikipedia.org 時,處理請求的伺服器首先必須將人性化的網域名稱翻譯成IP 位址。這就是域名系統的作用。網域名稱系統流程的第一步是瀏覽器查詢本機作業系統中的本機存根解析器。存根解析器會將查詢轉送到遞迴解析器,遞迴解析器可能由使用者的ISP 提供,也可能是Cloudflare 和Google 分別提供的1.1.1.1 或8.8.8.8 服務。
如果需要,遞歸解析器會聯絡c-root 伺服器或其12 個對等伺服器之一,以確定.org 頂級網域的權威名稱伺服器。然後,.org 名稱伺服器會將請求轉給維基百科名稱伺服器,後者會傳回IP 位址。在下圖中,遞歸伺服器被標記為”迭代器”。
鑑於根伺服器在確保一台設備可以找到互聯網上任何其他設備方面的關鍵作用,有13 台根伺服器分佈在世界各地。事實上,每個根伺服器都是一個伺服器集群,這些伺服器在地理位置上也很分散,因此冗餘度更高。通常情況下,13 台根伺服器–各自由不同的實體運作–步調一致。當它們所託管的內容進行更改時,所有伺服器一般都會在幾秒鐘或幾分鐘內完成更改。
C-root DNS伺服器上的奇怪事件
這種緊密同步對於確保穩定性至關重要。如果一個根伺服器將流量查詢指向一個中間伺服器,而另一個根伺服器將查詢傳送到另一個中間伺服器,那麼我們所知的網路的重要部分就可能崩潰。更重要的是,根伺服器會儲存必要的加密金鑰,以便根據DNSSEC機制對一些中間伺服器進行驗證。如果所有13 個根伺服器的金鑰不一致,就會增加DNS 快取中毒等攻擊的風險。
Cogent公司拒絕對此發表評論,其負責維護的12個c-root實例在上週六突然停止更新。法國工程師斯特凡-博茨邁耶(Stéphane Bortzmeyer)是最早在周二的一篇文章中指出這一問題的人之一,他當時指出,c-root比其他root伺服器晚了三天。
在Mastodon 上,我們進一步注意到了這種滯後現象。
到週三中午,滯後時間已縮短至一天左右。
到週三晚些時候,c-root 終於更新完畢。
這一延遲促使工程師推遲了原定於本週對處理以.gov 和.int 結尾的網域查詢的網域名稱伺服器進行的工作。原計劃是將伺服器的DNSSEC 更新為使用ECDSA 金鑰。由於新金鑰無法統一推廣到所有根伺服器,因此這些計劃不得不被取消。
負責.gov DNSSEC 過渡的Cloudflare 工程師Christian Elmerot 週三宣布:”我們完全了解並監控著C 根伺服器周圍的情況,在情況穩定之前,我們不會繼續進行正在進行的DNSSEC 演算法滾動。”計劃向.int 伺服器過渡的工程師也發出了同樣的呼籲,但只是在一些人擔心儘管出現了問題,工作仍會繼續進行之後。
Elmerot在接受採訪時說,更新問題對現實世界的影響很小,但隨著時間的推移,影響會越來越大。他解釋說
隨著根區變化的累積,版本之間的差異開始變得越來越重要。根區的典型變更是更改授權(NS 記錄)、輪換DNSSEC 更新的DS 記錄以及DNSSEC 簽章的更新。如果差異仍然存在,那麼過時的根伺服器將看到DNSSEC 簽章過期,這將開始產生更明顯的後果。使用多個根伺服器可以降低解析器使用落後根伺服器的幾率。
在c-root 故障的同時,同樣由Cogent 維護的c-root網站也出現了故障,導致許多人無法存取網站。許多人認為這兩個問題的原因是一樣的。後來發現,網站問題是由於Cogent將用於託管網站的IP 位址轉移到了法國電信公司Orange 的非洲子公司Orange Ivory Coast。
這次混淆讓Bortzmeyer 開了個玩笑:”已向Cogent 報告(票據HD303751898),但他們似乎不明白自己管理的是根域名伺服器。”
出現這些錯誤的原因是,近幾個月來,Cogent公司終止了與幾家營運商的合作關係,根據一種被稱為對等互聯的安排交換彼此的流量。最近的一次終止發生在上週五,當時Cogent公司“部分剝離”了印度運營商塔塔通信公司(Tata Communications)的業務,此舉導致Cogent的客戶無法訪問塔塔通信公司在亞太地區託管的許多網站。
週三晚些時候,Cogent發表了以下聲明,他們表示直到週二才意識到故障,並花了25 個小時修復故障:
世界協調時5 月21 日15:30 時,Cogent Communications 的c-root 團隊被告知,c-root 服務的根區在5 月18 日之後不再追蹤根區發布伺服器的變更。分析表明,這是由於一項無關的路由政策變更造成的,其副作用是癱瘓相關監控系統。 c-root 沒有因為這次中斷而無法回答任何DNS 查詢,唯一的影響是根區的新鮮度。 c-root 提供的根區同步已於5 月22 日16:00 UTC 時完全恢復。
最初,有些人猜測塔塔通訊公司的停駛、c-root 網站的中斷以及c-root 本身的更新錯誤都與此有某種關聯。鑑於聲明含糊不清,這些事件之間的關係仍不完全清楚。