希望在resolv.conf中实现“options rotate”指令,以便通过该文件中列出的名称服务器轮换DNS查找.据我了解,这是该指令的重点.它在我尝试过的任何系统上都不起作用.它始终使用文件中的第一个nameserver指令,并忽略其余部分,除非出现错误.
我通过使用模仿DNS服务器的假DNS python脚本进行测试,并始终使用相同的伪造192.168.1.1地址进行回复,而不管请求是什么.当首先放在文件中时,它总是会进入这个服务器,当放在第二个时它永远不会去.这是使用文件中包含的“options rotate”指令.
# cat /etc/resolv.conf search some.toplevel options rotate nameserver 10.0.0.2 <- fake python DNS server nameserver 10.0.0.3 <- real DNS server
Fake DNS server pythons script used
另外,我使用了dig命令和host命令.我验证他们使用了resolv库.我在CentOS 5.6以及我个人的ubuntu上尝试了这个,它有完全不同版本的相关软件包.我完全被这里难住,需要一些帮助.
解决方法
在
http://docstore.mik.ua/orelly/networking_2ndEd/dns/ch06_01.htm上有一个暗示:
换句话说,解析器的实例仍然首先在resolv.conf中查询第一个名称服务器,但是对于它查找的下一个域名,它首先查询第二个名称服务器,依此类推.
请注意,许多程序无法利用此功能,因为大多数程序初始化解析程序,查找名称,然后退出.例如,旋转对重复的ping命令没有影响,因为每个ping进程初始化解析器,在resolv.conf中查询第一个名称服务器,然后在再次使用解析器之前退出.每次连续调用ping都不知道前一个使用的名称服务器 – 甚至是之前运行的ping.但是,发送大量查询的长期进程(例如sendmail守护程序)可以利用轮换.