对于我们自己的DNS服务器来讲,我们是不希望它对除了自己域以外的其它域进行DNS解析的,倒不是因为我们自私,是因为我们的带宽有限,所以嘛,当然要先保证自己咯,所以我在配置智能DNS的时候,针对公网的DNS都是拒绝递归查询的(递归查询的定义请参阅http://baike.baidu.com/view/757263.htm)。
在配置DNS的时候,递归查询的关闭我一般都是使用代码recursion no;来禁止该view里定义的IP地址对该服务器进行递归查询,但是在实际使用过程中,这种方法经常会“半失效”,就是虽然没有进行递归查询,但是会提示跟域服务器信息(如图左所示),自然也会消耗掉一点网络资源,这对我们来说是不大愿意出现的情况,可是怎么不知道怎么的,这种现象总是经常动不动就出现一次,后来,几斤周折,终于找到了原因,是因为虽然服务器拒绝了递归请求,但是没有拒绝缓存的递归请求,因为缓存中记录做递归查询需要查询跟域服务器,所以DNS就会返回根域服务器的信息。
好了,既然问题发现了,那么解决方案也就出来了,不是说没有拒绝缓存嘛,那么我们就添加一段代码allow-query-cache { none; };到recursion no;的下面,这样就能正常了(如图右所示),后来上网查阅相关资料,发现代码allow-recursion { none; };可以替代上面两句代码的意思,测试了一下,果然通过了,但是我到现在为止都还没有找到任何技术文档能够叙述allow-recursion { none; };和recursion no;到底有什么区别,所以我想我们为了以防万一,把这三条代码都加进去吧,这样更彻底一些,呵呵O(∩_∩)O~