Как настроить CoreDNS для разрешения записей CNAME с помощью внешнего преобразователя

Как настроить CoreDNS для разрешения записей CNAME с помощью внешнего преобразователя

Я ищу пример конфигурации, в которой CoreDNS будет считывать запись CNAME из файла (плагин файла), а затем разрешать ее с помощью пользовательского резолвера (плагин пересылки?). Клиент не должен получать запись CNAME, а только записи A.

Например:

  • если клиент запросит CoreDNStest.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

Для этого я написал плагин для CoreDNS:https://github.com/kinjelom/coredns-recursor

введите описание изображения здесь

Связанный контент