很多時候,DNS 語法都被當作某種深奧的知識來看待,這些知識從頭開始,由一個精心挑選的機密團隊保護著。出於充分的理由 – 通常會認為一個錯誤的舉動可能就會破壞您的區域文件檔,而使您的網站離線,然後阻止電子郵件到達。

然而實際上,您的 DNS 區域並不是什麼神秘的事。任何人都可以學習如何編輯其 DNS 區域和管理其 DNS 的設定。

但這並不是說就完全沒有陷阱。我們今天要告訴您如何去解決一些常見的 DNS 錯誤,並協助您在未來能夠避免這些錯誤。

語法問題

如果您是電腦科學或語言方面的專家,那麼您可能知道什麼是語法,但如果您沒有這方面的知識也沒關係,您就把語法看作是 DNS 的文法。DNS 系統是最極端的語法,基本上它不會接受任何不正確的內容。

這就是大多數陷阱的來源 – 錯誤的 DNS 語法。您以為您在敘述一件事,但 DNS 文法否決它或誤解了您的本意。

DNS 記錄解析

讓我們快速地地分解 DNS 記錄中的內容。

每個 DNS 記錄都是上方的基本部分所組成。

名稱 (Name) 指的是您在該 DNS 記錄中所定義的名稱。TTL 是 “生存時間”。基本上,這個就是在控制 DNS 伺服器檢查該記錄是否有變更的頻率,以秒為單位。類型指的則是紀錄類型。每種記錄類型都有不同的功能。CNAME 又稱作別名,它允許您將一個域名指向另一個域名。 A 記錄則允許您將域名指向 IP 位址。MX 記錄允許您將域名指向電子郵件的伺服器。

常見的 DNS 錯誤

看完上述簡短的解釋,接著讓我們一起了解常見的 DNS 錯誤。

1. 缺少一個點

當您要將一個域名或子域名指向另一個域名時,該域名必須以點號作結尾,否則將不起作用。

相對語法 vs. 絕對語法 或 完全合格 vs. 部分合格

原因如下:根據您的 DNS 供應商或 DNS 介面,您可能必須使用相對語法,或者可能必須使用絕對語法。

差別是什麼呢?

可以將其想像成名字或全名。當您要從現有的每個可能的人選中尋找某個人時,您一定要使用其全名(姓氏+名字),以確保您正在尋找的是正確的人(即使如此,與域名不同,其它還是存在著重複的選項)。

但是,如果您要尋找自己家庭中的某人,那麼您就不需要指定。您可以就直接使用名字。

與 DNS 的原理相同。域名的全名,姓氏和名字皆為 “完全限定域名”(或簡稱 FQDN)。這表示您必須列出完整的域名。最重要的一點是,這個完整的名稱包含點。

為什麼要包含點?它代表的是 “根區域”。這代表我們正在討論的是 DNS,而不是其它命名系統。實際上,您可以按照從上到下,從右到左的層次結構讀取域名。讓我們看一下 FQDN news.gandi.net. :

  • . – 這個點把我們放進了域名系統 (DNS)。理論上,域名可以在 DNS 之外,但是這不是我們要討論的範圍

  • .net – 指的是我們在 DNS 系統中的 “.net” 區域

  • gandi – 在 DNS 系統中 “.net” 區域中的 “gandi” 區域

  • news – 這帶我們進入 DNS 系統中的 “.net” 區域裡的 “gandi” 區域中的 “news” 區域。

然而,在 DNS 區域中,您只能使用相對語法,意思是您只要使用 “部份符合條件” 的域名即可簡化操作。因此,在 gandi.net. 區域中,’news’ 可以是部份符合條件的域名,而 news.gandi.net. 就是完全符合條件的域名。

這裡的陷阱發生在當您將子域名指向另一個域名的時候。通常使用的會是 CNAMEANAME,或是 MX 紀錄。如果您不將您的子域名指向完全符合條件的域名,那麼使用相對語法的區域就會認為您指的是您所在區域中的子域名。

所以如果我們創建一個將域名 news.gandi.net. 指向域名 gandi.net 的 CNAME,但是我們忘記在域名結尾加上一個點(gandi.net”.”),則該記錄將被讀取成將 news.gandi.net. 指向 gandi.net.gandi.net。

2. 應該使用 @

此種錯誤是上述錯誤的另一面向。在名稱欄中,通常會將您要定義的子域名放在其中,例如如果要在 example.com 區域中定義 www,或者如果該記錄是針對 www.example.com,則會將 www 放在其名稱欄中。

但是如果您只是想為 example.com 做個指向而不是要定義 www 呢?那您就可以使用符號 @ 去表示您的主域名。

因此,這種錯誤在於使用主域名當作名稱,通常是輸入主域名,而忘記使用 @。

3. MX 記錄重複

在您的域名上為新郵件服務加上新的 MX 記錄之前,請確任您已經刪除現有郵件服務中的 MX 記錄。否則,您最終將會發生此錯誤 – 設定指向不同位置的重複的 MX 紀錄。

此錯誤來自於您的 DNS 區域中允許有不同的 MX 記錄作為備用,因此,如果最優先使用的郵件伺服器無法使用時,您欲發送的電子郵件仍將會透過備用郵件伺服器寄出,最後您還是會收到電子郵件。

但是,如果您有指向兩個不同郵件服務的 MX 記錄,那麼最後您將在其中一個電子郵件服務中收到部分電子郵件,然後也會透過另一個電子郵件服務收到另一部份的電子郵件。

當人們想將他們的電子郵件指向另一個郵件服務,並嘗試加入新的 MX 紀錄以在兩個郵件服務中都能收到郵件的情況下,這種錯誤也會發生。

4. 變更生存時間

這項錯誤來自於對生存時間 (以下簡稱 TTL) 的誤解,而不是來自於語法錯誤。

誤解是關於 TTL 或保留在記錄上的時間,通常情況是在過去的某個時間點上,DNS 記錄上的 TTL 被設定成很長的時間,或是比期望的時間更長。

然後,域名管理員希望更改記錄並將其迅速傳播。

本質上來說,TTL 控制的是記錄被緩存多長時間。我們將 DNS 解析器的說明保留在下次的文章中,但現在能夠說明的是,網路上的 DNS 伺服器並不會在每次需要的時間點上不間斷地檢查所有 DNS 記錄是否有更新。而是將 DNS 記錄緩存一段時間,並且該時間是由 TTL 所控制。

這裡有個竅門:當您在紀錄上設定新的 TTL 時,新的 TTL 也必須在網路上傳播,或是傳播到所有 DNS 伺服器上。而 DNS 伺服器甚至在當前緩存過期前都不會去檢查新的 TTL。

這表示人們將使用一個較短的 TTL 去更新帶有一個 TTL 的 DNS 記錄,並預期該新記錄能夠因此更快地生效。

而實際上,沒有任何事情能夠讓您的記錄傳播得更快。如果您的 TTL 較長,那您就只能等待。

到目前為止,這些並不是您可能在 DNS 記錄中犯的唯一錯誤,但它們是一些最常見的錯誤。

我們希望透過此文章,能幫助您避免最常見的 DNS 陷阱,但是當然,如果您需要 DNS 方面的協助,都可以隨時與我們聯繫。

原文網址:https://news.gandi.net/zh-hant/2020/07/how-not-to-break-your-dns/?pk_campaign=iThome

Gandi Asia 粉專:https://www.facebook.com/gandiasia/

熱門新聞

Advertisement