我正在尝试实现以下目标:
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 却拒绝合作,这有什么原因吗?
谢谢!