如何从非递归 MSDNS 解析,如果未找到,如何从 googleDNS(递归)解析?
## resolv.conf ##
nameserver 192.168.10.1 # msdns, non-recursive
nameserevr 8.8.8.8 # googleDNS, recursive
如果我首先放置 MSDNS 并且ping someLocalServer
它可以工作,但如果我ping google.com
得到“未知主机”。如果我切换它们,就会发生相反的情况,谷歌 ping 正常,“someLocalServer”给我“未知主机”。
我尝试过乱搞,nsswitch.conf
但这没有帮助。
## nsswitch.conf ##
host: file mdns_minimal dns mdns4
我已经改变了这些标签,file dns mdns4
[或] file mdns4 dns
[或] file mdns_minimal [NOTFOUND=continue] dns
...
我有一个 Windows 域,并且我将 Windows DNS 设置为非递归。我所期待的是;如果本地查找失败,我希望查找由 googleDNS 处理。
此设置在 Windows Server 下运行良好,但在 CentOS 基本安装下则不行。
答案1
resolv.conf
仅当第一个条目出现超时或错误时,才会回退到底部条目。未知是 DNS 服务器的正确答案。
答案2
您可以将本地 MSDNS 实例用于特定区域(域子树)。虽然glibc/etc/resolv.conf
不支持,但是可以安装绑定,未绑定或另一个有能力的名称服务器(我不确定这里是否有 BIND,但您甚至可以重用现有的名称服务器)。
通过 unbound,您可以配置转发区域:
forward-zone:
name: "example.com"
forward-addr: 192.168.10.1
默认情况下有一个例子unbound.conf
。
然后您resolv.conf
将指向本地主机(或具有递归服务器的主机):
nameserver 127.0.0.1
Linux 发行版有望在默认情况下朝着这样的解决方案发展,请参阅 Fedora 更改页面:
https://fedoraproject.org/w/index.php?title=Changes/Default_Local_DNS_Resolver
答案3
似乎没有办法使这项工作按预期进行。因此,我所做的是将我的 Microsoft DNS 服务器标记为递归服务器,并删除了第二个域控制器中的转发器条目(默认放置在那里,但当第一个域控制器 [可写控制器] 脱机时会导致递归解析延迟)。为什么是微软,为什么?