Bind9为专用网络设备配置部分公共TLD

Bind9为专用网络设备配置部分公共TLD

我们公司控制着一个名为 的域名foobar.com,该域名用于各种公共服务(wgwww.foobar.com指向我们的网站)。该域在 DNS 服务中具有公共 DNS 记录。

我们有一些内部网络设备,我们希望为其分配名称以使用foobar.comTLD 的子域。

Bind9如何配置为这样:

  1. 首先检查公共 DNS 服务器是否为某个 IP 地址定义了域
  2. 如果没有,则检查内部 DNS 服务器是否为某个内部 IP 地址定义了域
  3. 如果失败,则“正常”查找失败。

目前,我们的配置错误地在“开/关”基础上运行,例如,它要么读取公共 DNS 要么读取私有 DNS,而不是两者都读取。这使得它无法使用,因为我们想要同时访问公共和私有 DNS 记录。

DNS 服务器是单独管理的,私有 DNS 位于安装了 Bind9 的本地设备上。

我尝试过以下方法:

  1. 在私有 DNS 记录中有类似的内容

    IN NS privatens.foobar.com ; the private (local) DNS
    IN NS publicns.foobar.com ; the public DNS
    
  2. 设置转发named.conf.options到公共 DNS 服务器

    options {
        forwarders { ... };
        forward first;
    };
    
  3. 兼顾内部优先级resolv.conf

这些似乎都不起作用。例子:

www.foobar.com指向使用公共 DNS 的 Web 服务器。printer.office.foobar.com是 CNAME,unique1.foobar.com其中 A 记录是192.168.5.10。我希望查询能够www.foobar.com与公共 DNS 一起使用,并且查询printer.office.foobar.com能够与私有 DNS 一起使用。

现在所有查询都可以printer.office.foobar.com工作,但所有查询都会www.foobar.com产生 NXDOMAIN 响应并在那里停止。

是否甚至可以读取单个域的两个不同区域(例如foobar.com),或者它会忽略另一个区域?

编辑:

为了使问题更清楚,我制作了一张关于我们的网络和外部事物的超级漂亮的图表:

在此输入图像描述

橙色内的任何内容都是我们的专用网络,外部无法访问。绿色里面的东西是设置了域名的公共服务器。192.168.5.1是我们的路由器,192.168.5.5是我们的私有 DNS 服务器,也是ns1.dnsprovider.com第三方提供的 DNS 服务器。

192.168.5.100假设我是我希望发生以下情况的用户:

  1. 查询时,user1.foobar.com我从 获取 DNS 结果privns.foobar.com/192.168.5.5
  2. 当查询www.foobar.comsub.foobar.com我从以下位置获取 DNS 结果时ns1.dnsprovider.com

答案1

一种可能的配置是具有不同的内部的外部的对域的分配是 BIND 视图。通常此设置是在单个服务器中完成的。

BIND 视图允许您在同一域中拥有不同的记录,无论人们是从内部还是外部查看它,或者更有趣的是,相同的记录具有不同的 IP 地址。 (例如,通过 NAT 映射到其他地址的不同外部地址,不会给边界防火墙带来内部流量的负担)。

这种设置的优点是必须为同一域维护两个(或更多)单独的区域。

要定义视图,您只需在第一个视图中定义它响应的网络,其余部分将在第二个视图中显示。

如,在named.conf

acl networks1 { 192.168.1.0/24; 192.168.3.0/24; };
acl networks2 { 192.168.2.0/24; };

view "nets1" {
    match-clients { networks1; };
    recursion yes;

    include "mydomain.view1";
}

view "nets2" {
    match-clients { networks2; };
    recursion yes;

    include "mydomain.view2"; 
}

看:通过示例了解 BIND 9 中的视图

相关内容