Linux中國

什麼是 DNS,它是如何工作的?

域名系統 Domain Name System DNS)是互聯網的基礎之一,然而大多數不懂網路的人可能並不知道他們每天都在使用它來工作、查看電子郵件或在智能手機上浪費時間。

就其本質而言,DNS 是一個與數字匹配的名稱目錄。這些數字,在這裡指的是 IP 地址,計算機用 IP 地址來相互通信。大多數對 DNS 的描述都是用電話簿來比喻,這對於 30 歲以上的人來說是沒有問題的,因為他們知道電話簿是什麼。

如果你還不到 30 歲,可以把 DNS 想像成你的智能手機的聯繫人名單,它將人們的名字與他們的電話號碼及電子郵件地址進行匹配,然後這個聯繫人名單的就像地球上的人一樣多。

DNS 簡史

當互聯網還非常、非常小的時候,人們很容易將特定的 IP 地址與特定的計算機對應起來,但隨著越來越多的設備和人加入到不斷發展的網路中,這種簡單的情況就沒法持續多久了。現在仍然可以在瀏覽器中輸入一個特定的 IP 地址來到達一個網站,但當時和現在一樣,人們希望得到一個由容易記憶的單片語成的地址,也就是我們今天所認識的那種域名(比如 linux.cn)。在 20 世紀 70 年代和 80 年代早期,這些名稱和地址是由一個人指定的,她是斯坦福大學的 Elizabeth Feinler,她在一個名為 HOSTS.TXT 的文本文件中維護著一個主列表,記錄了每一台連接互聯網的計算機。

隨著互聯網的發展,這種局面顯然無法維持下去,尤其是因為 Feinler 只處理加州時間下午 6 點之前的請求,而且聖誕節也要請假。1983 年,南加州大學的研究人員 Paul Mockapetris 受命在處理這個問題的多種建議中提出一個折中方案。但他基本上無視了所有提出的建議,而是開發了自己的系統,他將其稱為 DNS。雖然從那時起,現今的它顯然發生了很大的變化,但在基本層面上,它的工作方式仍然與將近 40 年前相同。

DNS 伺服器是如何工作的

將名字與數字相匹配的 DNS 目錄並不是整個藏在互聯網的某個黑暗角落。截至 2017 年底,它記錄了超過 3.32 億個域名,如果作為一個目錄確實會非常龐大。就像互聯網本身一樣,該目錄分布在世界各地,存儲在域名伺服器(一般簡稱為 DNS 伺服器)上,這些伺服器都會非常有規律地相互溝通,以提供更新和冗餘。

權威 DNS 伺服器與遞歸 DNS 伺服器的比較

當你的計算機想要找到與域名相關聯的 IP 地址時,它首先會向 遞歸 recursive DNS 伺服器(也稱為遞歸解析器)提出請求。遞歸解析器是一個通常由 ISP 或其他第三方提供商運營的伺服器,它知道需要向其他哪些 DNS 伺服器請求解析一個網站的名稱與其 IP 地址。實際擁有所需信息的伺服器稱為 權威 authoritative DNS 伺服器。

DNS 伺服器和 IP 地址

每個域名可以對應一個以上的 IP 地址。事實上,有些網站有數百個甚至更多的 IP 地址與一個域名相對應。例如,你的計算機訪問 www.google.com 所到達的伺服器,很可能與其他國家的人在瀏覽器中輸入相同的網站名稱所到達的伺服器完全不同。

該目錄的分散式性質的另一個原因是,如果這個目錄只在一個位置,在數百萬,可能是數十億在同一時間尋找信息的人中共享,那麼當你在尋找一個網站時,你需要花費多少時間才能得到響應 —— 這就像是排著長隊使用電話簿一樣。

什麼是 DNS 緩存?

為了解決這個問題,DNS 信息在許多伺服器之間共享。但最近訪問過的網站的信息也會在客戶端計算機本地緩存。你有可能每天使用 google.com 好幾次。你的計算機不是每次都向 DNS 名稱伺服器查詢 google.com 的 IP 地址,而是將這些信息保存在你的計算機上,這樣它就不必訪問 DNS 伺服器來解析這個名稱的 IP 地址。額外的緩存也可能出現在用於將客戶端連接到互聯網的路由器上,以及用戶的互聯網服務提供商(ISP)的伺服器上。有了這麼多的緩存,實際上對 DNS 名稱伺服器的查詢數量比看起來要少很多。

如何找到我的 DNS 伺服器?

一般來說,當你連接到互聯網時,你使用的 DNS 伺服器將由你的網路提供商自動建立。如果你想看看哪些伺服器是你的主要名稱伺服器(一般是遞歸解析器,如上所述),有一些網路實用程序可以提供關於你當前網路連接的信息。Browserleaks.com 是一個很好的工具,它提供了很多信息,包括你當前的 DNS 伺服器。

我可以使用 8.8.8.8 的 DNS 嗎?

但要記住,雖然你的 ISP 會設置一個默認的 DNS 伺服器,但你沒有義務使用它。有些用戶可能有理由避開他們 ISP 的 DNS —— 例如,有些 ISP 使用他們的 DNS 伺服器將不存在的地址的請求重定向到帶有廣告的網頁

如果你想要一個替代方案,你可以將你的計算機指向一個公共 DNS 伺服器,以它作為一個遞歸解析器。最著名的公共 DNS 伺服器之一是谷歌的,它的 IP 地址是 8.8.8.8 和 8.8.4.4。Google 的 DNS 服務往往是快速的,雖然對 Google 提供免費服務的別有用心的動機有一定的質疑,但他們無法真正從你那裡獲得比他們從 Chrome 瀏覽器中獲得的更多信息。Google 有一個頁面,詳細說明了如何配置你的電腦或路由器連接到 Google 的 DNS。

DNS 如何提高效率

DNS 的組織結構有助於保持事情的快速和順利運行。為了說明這一點,讓我們假設你想訪問 linux.cn

如上所述,對 IP 地址的初始請求是向遞歸解析器提出的。遞歸解析器知道它需要請求哪些其他 DNS 伺服器來解析一個網站(linux.cn)的名稱與其 IP 地址。這種搜索會傳遞至根伺服器,它知道所有頂級域名的信息,如 .com、.net、.org 以及所有國家域名,如 .cn(中國)和 .uk(英國)。根伺服器位於世界各地,所以系統通常會將你引導到地理上最近的一個伺服器。

一旦請求到達正確的根伺服器,它就會進入一個頂級域名(TLD)名稱伺服器,該伺服器存儲二級域名的信息,即在你寫在 .com、.org、.net 之前的單詞(例如,linux.cn 的信息是 「linux」)。然後,請求進入域名伺服器,域名伺服器掌握著網站的信息和 IP 地址。一旦 IP 地址被找到,它就會被發回給客戶端,客戶端現在可以用它來訪問網站。所有這一切都只需要幾毫秒的時間。

因為 DNS 在過去的 30 多年裡一直在工作,所以大多數人都認為它是理所當然的。在構建系統的時候也沒有考慮到安全問題,所以黑客們充分利用了這一點,製造了各種各樣的攻擊。

DNS 反射攻擊

DNS 反射攻擊可以用 DNS 解析器伺服器的大量信息淹沒受害者。攻擊者使用偽裝成受害者的 IP 地址來向他們能找到的所有開放的 DNS 解析器請求大量的 DNS 數據。當解析器響應時,受害者會收到大量未請求的 DNS 數據,使其不堪重負。

DNS 緩存投毒

DNS 緩存投毒可將用戶轉移到惡意網站。攻擊者設法在 DNS 中插入虛假的地址記錄,這樣,當潛在的受害者請求解析其中一個中毒網站的地址時,DNS 就會以另一個由攻擊者控制的網站的 IP 地址作出回應。一旦訪問了這些假網站,受害者可能會被欺騙,泄露密碼或下載了惡意軟體。

DNS 資源耗盡

DNS 資源耗盡攻擊可以堵塞 ISP 的 DNS 基礎設施,阻止 ISP 的客戶訪問互聯網上的網站。攻擊者註冊一個域名,並通過將受害者的名稱伺服器作為域名的權威伺服器來實現這種攻擊。因此,如果遞歸解析器不能提供與網站名稱相關的 IP 地址,就會詢問受害者的名稱伺服器。攻擊者會對自己註冊的域名產生大量的請求,並查詢不存在的子域名,這就會導致大量的解析請求發送到受害者的名稱伺服器,使其不堪重負。

什麼是 DNSSec?

DNS 安全擴展是為了使參與 DNS 查詢的各級伺服器之間的通信更加安全。它是由負責 DNS 系統的 互聯網名稱與數字地址分配機構 Internet Corporation for Assigned Names and Numbers (ICANN)設計的。

ICANN 意識到 DNS 頂級、二級和三級目錄伺服器之間的通信存在弱點,可能會讓攻擊者劫持查詢。這將允許攻擊者用惡意網站的 IP 地址來響應合法網站的查詢請求。這些網站可能會向用戶上傳惡意軟體,或者進行網路釣魚和網路欺騙攻擊。

DNSSec 將通過讓每一級 DNS 伺服器對其請求進行數字簽名來解決這個問題,這就保證了終端用戶發送進來的請求不會被攻擊者利用。這就建立了一個信任鏈,這樣在查詢的每一步,請求的完整性都會得到驗證。

此外,DNSSec 可以確定域名是否存在,如果不存在,它就不會讓該欺詐性域名交付給尋求域名解析的無辜請求者。

隨著越來越多的域名被創建,越來越多的設備繼續通過物聯網設備和其他「智能」系統加入網路,隨著更多的網站遷移到 IPv6,將需要維持一個健康的 DNS 生態系統。大數據和分析的增長也帶來了對 DNS 管理的更大需求

SIGRed: 蠕蟲病毒 DNS 漏洞再次出現

最近,隨著 Windows DNS 伺服器缺陷的發現,全世界都看到了 DNS 中的弱點可能造成的混亂。這個潛在的安全漏洞被稱為 SIGRed,它需要一個複雜的攻擊鏈,但利用未打補丁的 Windows DNS 伺服器,有可能在客戶端安裝和執行任意惡意代碼。而且該漏洞是「可蠕蟲傳播」的,這意味著它可以在沒有人為干預的情況下從計算機傳播到計算機。該漏洞被認為足夠令人震驚,以至於美國聯邦機構被要求他們在幾天時間內安裝補丁

DNS over HTTPS:新的隱私格局

截至本報告撰寫之時,DNS 正處於其歷史上最大的一次轉變的邊緣。谷歌和 Mozilla 共同控制著瀏覽器市場的大部分份額,他們正在鼓勵向 DNS over HTTPS(DoH)的方向發展,在這種情況下,DNS 請求將被已經保護了大多數 Web 流量的 HTTPS 協議加密。在 Chrome 的實現中,瀏覽器會檢查 DNS 伺服器是否支持 DoH,如果不支持,則會將 DNS 請求重新路由到谷歌的 8.8.8.8。

這是一個並非沒有爭議的舉動。早在上世紀 80 年代就在 DNS 協議上做了大量早期工作的 Paul Vixie 稱此舉對安全來說是「災難」:例如,企業 IT 部門將更難監控或引導穿越其網路的 DoH 流量。不過,Chrome 瀏覽器是無所不在的,DoH 不久就會被默認打開,所以讓我們拭目以待。

via: https://www.networkworld.com/article/3268449/what-is-dns-and-how-does-it-work.html

作者:Keith Shaw, Josh Fruhlinger 選題:lujun9972 譯者:wxy 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國