Corefile の解説

Corefile はどのように動作しますか?

Corefile は CoreDNS の設定ファイルです。これは以下を定義します。

  • どのサーバーがどのポートでどのプロトコルをリッスンするか。
  • 各サーバーがどのゾーンの権威サーバーであるか。
  • サーバーにどのプラグインがロードされるか。

さらに説明するために、この "Corefile" を見てみましょう。

ZONE:[PORT] {
    [PLUGIN]...
}
  • ZONE は、このサーバーのゾーンを定義します。オプションの PORT は、デフォルトで 53 または -dns.port フラグの値になります。
  • PLUGIN は、ロードするプラグインを定義します。これもオプションですが、プラグインがないサーバーはすべてのクエリに対して SERVFAIL を返します。各プラグインには、_引数_を持つことができる複数の_プロパティ_を持つことができます。

つまり、次の例では

ZONE はルートゾーン . で、PLUGINchaos です。_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

なぜでしょうか?このゾーンに対して _同じポート_ でサーバーを既に定義しているからです。2 番目のサーバーのポート番号を変更して、それによって_別の_サーバーを作成すれば問題ありません。

.    { }
.:54 { }

新しいゾーンを定義するときは、新しいサーバーを作成するか、既存のサーバーに追加します。ここでは、2 つのゾーンを処理する _1 つの_ サーバーを定義しています。これは、異なるプラグインをチェーンする可能性があります。

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 で役立つその他の興味深いプラグインは、_import__startup__shutdown_ です。

Miek Gieben
公開日: 、タグ: Corefile および ドキュメント、単語数: 475 語。