configurationbind9以按原样转发查询并按原样答复答案,或者search完善的转发器

我只使用bind9服务器( AAAA )作为转发器:查询被转发到其他DNS服务器( BBBB )。 我手动要求BBBBparsing域名并得到正确的结果:

 $ dig a downloadcenter.intel.com @BBBB ;; ANSWER SECTION: downloadcenter.intel.com. 182 IN CNAME downloadcenter.intel.com.edgekey.net. downloadcenter.intel.com.edgekey.net. 17879 IN CNAME e11.b.akamaiedge.net. e11.b.akamaiedge.net. 19 IN A 172.231.112.37 

我期望bind9服务器AAAA将执行相同的单个查询服务器BBBB并将返回地址172.231.112.37 。 但实际上它做了两个查询:首先要求A downloadcenter.intel.com ,第二个要求A e11.b.akamaiedge.net 。 有没有办法相信第一个答案,只有一个查询BBBB

我需要这个,因为我需要在AAAA和BBBB上具有相同的parsingIP。但是,如果完成了两个查询,则有时服务器可能caching不同的IP。 这通常是低TTLlogging,就像这个一样。

我已经挖掘了文档,最接近的部分是关于内容过滤 ,但我找不到直接的答案。 我也尝试了解绑定 ,但它有同样的问题; 这里是源代码的相关部分 。

解释问题的服务器BBBB日志:

 Mon Feb 1 06:56:34 2016 daemon.info dnsmasq[9664]: query[A] downloadcenter.intel.com from 192.168.0.175 ← first query Mon Feb 1 06:56:34 2016 daemon.info dnsmasq[9664]: forwarded downloadcenter.intel.com to 8.8.8.8 Mon Feb 1 06:56:34 2016 daemon.info dnsmasq[9664]: reply downloadcenter.intel.com is <CNAME> Mon Feb 1 06:56:34 2016 daemon.info dnsmasq[9664]: reply downloadcenter.intel.com.edgekey.net is <CNAME> Mon Feb 1 06:56:34 2016 daemon.info dnsmasq[9664]: reply e11.b.akamaiedge.net is 172.231.112.37 Mon Feb 1 06:56:34 2016 daemon.info dnsmasq[9664]: query[A] e11.b.akamaiedge.net from 192.168.0.175 ← extra query Mon Feb 1 06:56:34 2016 daemon.info dnsmasq[9664]: forwarded e11.b.akamaiedge.net to 8.8.8.8 Mon Feb 1 06:56:34 2016 daemon.info dnsmasq[9664]: reply e11.b.akamaiedge.net is 2.21.192.37 

另一个问题是,如果客户要求AAAA再次parsingdownloadcenter.intel.comCNAME还没有过期,但A已经过期,所以bind9只为A请求BBBB

 Mon Feb 1 07:08:02 2016 daemon.info dnsmasq[9664]: query[A] e11.b.akamaiedge.net from 192.168.0.175 Mon Feb 1 07:08:02 2016 daemon.info dnsmasq[9664]: forwarded e11.b.akamaiedge.net to 8.8.8.8 Mon Feb 1 07:08:02 2016 daemon.info dnsmasq[9664]: reply e11.b.akamaiedge.net is 23.53.35.18 

我需要一种完全按照要求转发查询的方法。 Bind9在这里太智力了。 有没有办法禁用bind9caching?

这在我的设置中是必需的,因为我希望服务器BBBB每次都能看到原始客户端的请求downloadcenter.intel.com

bind9replace成更笨的东西? dnsmasq是完美的答案,除了AAAA是一个Windows主机,所以替代品是有限的。

Bind9( AAAA )的configuration:

 options { dnssec-validation no; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; forwarders { BBBB; }; forward only; }; 

BBBB服务器是一个dnsmasq

你的初始假设是不正确的:

我期望服务器AAAA将执行相同的单个查询服务器BBBB,将返回地址172.231.112.37。

我们来分解一下。

  • 客户端正在请求A名为downloadcenter.intel.com.的typesA的loggingdownloadcenter.intel.com.
  • 没有这样的Alogging。
  • recursion服务器不能说谎,并说该logging的Alogging值是一个IP地址。 它必须报告遇到的别名。

剩下的只是recursion。 通俗地说,如果一个recursion服务器接收到一个recursion查询(设置了RD标志),它必须假定客户端是完全愚蠢的 ,并且它将不能执行任何recursion查询。 没有分开头发的余地,因为在大多数情况下,这是100%准确的。 这迫使recursion服务器追赶别名,直到到达terminal答案,如果存在。 标准在这方面是明确的。