常見的 DNS 問題及解決方法

有時,網站或應用程式會由於 DNS 問題而無法正常運作,這些問題包括 DNS 記錄設定不當、延遲或惡意攻擊。

學習目標

閱讀本文後,您將能夠:

  • 說明 DNS 的作用
  • 瞭解如何解決常見的 DNS 問題
  • 瞭解「DNS_PROBE_FINISHED_NXDOMAIN」錯誤的來源

相關內容


想要繼續瞭解嗎?

訂閱 TheNET,這是 Cloudflare 每月對網際網路上最流行見解的總結!

請參閱 Cloudflare 的隱私權政策,了解我們如何收集和處理您的個人資料。

複製文章連結

常見的 DNS 問題及解決方法

網域名稱系統 (DNS) 將網域名稱對應到 IP 位址,這樣,人們無需記住精確的網路位址就可以使用 Web 應用程式。DNS 還用於儲存與網域相關的許多其他資訊,例如,將電子郵件傳送到何處。如果 DNS 設定不正確、攻擊者將其作為目標或出現其他技術挑戰,DNS 可能會導致問題。下面簡要介紹了網站管理員可能面臨的一些最常見的 DNS 問題。

DNS 記錄不正確

網域的 DNS 記錄可能設定不正確。如果記錄中的網域拼寫錯誤、記錄中列出的 IP 位址錯誤,或者其他重要資訊缺失或錯誤,DNS 很可能會無法解析。

除了這些基本錯誤之外,一個網域還與多種類型的 DNS 記錄相關聯。這些記錄出現問題可能會導致 DNS 錯誤。例如,網域可能具有 A 記錄但缺少 AAAA 記錄,這會導致使用 IPv6 的用戶端的 DNS 解析在最開始就失敗。或者,如果用戶端嘗試存取替代網域(例如「blog.example.com」而不是「www.example.com」),則該網域的 CNAME 記錄可能不會指向正確的位置。

要解決此錯誤,網站管理員應檢查其代管提供者或 DNS 提供者儀表板中的 DNS 記錄,確保沒有錯誤。然後,DNS 解析程式(回覆 DNS 查詢的伺服器)需要擷取 DNS 記錄,以便系統中包含最新版本。只要 TTL 設定得不太高(見下文),這個過程就不會花費太長時間。

存留時間 (TTL) 設定過高

所有 DNS 記錄都包含存留時間 (TTL)*,即伺服器在必須重新查詢更新之前認為記錄有效的秒數。本質上,TTL 就像包裝食品上的「有效期」:在 TTL 時間結束之前,記錄都被視為可用。

如果 TTL 設定得太高,伺服器將等待太長時間才會檢查 DNS 記錄的更新。這意味著變更在網域名稱系統中的傳播速度會非常慢。如果某個網域的 DNS 記錄已更新,但瀏覽器未收到更新,則瀏覽器可能會嘗試存取錯誤 IP 位址的網站。

為避免出現此 DNS 問題,請確保 TTL 不要太大:通常,絕對最大值為 86400(以秒為單位,相當於 24 小時),但大多數 TTL 要短得多(6 小時或更短)。記錄的確切 TTL 應取決於該記錄預計在未來更新的頻率和速度。(請參閱有關 Cloudflare DNS 記錄之 TTL 的資訊。)

此外,一些 DNS 解析程式允許網域管理員強制重新整理網域的快取——您可以在此處為 Cloudflare 的 1.1.1.1 執行此操作。但這樣做不會重新整理全球所有解析程式的所有快取,因此這種做法並不能作為正確設定 TTL 的替代方案。

*TTL 也用於其他網路領域,例如路由和快取。

DNS DDoS 攻擊

顧名思義,分散式阻斷服務 (DDoS) 攻擊旨在阻斷服務。DDoS 攻擊會用垃圾流量轟炸目標,使合法使用者無法使用服務。這些攻擊可能會導致網站、應用程式、API 或伺服器在幾分鐘或幾小時內不可用。

當 DDoS 攻擊目標是 DNS 本身時,瀏覽器將無法解析網域,這意味著使用者無法載入網站和應用程式,因為無法找到其 IP 位址。2016 年發生了一次此類型的重大攻擊,當時 Dyn 遭到攻擊,導致全球許多地區的使用者無法使用網際網路。針對 DNS 的較小規模 DDoS 攻擊經常發生,而且可能更具針對性。

透過確保每個網域的 DNS 提供者都已實施 DDoS 防護,或為自託管 DNS 解析實作 DDoS 緩解措施來避免此問題。

高延遲

延遲是資料從一個點到另一點所花費的時間。高延遲會導致回應緩慢,甚至導致請求逾時而終止連線。

網路擁塞可能會導致延遲,但最大的罪魁禍首往往是伺服器位置。與其他 Web 流量相比,DNS 查詢相當輕量化,但較遠的 DNS 解析程式意味著,在從使用者請求傳輸到伺服器到使用者收到伺服器傳回的回應期間,使用者可能需要等待幾秒鐘的時間。當使用者嘗試從意外位置或不同于正常位置的世界其他地區(遠離 DNS 提供者的伺服器網路)載入網路內容時,可能會出現此問題。

要解決高 DNS 延遲問題,請使用在靠近全球各地網際網路使用者的位置設有服務提供點的 DNS 提供者。瞭解 Cloudflare 全球網路

DNS 快取記憶體中毒

DNS 快取記憶體中毒攻擊中,惡意方會誘使 DNS 解析程式快取某個網域的錯誤 IP 位址。結果是,嘗試載入該網域的使用者會被導向到攻擊者提供的IP 位址。

採用 DNSSEC 是一種防止未經驗證的資料進入 DNS 解析程式快取的方法。DNSSEC 可驗證 DNS 伺服器之間的訊息(如果沒有 DNSSEC,DNS 將基於信任原則運作,而攻擊者可以利用這一原則)。

網域劫持

網域劫持攻擊是指攻擊者更改與網域關聯的 DNS 記錄。他們通常透過讓網域名稱註冊商將網域轉移給他們來實現這一點。其結果是,網站訪客可能會載入錯誤的網頁(通常是惡意網頁),或者網域根本無法解析。

網域名稱註冊商和註冊機構層級套用網域鎖定可以使攻擊者更難以進行 DNS 劫持。

網頁訪客收到「DNS_PROBE_FINISHED_NXDOMAIN」錯誤,這意味著什麼?

「NXDOMAIN」是電腦詞彙,表示「不存在的網域」。從本質上講,此錯誤意味著,就使用者裝置所知,該網域不存在——就像嘗試撥打不存在的電話號碼或將包裹寄送到不存在的城市一樣。

這是一個很普遍的錯誤,可能由上面列出的問題以及用戶端(使用者嘗試載入網站的裝置)問題引起:

  • 用戶端可能已斷開與網際網路的連線
  • 用戶端嘗試連線的 URL 中可能有錯字
  • 瀏覽器 DNS 快取需要重新整理
  • 用戶端的預設 DNS 解析程式可能已關閉

使用者可以嘗試重新連接到本地網路、強制重新整理網頁 (Ctrl/Command + Shift + R)、在其他瀏覽器中開啟網頁,或者變更其 DNS 設定以使用其他解析程式(Cloudflare 免費提供高度可靠的 1.1.1.1 DNS 解析程式)。

「DNS 伺服器未回應」是什麼意思?

「NXDOMAIN」錯誤可能導致瀏覽器中出現「無法存取此網站」或「DNS 伺服器未回應」訊息。如上所述,許多問題都可能導致此錯誤訊息。

Cloudflare 如何協助防止這些 DNS 問題?

對於執行 Web 應用程式的個人和企業而言,其中大多數問題都可以透過採用 Cloudflare 來解決或緩解,Cloudflare 代理網站流量,並使用最新的安全措施來防範 DDoS 攻擊、DNS 劫持、DNS 快取記憶體中毒和 DNS 設定錯誤。請參閱 Cloudflare 方案以開始使用