對於域名來說,其 DNS 是否正常運作是件相當重要的事,無論是對於您的網站,您的電子郵件還是與您的域名相關的其它服務。如果您無法掌控您的 DNS,那麼什麼都是不可能的。

那麼,到底要如何檢查您的域名的 DNS 是否有問題呢?您應該如何檢查了?讓我們一起來看看。

首先,什麼是 DNS?

首先,當我們談論檢查 DNS 時,我們必須確定我們正在談論同樣的內容。域名系統( Domain Name System),簡稱為 DNS,是用於將電腦可理解的網路地址(尤其是僅由一串數字所組成的 IP 位址)連結到易於記憶和溝通的域名系統。DNS 既是分層的又是去中心化的。當我們談論檢查 DNS 以及為什麼要檢查它時,這兩者都對其有一定的影響。

DNS 是如何分層的?

DNS 是分層的,因為每個域名都會定義在它的 “母” 域名的 “區域”中,直到根區域,它定義了所有現有的頂級域名(TLD),也就是我們說的域名後綴(有時也稱為網域),例如 .com、.org,.net 等。每個頂級域名的區域會去定義以該特定域名後綴結尾的所有域名,且每個域名的區域也會定義該特定域名的所有子域名。

DNS 如何去中心化?

DNS 是去中心化的,因為當前並無存在列出所有域名的主列表,或者至少,如果確實存在這樣的列表,它也不會被使用 DNS 系統使用。相反地,每個域名的所有全人負責維護其自己的 “區域文件”,該文件會指出該區域中定義的所有域名。然後在另外一台 “名稱伺服器” 上公開,通常會在至少一台權威名稱伺服器和至少一台備用名稱伺服器上。

因此,當您購買一個域名時,您實際上是在購買該域名區域的控制權,以及在該域名中添加任何項目的權利。

此外也有一系列的 DNS 解析器,它們是專門用於 “解析” 域名的過程的伺服器,換句話說,就是將域名轉換為網路地址的伺服器,以便具有域名的電腦可以連接到由其 IP 位址標識的特定電腦。

這個解析器系統也分佈在世界各地的網路中。

當查詢域名系統時,例如,當您在瀏覽器中導航至某個網站時,您的網路域名解析器實際上是第一次發送該查詢的位置。通常,這是您的 ISP 的 DNS 解析器,但也可以使用第三方 DNS 解析器,例如 Google 的公共 DNS,或者如果您連接到 VPN,它可能是該網路的 DNS 解析器。

而對於高流量網站來說,其解析器的緩存中可能已經有了答案,這種情況下,它只會從其緩存中將該答案發送給您,而無需查詢網路中的其餘部分。如果沒有,它將從其分層鏈上詢問下一個解析器。

這個系統使 DNS 解析器可以高度靈活和快速運作,因為它們不必在您每次查詢域名時詢問權威名稱伺服器,但它也可能會給您帶來一些小問題。這部份我們稍後會再做詳細介紹。

現在您只需要知道,DNS 既是分層的又去中心化的即可。這種分層和去中心化意味著對於每個級別中的每個域名(無論是根域名,頂級域名還是域名),該域名的所有權人必須在權威名稱伺服器及一個或多個輔助名稱伺服器(基本上是備份)上,發佈人類可讀的名稱和機器可讀的地址之間的對應關係列表。它們也代表著,若要查找域名,您的電腦必須向稱為解析器的特殊 DNS 伺服器進行分佈式網路查詢,該解析器的工作是為 DNS 查詢提供緩存的答案或去查詢另一個 DNS 伺服器。

為什麼我需要檢查域名的 DNS?

到目前為止都還可以理解嗎?雖然看似有些複雜,但最終還是值得的!接著,您將了解或許需要檢查您域名的 DNS 的幾個原因。

我的 DNS 是什麼?

您或許想要檢查 DNS 的第一個原因是,確認您需要對域名的區域文件進行更改的確切位置,或者換句話說,您需要對域名的配置進行更改,以使其指向新的或與之前不同的伺服器。

例如,假設您在新的代管服務上建立了一個新網站。您需要更新您的 DNS 區域以將其指向新的網站代管伺服器。或者,如果您要變更您的電子郵件供應商,您還需要更新您的域名區域以將您的域名指向新的電子郵件伺服器。

因為,正如我們上面解釋的那樣,名稱伺服器是儲存關於域名的 DNS 查詢的答案的地方,也就是說,分配給您的域名的名稱伺服器將告訴您需要在哪裡進行此更新。

我要在哪裡更新我的 DNS?

不過,您可能想檢查 DNS 的另一端。也就是說,您可以檢查您對 DNS 區域文件所做的變更是否可供所有人使用。

問題是,由於各種原因,您可能無法立即看到更新結果。作為對潛在問題進行故障排除的一部分,您可能需要檢查您的 DNS,尤其是檢查您所做的 DNS 更新是否可從不同的 DNS 解析器獲得。

我的 DNS 是否有傳播延遲的問題?

與此相關,您可能聽說過一個稱為 “傳播延遲” 的概念,或者您可能聽說過 “您最多必須等待 2 天才能使您對 DNS 所做的更改套用在網路上” 的說法。

好消息是,“傳播延遲” 只是一個沒有事實根據的理論。而壞消息是,它被用來解釋一個確實存在的問題,但幸運的是,它是可以避免的。

什麼是 DNS 傳播延遲?

“傳播” 是一個用來解釋 DNS 機制的術語。就像您傳播植物或傳播訊息或想法時一樣,DNS 更新被稱為從更改點向外 “傳播” 到網路中的其它部分。根據 DNS 傳播的理論,新的 DNS 記錄需要一定的時間才能到達網路中的每個角落,因此您可能不會立即看到變化。

真正會發生的是,正如我們上面所描述的,給定的 DNS 解析器要麼已經查詢到特定的域名,要麼沒有。如果它查詢了一個給定的域名,它要麼將 DNS 答案儲存在其緩存中,要麼沒有。

所以,如果某個特定的 DNS 解析器之前曾查詢過一個域名,並將答案儲存在其緩存中,那麼即使您對 DNS 區域文件進行了更新,它仍可能會提供舊的答案。但重要的是要知道,所有 DNS 緩存遲早都會過期,因此只有在緩存尚未過期時,DNS 解析器才會提供舊記錄。

如果您正要更新網站的 DNS 記錄,但在進行此 DNS 更新之前,您曾在網站瀏覽器上訪問過舊網站,則此延遲就更有可能對您產生影響。

因為您的本地 DNS 解析器的緩存中已經存有舊記錄,並且該緩存尚未過期,所以您仍會看到舊網站。但是,如果有人使用從未查詢過您的域名區域的 DNS 解析器訪問您的網站,他們將會獲得新網站作為其查詢結果。

記錄在緩存中保留的時間長度取決於各個 DNS 解析器的策略,但是,您有一種方法可以指定解析器應在緩存中保留您的 DNS 記錄的時間長度。即為我們說的生存時間,或 Time To Live,簡稱 TTL。其通常以秒為單位,標準生存時間(TTL)通常是 10800 秒,用於常規資源記錄的時間為 3 小時,最多 172800 秒或 48 小時,而用於 NS 記錄(用於指出您域名的名稱伺服器)。由於這些生存時間(TTL)是相對標準的,因此,等待 3 到 48 小時讓 DNS 更新 “傳播” 成為一種 “常識”,因而有 “DNS 傳播延遲” 的迷思。

補充:給定 DNS 記錄的生存時間(TTL)不能在您進行 DNS 更新的同時縮短時間,以避免這種延遲。只要原始的生存時間(TTL)有指示,舊有記錄就會保留在緩存中。因此,如果您想快速進行更新,就需要先更新舊有記錄上的生存時間(TTL)。

我該如何檢查我的 DNS?

您可以透過多種方法檢查您的 DNS,具體取決於您要檢查的 DNS 的些內容,以及您可以使用哪些工具或您喜歡哪些工具。

如何在我的域名註冊商的介面中檢查我的 DNS?

檢查您的名稱伺服器

相對容易地,您應該能夠透過域名註冊商檢查您的域名伺服器。事實上,更新和管理域名伺服器是您可以在任何域名註冊商的服務中執行的一項基本功能,因此通常您可以很容易地在域名註冊商的介面中找到它。

在 Gandi 的介面中,您可以從管理介面中進入 “域名” 管理頁面,然後點選 “名稱伺服器” 進行確認。

如何在 Gandi 更新您的名稱伺服器

檢查您的 DNS 紀錄

若要查看近期您的 DNS 區域的更新,您可以在您進行變更的同一位置進行檢查。如果您使用的是第三方 DNS 供應商,您將無法在您的域名註冊商的介面中進行檢查您的 DNS,而是必須至您的 DNS 供應商的介面中檢查。

如果您使用的是您的域名註冊商的 DNS 名稱伺服器,您就可以在您的域名註冊商的 DNS 介面中檢查您的紀錄。

如何在 Gandi 檢查您的 DNS 紀錄

如果您在瀏覽您的網站時沒有看到這些更新的記錄,請務必注意生存時間(TTL)的設定。這可以讓您了解,網站的相關問題是否與仍儲存在緩存中的舊記錄有關。

如何在網站上確認我的 DNS?

DNS 查詢工具

在您在網路上尋找用於檢查網站 DNS 的選項時,區分 DNS 的兩個面向很重要:1. 保存有關域名的 DNS 區域訊息的名稱服務器,以及 2. “解析”方面,查詢並儲存 DNS 記錄以供使用。

如果您只是在搜尋引擎中查詢 “什麼是 DNS?”,您可能會找到錯誤的資訊,因此,這取決於您在尋找的內容。

您可以使用 DNSchecker.org 這樣的網站工具。如果您提供要查找的域名,該網站會允許您搜尋名稱伺服器或任何類型的記錄。

透過尋找 “DNS 查詢” 工具,您可能會更幸運地找到這些您在搜尋的服務。雖然它使用 “傳播” 這個術語來描述此工具,但 whatsmydns.net 提供了一個有用的工具,讓您可以對照來自世界各地不同的網路服務供應商的多個 DNS 伺服器以檢查您的 DNS 記錄。

您只需輸入您的域名,並指明您要查看的記錄類型即可。您將看到一張世界地圖,其中會顯示位於世界各地的哪些域名伺服器擁有您的最新記錄。

WHOIS

另一種專門查詢用於域名的名稱伺服器的方法是使用 Whois 線上查詢工具,例如 Gandi 的 whois 查詢工具 或 ICANN 的查詢工具。ICANN,或網際網路名稱與數字位址分配機構,是負責協調整個域名系統的組織,因此當有疑問時,它們可以成為值得信賴的第三方來源。

如何從終端(terminal)檢查我的 DNS?

檢查 DNS 的最後一個選項是在終端窗口或指令行。

您可以使用三個主要的 DNS 查詢指令:

dig host nslookup

其中最詳細和最通用的是 dig 功能。在使用 dig 功能時,如果您不只是想知道域名本身指向的位置(即網站的 IP 位址),您應該指定您想要的記錄。例如,如果您想查看域名 example.com 用於電子郵件的記錄,您可以輸入:

dig mx example.com

因為 MX 記錄是用於將域名連接到電子郵件服務的記錄。意思是,如果您想要檢查域名的名稱伺服器,您需要在查詢中添加 ‘ns’,如下所示:

dig ns example.com

但是,dig 提供的答案很長,有時看起來會令人害怕,因此,如果您只需要名稱伺服器的列表,則可以這樣做:

dig +short ns example.com

因此,透過 dig 功能,您實際上可以檢查您正在使用的 DNS 解析器是否提供了特定的 DNS 記錄,或者您可以檢查您的域名使用的名稱伺服器。

您可以使用 host 來完成 dig 本身所做的事情,並透過添加 ‘mx’來獲得下方結果:

$ host example.com
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
example.com mail is handled by 0 .

這比 dig +short 所得的結果更具可讀性。但是,您不能使用 host 來查找名稱服務器(或 NS 記錄)。 不過,您可以使用 nslookup

然而,nslookup 只會提供您 IP 位址,而非名稱伺服器的名稱。因此,dig ns 會是您最好的選擇,而如果您想要最簡潔的答案,那麼就選擇 dig +short ns

檢查您的 DNS

了解如何檢查您的域名的 DNS 對於能夠管理您的域名和與之關聯的服務至關重要。我們已經深入了解如何檢查您域名的 DNS,但還有另一種我們沒有介紹卻可以用來檢查您的 DNS 的方法:檢查您的電腦用於訪問網路的 DNS

為此,我們建議您檢查您的電腦的 DNS 設置(取決於您的操作系統,這些設置在您電腦的網路設置中)。不然,您也可以使用線上工具或命令行進行檢查。

DNS 是網路運行的核心系統,因此,知道如何準確了解您或您的域名在該系統中的位置是非常有價值。