Я ищу пример конфигурации, в которой 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
Для этого я написал плагин для CoreDNS:https://github.com/kinjelom/coredns-recursor