外部リゾルバを使用して CNAME レコードを解決するように CoreDNS を構成する方法

外部リゾルバを使用して CNAME レコードを解決するように CoreDNS を構成する方法

CoreDNS がファイル (ファイル プラグイン) から CNAME レコードを読み取り、カスタム リゾルバ (転送プラグイン?) を使用して解決する構成例を探しています。クライアントは CNAME レコードではなく、A レコードのみを取得する必要があります。

例えば:

  • クライアントがCoreDNSにtest.r1.svc
  • CoreDNSはCNAMEレコードを取得しますtest IN CNAME test.r2.svc.
  • 外国のリゾルバー10.11.12.13:53に問い合わせてtest.r2.svc
  • A記録をクライアントに返答する

出来ますか?

この設定は私には機能しません:

Corefile
# root
. {
  log
  errors
}

r1.svc {
  file r1.svc
  forward r2.svc 10.11.12.13:53
  log
  errors
}
r1.svcファイル
$ORIGIN r1.svc.
@ 3600 IN SOA sns.dns.icann.org. noc.dns.icann.org. (
    202211241713 ; serial
    7200         ; refresh (2 hours)
    3600         ; retry (1 hour)
    1209600      ; expire (2 weeks)
    3600         ; minimum (1 hour)
)
3600 IN NS a.iana-servers.net.
3600 IN NS b.iana-servers.net.
test IN CNAME test.r2.svc.

答え1

間違っているかもしれませんが、 はブロックforward r2.svc 10.11.12.13:53内にあるr1.svcため、呼び出されることはありません。

Client asks for test.r1.svc
Server responds that it's a CNAME for test.r2.svc
Client asks for test.r2.svc
Server doesn't know how to process the answer

forward r2.svc 10.11.12.13:53行をブロックに移動すると、.2 番目のリクエストを処理できるようになります。

答え2

これを実現するために、CoreDNS 用のプラグインを作成しました:https://github.com/kinjelom/coredns-recursor

ここに画像の説明を入力してください

関連情報