关于此设置:
我的公共权威 DNS 服务器位于<public dns ip>
:
example.com. A <public webserver IP>
foo.bar.example.com. TXT "Hello World"
我的私人权威 DNS 服务器位于192.168.0.2
:
foo.bar.example.com. A "192.168.0.1"
bar.bar.example.com. CNAME "foo.bar.example.com"
因此,我有两个权威 DNS 服务器,一个在公共域中,一个在私有域中。我需要公共 DNS 服务器为特定子集的域提供一些 TXT 记录,但不提供 A 记录。私有 DNS 服务器需要提供 A 和 CNAME 记录,仅供内部使用,但不提供 TXT 记录。
如果我的客户端的 DNS 服务器 IP 顺序错误(公共、私有),那么公共权威 DNS 服务器响应是否会阻止查询私有 DNS 服务器?
例子:
客户端已resolv.conf
设置为:
<public dns ip>
192.168.0.2
如果他们nslookup foo.bar.example.com
从控制台运行,它会解析吗?192.168.0.1
或者公共 DNS 服务器会告诉他们该名称不存在并停止查找吗?
答案1
解析并不像您想象的那样工作。当您有多行时,resolv.conf
它们将用作后备:系统始终使用第一个名称服务器,并且只有当它根本没有回复时(这与回复名称不存在不同),它才会查询第二个名称服务器,依此类推。这基本上适用于每个查询。
您应该进行不同的设置:只有一个权威名称服务器,如果您使用,bind
请使用其views
机制向不同的客户端回复不同的内容。让客户端通过 DNS 的正常树状遍历来找到它。
但除此之外,理论上你是对的:如果“公共”服务器确实回复并说 NXDOMAIN,搜索将停止。除非你混合使用权威和递归( 中的那些resolv.conf
),这是一个非常坏的习惯。而且你仍然有一个比需要的更复杂的设置,它会在以后给你带来问题。
答案2
这是 Windows 网络中的常见设置;其中(由于 Active-Directory DNS 集成)递归解析器也是该 DNS 区域的权威服务器。
如果公共 DNS 中也存在具有相同名称(但不同记录)的区域,则查询公共记录的尝试将在内部递归解析器处终止(因为它对该区域具有权威性,因此它可以权威地声明该记录不存在。);因此,对于使用私有解析器的任何客户端来说,公共区域都会被私有区域掩盖。
答案3
我认为,如果你的<public dns ip>
域名没有 A 记录,那么它肯定是到辅助 DNS 服务器了192.168.0.2