我只使用bind9
服务器( AAAA
)作为转发器:查询被转发到其他DNS服务器( BBBB
)。 我手动要求BBBB
parsing域名并得到正确的结果:
$ 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.com
, CNAME
还没有过期,但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在这里太智力了。 有没有办法禁用bind9
caching?
这在我的设置中是必需的,因为我希望服务器BBBB每次都能看到原始客户端的请求downloadcenter.intel.com
。
将bind9
replace成更笨的东西? 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.
。 A
logging。 A
logging值是一个IP地址。 它必须报告遇到的别名。 剩下的只是recursion。 通俗地说,如果一个recursion服务器接收到一个recursion查询(设置了RD
标志),它必须假定客户端是完全愚蠢的 ,并且它将不能执行任何recursion查询。 没有分开头发的余地,因为在大多数情况下,这是100%准确的。 这迫使recursion服务器追赶别名,直到到达terminal答案,如果存在。 标准在这方面是明确的。