如何设置 BIND 以对特定域使用不同的 DNS

如何设置 BIND 以对特定域使用不同的 DNS

在工作中,我们使用 VPN 隧道与为测试而设置的外部网络进行通信。此外部网络内还运行着 DNS,我希望在我的计算机上拥有本地 DNS 服务,其运行方式如下:

  • 请求的主机名是否以 .that.specific.domain 结尾?-> 询问 192.168.xxx.yyy 的 DNS 服务

  • 在所有其他情况下 -> 询问默认 DNS 服务(即我们的路由器或互联网上的某些服务器)

我对 DNS 配置完全是新手,所以我浏览了不少有关 BIND 的手册和教程,但很难真正找到如何做到这一点。我在 named.conf 中添加了以下内容,但到目前为止不起作用:

zone "that.specific.domain" IN {
    type slave;
    masters {192.168.xxx.yyy;};
};

我仍然可以解析每个互联网主机,但我无法解析来自该外部网络的任何主机。如果我直接询问该 DNS(即nslookup hostname.that.specific.domain 192.168.xxx.yyy),则可以解析。所以这不是网络问题。

但总的来说,我认为这不是一件难事。有人知道我的配置可能出了什么问题吗,或者我是否应该做一些完全不同的事情来实现我的目标?

答案1

如果我理解您的问题,您有一个现有的 DNS 服务器,它可以通过递归或通过 ISP 转发器无问题地解析主机。对于特定域名,您希望 DNS 服务器在转发请求时使用一组不同的转发器。

这是在 BIND 中使用“转发区域”完成的,在 Windows DNS 中使用“条件转发器”完成的。

http://docstore.mik.ua/orelly/networking_2ndEd/dns/ch10_05.htm 来自 DNS/Bind,第 10.5.2 节:

zone "that.specific.domain" {
    type forward;
    forwarders { 192.168.xxx.yyy; };
};

答案2

您所寻找的内容已由您 PC 中的 DNS 设置完成。有以下设置基本的次要的DNS 服务器。

在 Windows 中它看起来像这样(由 DNS 服务器操作的连接到您的网络的设备的属性):

设备属性

在基于 Linux 的操作系统中,你有一个文件叫做解析配置文件,它看起来应该是这样的:

nameserver 192.168.xxx.yyy
nameserver 192.168.yyy.xxx

如果您尝试设置自己的 DNS 服务并使其“询问”其他 DNS 服务器以获取未知主机,则必须查看 DNS 配置中的转发器。您可以在以下位置找到这些设置命名配置文件

forwarders {
    192.168.xxx.yyy;
    192.168.yyy.xxx;
};

只要您的辅助 DNS 服务器没有锁定到某个域区域(例如您公司自己的内部网络(权威 DNS 服务器)),此方法就会起作用。

参考:

http://www.maxprog.com/site/support/us/emailverifier/editing_dns_servers.php http://linux.die.net/man/5/resolv.conf

相关内容