如何配置 CoreDNS 以使用外部解析器解析 CNAME 记录

如何配置 CoreDNS 以使用外部解析器解析 CNAME 记录

我正在寻找一个示例配置,其中 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:53r1.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

在此处输入图片描述

相关内容