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
なぜでしょうか?このゾーンに対して _同じポート_ でサーバーを既に定義しているからです。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_ です。