unbound.conf 伺服器選項「private-domain」 - 網域是否以點結尾?

unbound.conf 伺服器選項「private-domain」 - 網域是否以點結尾?

unbound.conf用於配置未綁定,一個快取 DNS 解析器。這文件版本 1.6.8 說:

Server Options
    private-domain: <domain name>
        Allow this domain, and all its subdomains to contain private
        addresses. Give multiple times to allow multiple domain names
        to contain private addresses. Default is none.

我們使用 Debian Stretch 運行未綁定的版本 1.6.0(手冊頁和引用的文檔此處沒有區別)。

我們測試了以下三個變體,用

  • 編輯/etc/unbound/unbound.conf
  • 檢查unbound-checkconf
  • 重新啟動systemctl restart unbound.service
  • 監視未綁定的日誌檔案。

變體 1(以點結尾):

private-domain: domain.example.

變體 2(不以點結尾):

private-domain: domain.example

變體 3(按給定順序):

private-domain: "domain.example. domain.example"

對於所有三個變體unbound-checkconf返回:

unbound-checkconf: no errors in /etc/unbound/unbound.conf

在變體 3 中,我們在日誌檔案中找到:

debug: ignoring duplicate private-domain: domain.example.

這是有道理的,因為同一網域的一個條目必須足夠,並且似乎驗證了 unbound 對於兩種書寫網域的方式(帶/不帶點)具有相同的處理方式。

兩種方法都有效,但是在未綁定中定義私有網域的正確語法是什麼?網域是否應該以點結尾?末尾的點有用還是無意義?一個不必要的或缺少的點會產生什麼影響?

答案1

這個問題很古老,但它仍然是我搜尋的第一個條目,所以在我看來,它值得嘗試回答。

domain.example底線:在這種情況下,以及在大多數其他情況下, (沒有尾隨.)和domain.example.(有訓練.)之間沒有實際區別。因此兩者都是正確的。

現在是長答案。 :) 這個答案——以及現在這裡唯一的其他評論,從 2018 年開始——源自規範所說的內容,就像 2018 年對 OP 的評論一樣。雖然 RFC 和 Unbound 使用網域的方式之間可能存在語義差異,但這將偏離規範,並可能被視為錯誤。

RFC 1034 第 3.1 節這樣定義了網域的核心語法:

當使用者需要輸入網域名稱時,每個標籤的長度被省略,並且標籤之間以點(“.”)分隔。由於完整的網域以根標籤結尾,因此這會導致列印形式以點結尾。我們使用這個屬性來區分:

  • 代表完整域名的字串 (通常稱為“絕對”)。例如,「poneria.ISI.EDU」。

  • 表示網域名稱起始標籤的字串,該字串不完整,應由本地軟體使用本地域的知識來完成(通常稱為“親戚”)。例如,ISI.EDU 域中使用的“poneria”。

相對名稱要么相對於眾所周知的來源,要么相對於用作搜尋列表的域列表。

請注意最後一句:除非定義了“用作搜尋清單的網域清單”,否則沒有尾隨點的名稱將被視為相對於“眾所周知的來源”,即名稱層次結構的根。對於公共 DNS,DNS 根對應於根區;私有名稱層次結構很少偏離此約定。

出於實際目的,這意味著沒有尾隨的完全限定網域名稱 (FQDN).幾乎應始終被視為相對於名稱層次結構的根,這相當於相同的「絕對」域。因此,domain.example==“domain.example相對於根”== domain.example.

不同的表述何時會產生影響?當你正在處理碎片網域而不是 FQDN。在這種情況下,您應該省略句點,並考慮在 FQDN 上使用句點。如果您執行example.com.(注意句點;根伺服器向*.example.com您傳送流量)並希望設定east.example.com.為子網域,east則 是子網域;east.是頂級域名(TLD).east

再說一次:這就是規範所說的。一如既往,檢查您正在配置的工具的文檔。該規範還有其他領域,特別是 DNS 壓縮,其中引入了一些額外的語義。如果您不是在 DNS 有線協定中逐字解析或產生訊息,則可以忽略這些內容。

希望這能完全回答這個問題。我希望這對某人有幫助。

相關內容