Corefile 解說

Corefile 如何運作?

Corefile 是 CoreDNS 的設定檔。它定義了

  • 伺服器在哪些連接埠和使用哪些協定上監聽。
  • 每個伺服器授權管理的網域。
  • 在伺服器中載入哪些外掛程式。

為了更詳細地說明,讓我們看一下這個「Corefile」

ZONE:[PORT] {
    [PLUGIN]...
}
  • ZONE 定義此伺服器的網域。可選的 PORT 預設為 53,或 -dns.port 標誌的值。
  • PLUGIN 定義我們想要載入的外掛程式。這也是可選的,但沒有外掛程式的伺服器只會為所有查詢返回 SERVFAIL。每個外掛程式可以有許多屬性,這些屬性可以有參數

例如,在下一個範例中

ZONE 是根網域 .PLUGINchaoschaos 外掛程式沒有任何屬性,但它確實採用了一個參數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 {
    # ...
}

另請參閱

Corefile 的剖析方式類似 Caddyfile。我們支援該頁面上描述的所有內容,例如使用 環境變數

在 Corefile 中有用的其他有趣外掛程式有:importstartupshutdown

Miek Gieben
發布時間:,並使用 Corefile文件標記,使用了 475 個字。