説明
alternate プラグインは、初期リゾルバーによって提供されたエラー結果に応じて、別のアップストリームサーバーにクエリを選択的に転送できます。プラグインチェーンが特定のエラーメッセージを返した場合に使用される代替のアップストリームを設定できます。alternate プラグインは forward プラグイン(https://coredns.dokyumento.jp/plugins/forward)を使用して指定のアップストリームにクエリを実行します。
alternate プラグインは DNS プロトコルと追加の forward パラメーターなしのランダムポリシーのみをサポートするため、次のディレクティブは失敗します
. {
forward . 8.8.8.8
alternate NXDOMAIN . tls://192.168.1.1:853 {
policy sequential
}
}
名前が示すように、alternate の目的は、たとえば目的のアップストリームが利用できなくなった場合に代替を許可することです。
構文
{
alternate [original] RCODE_1[,RCODE_2,RCODE_3...] . DNS_RESOLVERS
}
- original は省略可能なフラグです。設定すると、alternate は他プラグインによって変更される可能性のある代替に original リクエストを使用します
- RCODE はエラー応答コードの文字列表現です。有効な rcode 文字列の完全なリストは https://github.com/miekg/dns/blob/master/msg.go の
RcodeToString
として定義されており、その例にはSERVFAIL
、NXDOMAIN
、REFUSED
があります。少なくとも 1 つの rcode が必要ですが、複数の rcode をコンマで区切って指定できます。 - DNS_RESOLVERS は dns リゾルバーリストを受け付けます。
例
ローカル DNS サーバーへの代替
以下は、すべてのリクエストが 8.8.8.8 にフォワードされることを指定します。応答が NXDOMAIN
の場合、alternate はリクエストを 192.168.1.1:53 にフォワードし、それに応じてクライアントに返信します。
. {
forward . 8.8.8.8
alternate NXDOMAIN . 192.168.1.1:53
log
}
オリジナルのリクエストを使用して代替
以下は、8.8.8.8 の応答が NXDOMAIN
の場合に original
クエリが 192.168.1.1:53 にフォワードされることを指定します。original
は、リクエストに対して次プラグインからの変更がないことを意味します。original
フラグがない場合、alternate は EDNSO オプション(書き換えによって設定)を使用してリクエストをフォワードします。
. {
forward . 8.8.8.8
rewrite edns0 local set 0xffee 0x61626364
alternate original NXDOMAIN . 192.168.1.1:53
log
}
複数の代替
一意のエラー応答を提供する限り、複数の代替を指定できます。
. {
forward . 8.8.8.8
alternate NXDOMAIN . 192.168.1.1:53
alternate original SERVFAIL,REFUSED . 192.168.100.1:53
log
}