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