在將網域名稱與機器可讀的 IP 位址進行匹配的 DNS 查閱中,在 DNS 樹狀結構上向上移動的過程可以由 DNS 伺服器或用戶端完成。
閱讀本文後,您將能夠:
相關內容
訂閱 TheNET,這是 Cloudflare 每月對網際網路上最流行見解的總結!
複製文章連結
遞迴 DNS 查閱是指一個 DNS 伺服器與其他數個 DNS 伺服器進行通訊,以搜尋 IP 位址並將其傳回給用戶端。這與反覆 DNS 查詢相反,其中用戶端會直接與查閱中涉及的每個 DNS 伺服器進行通訊。這是一個非常技術性的定義,不過,仔細研究 DNS 系統以及遞迴和反覆之間的區別應該有助於理清思路。
每使用者戶在瀏覽器視窗中鍵入網域名稱(例如「cloudflare.com」)時,都會觸發 DNS 查閱。然後,一系列稱為 DNS 伺服器的遠端電腦會尋找該網域的 IP 位址,並將其傳回至使用者的電腦,以便他們可以存取正確的網站。
幾種不同類型的 DNS 伺服器必須結合運作才能完成 DNS 查閱。DNS 解析程式、DNS 根伺服器、DNS TLD 伺服器和 DNS 權威名稱伺服器都必須提供資訊才能完成查閱。在快取的情況下,其中一個伺服器可能已經在先前的查閱期間儲存了查詢的回答,然後可以從記憶體交付。
有關 DNS 查閱如何運作的更多資訊,請參閱什麼是 DNS 伺服器?
遞迴和反覆是電腦科學詞彙,它描述了解決問題的兩種不同方法。在遞迴中,一個程式重複呼叫自己,直到滿足一個條件;而在反覆中,會重複一組指令,直到滿足一個條件。不使用程式碼很難說明這種細微差別,但關鍵要點是,遞迴是一種反複呼叫自身的解決方案。
例如,假設 Jim 在家裡丟了鑰匙,他想要用一種系統的方法來找到它們。一個遞迴的解決方案是,Jim 一直尋找他的鑰匙,直到找到為止。Jim 開始尋找,如果沒有找到鑰匙,他會回到最初的位置繼續尋找,直到找到為止。一個反覆的解決方案是,Jim 搜尋一個房間五分鐘,然後搜尋下一個房間五分鐘,一直繼續這個循環,直到他找到鑰匙或找完整個房間清單。
要理解遞迴和反覆 DNS 查閱之間的差異,不需要深入瞭解遞迴和反覆:在遞迴查詢中,DNS 伺服器會執行遞迴並繼續查詢其他 DNS 伺服器,直到它找到要傳回用戶端(通常是使用者的作業系統)的 IP 位址為止。在反覆 DNS 查詢中,每個 DNS 查詢會直接回應用戶端,並提供另一台 DNS 伺服器要求的位址,而用戶端會繼續查詢 DNS 伺服器,直到其中一台 DNS 伺服器回應指定網域的正確 IP 位址為止。
換句話說,用戶端在遞迴 DNS 查詢中執行一種委託形式。它告訴 DNS 解析程式,「嘿,我需要這個網域的 IP 位址,請找到它,在你得到它之前不要回覆我。」而在反覆查詢中,用戶端告訴 DNS 解析程式,「嘿,我需要這個網域的 IP 位址。請告訴我查閱過程中下一個 DNS 伺服器的位址,以便我自己查找。」
由於快取技術,遞迴 DNS 查詢通常比反覆查詢更快地解決。遞迴 DNS 伺服器會快取其執行的每個查詢的最終回答,並將該最終回答儲存一段特定時間(稱為存留時間)。
當遞迴解析程式收到其快取中已有 IP 位址的查詢時,它可以快速提供快取的答案給用戶端,而無需與任何其他 DNS 伺服器通訊。如果 a) DNS 伺服器為大量用戶端提供服務以及/或 b) 請求的網站非常受歡迎,則很有可能從快取中快速提供回應。
不幸的是,在開放式 DNS 伺服器上允許遞迴 DNS 查詢會產生一個安全漏洞,因為這種設定讓攻擊者能夠執行 DNS 放大攻擊和 DNS 快取記憶體中毒。
在 DNS 放大攻擊中,攻擊者通常會使用一組機器(稱為殭屍網路),使用偽造的 IP 位址傳送大量 DNS 查詢。偽造的 IP 位址就像是偽造的傳回位址;攻擊者從自己的 IP 傳送要求,但要求回應傳送給受害者。為了加劇攻擊,攻擊者還使用一種稱為「放大」的技術,其中偽造的請求會要求很長的回應。受害服務將收到大量冗長且不需要的 DNS 回應,這些回應可能會中斷甚至關閉其伺服器。這是一種 DDoS 攻擊類型。
這就像一群十幾歲小孩打給披薩店搞惡作劇,每個人都訂十幾個披薩。他們給披薩店提供的送貨地址不是他們自己的地址,而是一個毫不知情的鄰居家。然後,受害者會收到一連串並不想要的披薩,他們的一天可能就這樣被毀了。
需要接受遞迴查詢的 DNS 伺服器才能執行這種攻擊,因為放大的 DNS 封包是對遞迴 DNS 查詢的回應。
在 DNS 快取記憶體中毒攻擊中,當遞迴 DNS 伺服器從另一 DNS 伺服器請求 IP 位址時,攻擊者會攔截該請求並提供虛假回應,這通常是惡意網站的 IP 位址。遞迴 DNS 伺服器不僅會將該 IP 位址傳送給原始用戶端,還會將該回應儲存在其快取中。任何請求相同網域名稱 IP 的使用者都會被傳送至惡意網站。如果它是一個流行的網域名稱和流行的 DNS 解析程式,這種攻擊可能會影響成千上萬的使用者。
在反覆 DNS 查詢中,用戶端會直接向每個 DNS 伺服器詢問答案。即使攻擊者能夠向查詢傳送偽造的回應,它也只會影響單個用戶端,這通常不值得攻擊者花費時間。
Cloudflare 的受管理 DNS 服務通常比競爭對手的 DNS 或公用 DNS 更快地解決 DNS 查詢。此外,Cloudflare DNS 還支援 DNSSEC,這是一種旨在確保 DNS 伺服器和查詢安全的嚴格安全通訊協定。