我使用 Bind9 作为 DNS 服务来内部解析一些域名。拓扑结构很简单,所有内部计算机都有一个路由器,所有计算机都使用内部 DNS 来解析内部和外部域名。
假设我们有一个域名“domain.com”,它具有由 GoDaddy 等服务提供商处理的公共 A 记录,并分配给公共 IP 地址,而我的内部 DNS 设置为(相同的域名)在内部将其解析为私有 IP 地址。
有趣的是,在 macOS (Ventura) 上,如果我使用 ping 或 Safari 之类的浏览器,该域名将始终解析为公共 IP。但是,如果我使用 dig 或 nslookup,解析器和结果与私有 IP 正确。刷新 DNS(使用“dscacheutil -flushcache”和“sudo killall -HUP mDNSResponder”,同时清除 Bind9 缓存)无法解决此问题。
所有这些机器都具有由 DHCP 服务器分配的 IP 地址和 DNS 服务器 IP,并且该 DNS 是解析所有域名的唯一来源。
所有其他系统(如 Linux 或 Windows)都可以将同一域名正确解析为指定的私有 IP,没有任何问题。此外,似乎只有已分配公共 IP 的域(或子域)在 macOS 上解析不正确(所有未分配的域名或子域名在内部都是正确的)。所以我猜 Bind9 正在解析(或递归使用)一些转发器?
是否有任何配置可以强制首先解析内部记录?或者我需要针对这种情况专门修复某些内容?
感谢您的任何帮助!
答案1
好的,问题解决了。原来是 iCloud+ Private Relay 正在将流量路由到 Apple 自己的 DNS 服务器。我认为这可能只会影响 Ping 和 Safari。关闭它可以解决问题。希望这对将来遇到此问题的人有所帮助。