在Linux中反向查找 – 在NXDomain上尝试下一个服务器

我有一个使用反向查找来parsing主机名的Linux机器上的应用程序。 问题是,我在我的resolve.conf中有两套DNS服务器(共有4个服务器),每套都对应不同的IP地址范围。 它适用于一个范围的IP,无论哪个恰好在列出的第一个服务器上,但是如果我尝试ns查找其他范围,则报告未find:3(NXDOMAIN)。 如果它只是尝试在列表中的下一个服务器,它会成功….有办法让它做到这一点? DNS服务器仅对其各自的范围具有权威性。

我将安装dnsmasq,使它(127.0.0.1)唯一的名称服务器,并configuration它使用“服务器”dnsmasq.conf指令查询这个或那个域的服务器。

如果有一种方法可以在DNS服务器的NXDOMAIN上尝试不同的服务器,则可以使用具有该function的本地DNS服务器。 Linuxparsing器不允许它。 PowerDNS可以configuration为每个查询运行命令,所以作为最后的手段,你总是可以做到这一点。

对@cstamas的回应,只是为了阐明如何用dnsmasq解决VPN问题。

假设您的机器位于homenetwork.test域,IP地址为10.1.0.0/16,DNS服务器为10.1.0.1。 该DNS服务器只能查询worknetwork.test域的“外部”域名。 homenetwork.test和1.10.in-addr.arp是权威的(内部的)。

现在,您连接一个VPN来join工作networking,现在通过该接口有一条到10.2.0.0/16的新路由,以及一个对worknetwork.test和2.10.in-addr.arpa具有权威性的新DNS服务器10.2.0.1 。 如果您使用这些名称服务器中的一个,则只能parsingworknetwork.test和homenetwork.test域中的一个或另一个。

如果你同时使用dns服务器(和RES_ROTATE),那么它不会更好,因为你有时可以解决这个问题。

现在,如果你使用

dnsmasq --no-resolv --no-negcache --no-host --conf-file= \ --server=/worknetwork.test/10.2.0.1 \ --server=/2.10.in-addr.arpa/10.2.0.1 \ --server=10.1.0.1 

并且在resolv.conf中有“nameserver 127.0.0.1”,你将使用10.2.0.1来parsingworknetwork.test和10.2.xx的IP地址以及其他的DNS服务器。

你告诉很less的信息,所以很难开始,但我会尝试…

首先你所说的服务器是权威的DNS服务器(提供你设置的区域的信息),对吗? 如果是这样的话,你应该在你的resolv.conf中设置一个只recursion的服务器(只为你parsingdns的名字,不提供信息)。 sch说,你可以安装它来监听本地主机。

另一方面,如果服务器返回一个nxdomain,意思是:“我知道这个名字,我是一个权威的服务器,并且这个名字不存在。” 标准的dnsparsingalgorithm在这里停止。 所以就是这样,这是没有办法的。 你应该把权威的DNS服务器设置为不对该名称具有权威性。