使用 DNSSEC 是否可以拥有不同的内部 DNS 和公共 DNS?

使用 DNSSEC 是否可以拥有不同的内部 DNS 和公共 DNS?

我正在尝试实现以下目标:

  • example.com指向公共 IP 地址的我的域名的公共名称服务器。
  • 在 LAN 内运行的同一域的私有名称服务器,它将客户端指向同一 LAN 上的私有 IP 地址。
  • DNSSEC 已启用。

当然,同时实现第一点和最后一点相对容易,因此问题在于让私人组件发挥作用。

就我的实际设置而言:

  • 我正在使用 Cloudflare 的 DNS 服务,其中我的域名有一个指向公共 IP 地址的 A 记录,并且启用了 DNSSEC。
  • 在我的注册商处,我根据 Cloudflare 提供的信息添加了 DS 记录,并配置了 Cloudflare 的名称服务器。正如您所期望的那样,所有这一切都运行正常。
  • 在内部,我正在运行 Pi-Hole(设置为我的 LAN 上客户端的 DNS 服务器),它配置了 DNSSEC,并指向本地 CoreDNS 实例作为上游解析器。
  • 在 CoreDNS 中,我配置了一个区域,example.com该区域使用 生成的密钥进行签名coredns-keygen。它有一个指向内部 IP 地址的 A 记录。
  • 我在我的注册商处有第二个 DS 记录,该记录基于 CoreDNS 内部使用的密钥。

会发生什么:

  • 常规设置适用于解析不属于我的域名。
  • 当我尝试解析我的域名时,Pi-Hole 会做出响应SERVFAIL并记录。ABANDONED
  • 但是,如果我将客户端直接指向 CoreDNS(例如使用dig),我会得到带有 LAN IP 地址的预期响应。
  • 另外,如果我在 Pi-Hole 中禁用 DNSSEC,它仍然可以正常工作。

我的问题是:

  • 我所尝试实现的目标有可能实现吗?
  • 我开始怀疑在我的注册商处拥有单独的 DS 记录是否错误,但我认为我无法检索 Cloudflare 正在使用的私钥,也无法上传自定义密钥,所以我不确定如何对公钥和私钥使用相同的密钥。
  • 如果我将客户端直接指向 CoreDNS,事情似乎可以正常工作,但 Pi-Hole 却拒绝合作,这有什么原因吗?

谢谢!

相关内容