我们使用RH5.8并禁用ipv6。
命名(绑定)服务处于正向模式(启用缓存)
options {
directory "/var/named";
listen-on { 127.0.0.1; };
forwarders {10.10.12.1;};
forward only;
};
似乎某些命令(如telnet)始终首先查询AAAA记录,当回退到查询A时,在命名缓存中记录答案(没有这样的名称)。
因此,客户总是收到错误。
在下面的示例中,10.10.10.1是本地IP:
127.0.0.1 -> 127.0.0.1 DNS Standard query AAAA testapp.test.com
10.10.10.1 -> 10.10.12.1 DNS Standard query AAAA testapp.test.com
10.10.10.1 -> 10.10.12.1 DNS Standard query AAAA testapp.test.com
10.10.12.1 -> 10.10.10.1 DNS Standard query response, No such name
127.0.0.1 -> 127.0.0.1 DNS Standard query response, No such name
127.0.0.1 -> 127.0.0.1 DNS Standard query A testapp.test.com
127.0.0.1 -> 127.0.0.1 DNS Standard query response, No such name
我在网上搜索,发现不仅我遇到了这样的问题
http://www.linuxforums.org/forum/red-hat-fedora-linux/136217-disabling-ipv6-dns-queries.html
less /etc/modprobe.conf
alias net-pf-10 off
alias ipv6 off
options ipv6 disable=1
less /etc/sysconfig/network
NETWORKING_IPV6=no
less /etc/sysconfig/named
OPTIONS="-4"
named -v
BIND 9.3.6-P1-RedHat-9.3.6-20.P1.el5
但遗憾的是到目前为止找不到任何解决方案......
答案 0 :(得分:1)
根据评论中的要求:对负面缓存的一些解释。
NXDOMAIN和NODATA之间的区别在RFC 2308的第5节中描述:
由名称错误(NXDOMAIN)引起的否定答案应该是 缓存,以便可以检索并返回它以响应 对同一< QNAME,QCLASS>的另一个查询这导致了 缓存否定回应。
因此可以基于QNAME(即“blabla.example.com。”)和QCLASS(通常为“IN”)缓存NXDOMAIN。所以这意味着blabla.example.com
根本不存在。负缓存条目独立于QTYPE。 NODATA答案不同:
无数据错误(NODATA)导致的否定答案应该是 缓存,以便可以检索并返回它以响应 另一个查询相同< QNAME,QTYPE,QCLASS>结果导致了 缓存的否定回应。
这里包括QTYPE(即“AAAA”)。 NODATA否定缓存条目仅表示该名称不存在此特定记录类型。
所以:如果您收到NXDOMAIN响应,那么您知道任何记录类型的名称根本不存在。如果您收到NODATA响应,那么您知道所请求的记录类型不存在,但可能存在其他记录类型。
这也意味着在发送回复时,如果可能存在同名的不同记录类型的有效记录,则永远不会发送NXDOMAIN响应。域名不存在将被缓存,缓存将开始告诉其客户端该名称根本不存在。