Corefile
是 CoreDNS 的設定檔。它定義了
- 伺服器在哪些連接埠和使用哪些協定上監聽。
- 每個伺服器授權管理的網域。
- 在伺服器中載入哪些外掛程式。
為了更詳細地說明,讓我們看一下這個「Corefile」
ZONE:[PORT] {
[PLUGIN]...
}
- ZONE 定義此伺服器的網域。可選的 PORT 預設為 53,或
-dns.port
標誌的值。 - PLUGIN 定義我們想要載入的外掛程式。這也是可選的,但沒有外掛程式的伺服器只會為所有查詢返回 SERVFAIL。每個外掛程式可以有許多屬性,這些屬性可以有參數。
例如,在下一個範例中
ZONE 是根網域 .
,PLUGIN 是 chaos
。chaos 外掛程式沒有任何屬性,但它確實採用了一個參數:CoreDNS-001
。此文字會在 CH 類別查詢中返回:dig CH txt version.bind @localhost
. {
chaos CoreDNS-001
}
如果 CoreDNS 找不到要載入的 Corefile
,它會載入以下內建的檔案,該檔案會載入 whoami 外掛程式
. {
whoami
}
伺服器
這是最簡化的 Corefile
. { }
它定義了一個伺服器來監聽 53 連接埠,並使其成為根網域及其以下所有內容的授權伺服器。讓我們定義另一個授權管理 .
(根網域)的伺服器並載入它
. { }
. { }
這將導致 CoreDNS 因錯誤而退出
2017/07/23 20:39:10 cannot serve dns://.:53 - zone already defined for dns://.:53
為什麼?因為我們已經為這個網域在同一個連接埠上定義了一個伺服器。如果我們更改第二個伺服器的連接埠號碼,從而建立另一個伺服器,那是沒問題的
. { }
.:54 { }
在定義新網域時,您可以建立新伺服器,或將其新增至現有的伺服器。在這裡,我們定義一個處理兩個網域的伺服器;它可以潛在地鏈接不同的外掛程式
example.org {
whoami
}
org {
whoami
}
請注意,當查詢進來時,最特定的網域會勝出,因此任何 example.org
查詢都會通過上面為 example.org
定義的伺服器。.org
的查詢將轉到另一個伺服器。
反向網域
通常,當您要提供反向網域服務時,您必須說一些類似以下的話
0.0.10.in-addr.arpa {
whoami
}
為了簡化這一點,CoreDNS 允許您直接說
10.0.0.0/24 {
whoami
}
這也適用於 CIDR (在 1.0.0 版本中) 網域
10.0.0.0/27 {
whoami
}
非預設協定
在 TLS 上監聽並使用 gRPC?使用
tls://example.org grpc://example.org {
# ...
}
指定連接埠的方式相同,這裡是用於監聽 gRPC 封包。
grpc://example.org:1443 {
# ...
}