古詩詞大全網 - 團隊口號 - CoreDNS手冊(四)_ _配置

CoreDNS手冊(四)_ _配置

有些部分可以在CoreDNS中配置。

首先,確定哪些插件被編譯到CoreDNS中。我們提供的編譯後的二進制可執行包(binaries)已經包含了所有的插件,插件都列在plugin.cfg中,添加和刪除都很容易,但是CoreDNS需要重新編譯。

大多數用戶使用文件Corefile來配置CoreDNS。CoreDNS啟動時,如果沒有配置-conf標誌,它將在當前目錄中查找Corefile文件。

該文件包含壹個或多個服務器塊。每個服務器塊列出壹個或多個插件。這些插件也可以在以後使用指令進行配置。

在Corefile文件file中,插件的順序並不決定插件鏈的順序。插件執行的順序在plugin.cfg文件中配置。

Corefile文件中的註釋以#開頭。該行的其他部分被識別為註釋。

CoreDNS支持配置中的環境變量。

環境變量可以在任何地方使用。語法是{$ENV_VAR}(也支持Windows類型的語法{%ENV_VAR%})。CoreDNS將在解析Corefile時替換這些變量的內容。

引用導入插件。

這個插件有點特殊,可以在Corefile的任何地方使用。

壹個非常特殊的可導入文件是snippet。片段由命名塊的特殊語法定義。名字需要放在括號裏:(name)。然後,它可以和導入的插件壹起放在配置文件中的任何地方。

每個服務器塊都從服務器應該服務的區域開始。在區域名稱或區域列表名稱(用空格分隔)之後,服務器塊以大括號開始和結束。

以下服務器塊定義了壹個負責所有區域的服務器;在根區域下:。基本上,該服務器應該處理所有查詢:

服務器塊也可以指定監聽端口。默認端口是53 (DNS服務標準端口)。指定端口,並在區域後用冒號作為分隔符列出端口號。

以下Corefile指示CoreDNS創建壹個監控端口為1053的服務器:

為服務器塊定義壹個區域,但該區域已在服務器上配置並已在運行,運行在同壹端口上。Corefile將在啟動時報告壹個錯誤:

將第二個端口改為1055可以使這兩個服務器塊成為兩個不同的服務器。

目前CoreDNS接受四種協議:DNS、TLS上的DNS(DOT)和HTTP/2上的DNS(DOH)。

和gRPC上的DNS .您可以通過在服務器配置文件中的區域前添加前綴來指定服務器接收的協議。

每個服務器塊定義了壹系列插件。最簡單的方法是在服務器塊中添加插件的名稱:

插件chaos讓CoreDNS用CH class回答查詢——在確認服務器的時候很有用。使用上述配置,CoreDNS將在收到請求後回復其版本:

大多數插件允許提供更多的配置說明。例如,混沌插件,我們可以在語法中定義版本和作者:

這樣就給混沌插件增加了壹個指令,讓CoreDNS回復CoreDNS-001格式的版本:

其他插件有更多的配置,使用插件塊,插件塊和服務器塊壹樣,以大括號開始和結束:

讓我們將它們融合在壹起,生成以下Corefile,並設置4個區域運行和2個不同的端口:

當CoreDNS解析配置文件時,將會有以下設置:

擴展插件是CoreDNS默認不包含的插件。可以打開擴展,但是要自己編譯CoreDNS。

插件健康的文檔中寫著“這個插件只需要啟用壹次”,這可能會讓妳認為下面是壹個符合要求的Corefile:

但是,這不起作用,並且會導致壹些短暫的錯誤:

為什麽?健康被視為壹個區域(以及服務器塊的開始)。解析器期望看到插件名(cache,etcd等。),但是下壹個logo是。這不是壹個插件。

正確的核心文件如下:

插件健康文檔中的短語意味著壹旦健康被定義,它對於整個CoreDNS過程是全局的,即使您在服務器中定義它。