主機 (hosts)

原始碼 (Source)

hosts 允許從 /etc/hosts 樣式檔案提供區域資料。

描述 (Description)

hosts 外掛程式適用於從 /etc/hosts 檔案提供區域。它從磁碟上預先載入的檔案提供服務。它會檢查檔案的變更,並相應地更新區域。此外掛程式僅支援 A、AAAA 和 PTR 記錄。hosts 外掛程式可以與現成的 hosts 檔案一起使用,這些檔案會阻止存取廣告伺服器。

此外掛程式每 5 秒重新載入一次 hosts 檔案的內容。重新載入後,CoreDNS 將使用新的定義。如果檔案被刪除,任何內嵌的內容將繼續提供服務。當檔案恢復時,將再次使用該檔案。

如果 hosts 外掛程式中沒有符合的項目,您想要將請求傳遞到其餘的外掛程式鏈,則必須指定 fallthrough 選項。

此外掛程式在每個伺服器區塊中只能使用一次。

hosts 檔案

通常,條目的形式為 IP_address canonical_hostname [aliases...],如 hosts(5) 手冊頁所說明。

範例 (Examples)

# The following lines are desirable for IPv4 capable hosts
127.0.0.1       localhost
192.168.1.10    example.com            example

# The following lines are desirable for IPv6 capable hosts
::1                     localhost ip6-localhost ip6-loopback
fdfc:a744:27b5:3b0e::1  example.com example

PTR 記錄

用於反向查找的 PTR 記錄由 CoreDNS 自動產生(基於 hosts 檔案條目),無法手動建立。

語法 (Syntax)

hosts [FILE [ZONES...]] {
    [INLINE]
    ttl SECONDS
    no_reverse
    reload DURATION
    fallthrough [ZONES...]
}
  • FILE 要讀取和解析的 hosts 檔案。如果路徑是相對的,則會將 root 外掛程式的路徑附加到該路徑。如果省略,則預設為 /etc/hosts。我們會每 5 秒掃描一次檔案是否有變更。
  • ZONES 它應成為權威的區域。如果為空,則會使用組態區塊中的區域。
  • INLINE Corefile 中內嵌的 hosts 檔案內容。如果 fallthrough 之前有任何行,則所有這些行都將被視為 hosts 檔案的額外內容。指定的 hosts 檔案路徑仍會被讀取,但條目會被覆寫。
  • ttl 變更產生的記錄的 DNS TTL (正向和反向)。預設值為 3600 秒(1 小時)。
  • reload 變更每次重新載入 hosts 檔案之間的時間間隔。時間為零秒會停用此功能。有效持續時間的範例: "300ms"、"1.5h" 或 "2h45m"。請參閱 Go 的 time 套件。
  • no_reverse 停用自動產生 hosts 的 in-addr.arpaip6.arpa 條目
  • fallthrough 如果區域符合且無法產生任何記錄,則將請求傳遞至下一個外掛程式。如果省略 [ZONES…],則會對此外掛程式具有權威的所有區域發生 fallthrough。如果列出特定區域 (例如 in-addr.arpaip6.arpa),則只有針對這些區域的查詢才會受到 fallthrough 的影響。

指標 (Metrics)

如果啟用監控(透過 prometheus 外掛程式),則會匯出以下指標

  • coredns_hosts_entries{} - hosts 和 Corefile 中條目的總數。
  • coredns_hosts_reload_timestamp_seconds{} - 上次重新載入 hosts 檔案的時間戳記。

範例 (Examples)

載入 /etc/hosts 檔案。

. {
    hosts
}

載入目前目錄中的 example.hosts 檔案。

. {
    hosts example.hosts
}

載入 example.hosts 檔案,僅從中提供 example.org 和 example.net,如果查詢不符合,則 fall through 到下一個外掛程式。

. {
    hosts example.hosts example.org example.net {
        fallthrough
    }
}

載入 Corefile 中內嵌的 hosts 檔案。

example.hosts example.org {
    hosts {
        10.0.0.1 example.org
        fallthrough
    }
    whoami
}

另請參閱 (See also)

/etc/hosts 檔案中條目的形式基於 IETF RFC 952,該 RFC 已由 IETF RFC 1123 更新。