我在Linux上使用BIND 9.7.0-P1(Ubuntu 10.04.2)。
我想设置BIND服务器来parsing所有外部未parsing的DNS查询到给定的内部主机。 这可能吗? 它是如何完成的?
我试着设置货代:
forwarders {10.0.1.2; };
但是,这并没有帮助。
NXDOMAIN劫持是不可能的BIND。 这可以使用PowerDNS Recursor lua脚本完成。 Ubuntu 10.04版本库有一个支持lua脚本function的 PowerDNS Recursor软件包。
正如其他人所说,NXDOMIAN劫持可能会造成重大后果,并且您在实施之前了解潜在的问题。
转发器选项必须位于选项块或区块中。 从短的摘录我看不出这些条件是否满足。
而且,显然,一个DNS服务必须在转发器上运行,它可以parsing查询或转发到另一个DNS服务器。 另外,该DNS服务器必须configuration为回答来自第一个DNS服务器的查询。 如果你打开一个shell到Ubuntu框然后运行会发生什么
dig what.ever.domain @10.0.1.2
如果超时,那么10.0.1.2不会回答你的Ubuntu盒子中的查询。
如果通过“解决所有未解决的DNS查询到给定的主机”你的意思是DNS劫持(即服务器响应一个指向该主机的logging,否则将回复一个NXDOMAIN状态,指示查找失败),那么我不认为bind支持这个开箱即用。 那些劫持NXDOAIN响应的ISP可能使用其他方法,或者修改了自定义版本来添加该function。
NXDOMAIN劫持通常是不被接受的,因为它可以打破一些东西。 有关更多详细信息,请参阅http://en.wikipedia.org/wiki/DNS_hijacking 。
forwarders指令告诉bind在执行recursion查询时的位置 – 它指定其他应该查询的DNS服务器,如果这个服务器被请求一个没有本地logging的域。 当所有查找(本地和通过其他主机)无法find匹配的logging时,它不会控制行为。
请不要这样做,这会造成很大的后果。 我知道这只适用于你的内部networking。 但是,它仍然会破坏很多东西。 请记住,您正在为活动服务器返回一个IP,因此许多应用程序和服务可能认为他们试图访问的内容在真实服务器上是真正可用的。 虽然这可能看起来微不足道,但考虑一种情况:应用程序试图将数据发送到远程服务器,并且发现它已经从networking后面启动; 但是,实际上服务器已经脱机。 用户开始看到无关的(如果有的话)有关该程序无法正常工作的错误消息,并打电话给您和/或您的同事寻求支持。 你真的想解决这个问题吗?
这是ICANN的立场:
互联网名称与数字地址分配机构(ICANN)强烈build议不要使用DNSredirect,通配符,合成响应以及任何其他forms的NXDOMAINreplace,这些现有gTLD,ccTLD以及registry级别域名的DNS树中的任何其他级别。