DNS緩存以及它如何使您的Internet更好

DNS緩存(有時稱為DNS 解析器緩存)是由計算機的操作系統維護的臨時數據庫,其中包含所有最近訪問的記錄以及嘗試訪問網站和其他Internet網絡域的記錄。

換句話說,DNS緩存只是最近DNS查詢的內存,當您試圖找出如何加載網站時,您的計算機可以快速引用它。

大多數人只有在提到刷新/清除DNS緩存以幫助解決互聯網連接問題時,才會聽到“DNS緩存”這個短語。 這個頁面底部還有更多內容。

DNS緩存的目的

互聯網依靠域名系統(DNS)來維護所有公共網站及其相應IP地址的索引。 你可以把它想成電話簿。

通過電話簿,我們不必記住每個人的電話號碼,這是電話可以通信的唯一方式:使用電話號碼。 同樣,DNS也被使用,所以我們可以避免記住每個網站的IP地址,這是網絡設備與網站進行通信的唯一途徑。

當您要求您的網絡瀏覽器加載網站時,幕後會發生什麼......

你輸入一個URL 並且您的網絡瀏覽器向您的路由器詢問IP地址。 路由器有一個DNS服務器地址存儲,所以它會向DNS服務器請求該主機名的IP地址。 DNS服務器找到屬於的IP地址 然後能夠理解你要求的網站,然後你的瀏覽器可以加載相應的頁面。

這發生在你想訪問的每個網站上。 每當用戶通過其主機名訪問網站時,Web瀏覽器就會向互聯網發起請求,但只有在網站名稱“轉換”為IP地址後才能完成此請求。

問題在於,儘管您的網絡可以使用大量的公共DNS服務器來嘗試加速轉換/解析過程,但仍然可以快速獲得“電話簿”的本地副本,這是DNS緩存進入的地方玩。

DNS緩存嘗試通過在請求發送到互聯網之前處理最近訪問過的地址的名稱解析來加速該過程。

注意:在“查找”過程的每個層次結構中實際上都有DNS緩存,最終讓您的計算機加載該網站。 計算機到達您的路由器,該路由器與您的ISP聯繫 ,這可能會在另一個ISP出現問題後才會結束所謂的“根DNS服務器”。 出於同樣的原因,該流程中的每個點都有一個DNS緩存,這是為了加速名稱解析過程。

DNS緩存如何工作

在瀏覽器向外部網絡發出請求之前,計算機會截取每個請求並在DNS緩存數據庫中查找域名。 該數據庫包含所有最近訪問的域名的列表以及第一次發出請求時DNS為其計算的地址。

可以使用命令 ipconfig / displaydns在Windows上查看本地DNS緩存的內容,其結果與此類似:

docs.google.com
-------------------------------------
記錄名稱。 。 。 。 。 :docs.google.com
記錄類型。 。 。 。 。 :1
生存時間。 。 。 。 :21
數據長度。 。 。 。 。 :4
部分 。 。 。 。 。 。 。 :回答
A(主機)記錄。 。 。 :172.217.6.174

在DNS中,“A”記錄是包含給定主機名的IP地址的DNS條目的一部分。 DNS緩存存儲此地址,請求的網站名稱以及來自主機DNS條目的其他幾個參數。

什麼是DNS緩存中毒?

當未經授權的域名或IP地址被插入時,DNS緩存會中毒或被污染

由於技術故障或管理事故,有時緩存可能會損壞,但DNS緩存中毒通常與計算機病毒或將無效DNS條目插入緩存的其他網絡攻擊相關聯。

中毒導致客戶端請求被重定向到錯誤的目的地,通常是惡意網站或廣告頁面。

例如,如果上面的docs.google.com記錄具有不同的“A”記錄,那麼當您在Web瀏覽器中輸入docs.google.com時,您會被帶到其他地方。

這給流行網站帶來了巨大的問題。 例如,如果攻擊者將您對Gmail.com的請求重定向到一個看起來像Gmail但不是的網站,那麼您最終可能會遭受像捕鯨這樣的網絡釣魚攻擊。

DNS沖洗:做什麼和如何做到這一點

在解決緩存中毒或其他互聯網連接問題時,計算機管理員可能希望刷新 (即清除,重置或擦除)DNS緩存。

由於清除DNS緩存會刪除所有條目,因此它會刪除任何無效記錄,並在下次嘗試訪問這些網站時強制計算機重新填充這些地址。 這些新地址取自您的網絡設置使用的DNS服務器。

因此,要使用上述示例,如果Gmail.com記錄中毒並將您重定向到一個奇怪的網站,則刷新DNS是讓常規Gmail.com重新返回的第一步。

在Microsoft Windows中,可以使用命令提示符中ipconfig / flushdns命令刷新本地DNS緩存。 當您看到Windows IP配置成功刷新DNS解析程序緩存成功刷新DNS解析程序緩存消息時,您會知道它有效。

通過命令終端,macOS用戶應該使用dscacheutil -flushcache ,但知道運行後沒有“成功”的消息,所以你不會被告知它是否工作。 Linux用戶應輸入/etc/rc.d/init.d/nscd restart命令。

路由器也可以具有DNS緩存,這就是重新啟動路由器通常是故障排除步驟的原因。 出於同樣的原因,您可能會刷新計算機上的DNS緩存,您可以重新啟動路由器以清除存儲在其臨時內存中的DNS條目。