从公共域名创建私有子域名的 Bind9 DNS 配置

从公共域名创建私有子域名的 Bind9 DNS 配置

我们目前有一个私有 DNS 服务,希望将其迁移到 Bind9。因此,我必须将当前配置迁移到 Bind9,但我在设置时遇到了麻烦。

以下是上下文。

我有一个公共域名”acme.com“由注册商管理。我在此注册商处管理公共域名,例如:

acme.com        IN  A  < Public IP server 1 >
www.acme.com    IN  A  < Public IP server 1 >
*.acme.com      IN  A  < Public IP server 1 >
other.acme.com  IN  A  < Public IP server 2 >

在公司的内部 DNS 服务器上,我们有“acme.com“ 例如 ”application-1.acme.com“。

我所做的 Bind9 配置暂时允许我解析公共域名,例如“google.com“以及私人域名,例如”application-1.acme.com“。

但是,如果我尝试解析由我们的注册商管理的域名,例如“acme.com“ 或者 ”www.acme.com“,DIG应用程序给了我这样的答案:

dig @10.0.0.254 acme.com
; <<>> DiG 9.11.5-P4-5.1+deb10u2-Debian <<>> @10.0.0.254 acme.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25017
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: a231205f94a3ec92010000005fa95de884db288162c0f9b9 (good)
;; QUESTION SECTION:
;acme.com.                      IN      A
;; AUTHORITY SECTION:
acme.com.               600     IN      SOA     ns1.acme.inc. admin. acme.inc. 2020110501 3600 600 86400 600
;; Query time: 2 msec
;; SERVER: 192.168.0.245 #53(10.0.0.254)
;; WHEN: Mon Nov 09 16:19:03 CET 2020
;; MSG SIZE  rcvd: 124

这是我的命名配置文件文件:

acl "trusted" {
        // some ip range
};
options {
        directory "/var/cache/bind";
        listen-on { any; };
        listen-on-v6 { any; };
        allow-query { any; };
        allow-transfer { none; };
        pid-file "/var/run/named/named.pid";
        allow-recursion { trusted; };
        recursion yes;
        forward only;
        forwarders { 8.8.8.8;  8.8.4.4; };
        dnssec-validation auto;
        auth-nxdomain no;
};
view "trusted" {
    match-clients { trusted; };
    recursion yes;
    zone "acme.com" IN {
      type master;
      file "/etc/bind/zones/acme.com.zone";
    };
};

这里acme.com.zone文件:

$TTL    3600;
@       IN      SOA     ns1.acme. admin.acme. (
                     2020110501;
                           3600;
                            600;
                          86400;
                            600 );
        IN      NS     ns1.acme.

ns1.acme.      IN     A            10.0.0.254

application-1  IN     A            10.0.1.1
application-2  IN     A            10.0.1.2
application-3  IN     A            10.0.1.3

我不明白我的设置有什么问题。

答案1

由于 BIND 服务器权威性对于example.com,即使对于NXDOMAIN子域,它也不会执行递归。您需要使用另一级子域application.sub.example.com,或者使用以下方式配置单独的例外情况响应政策区域(保护区)

答案2

事后并没有多大帮助,但一般来说,您不希望拥有一个内部/私有 DNS 服务器,其内部主机名与您用于公共主机名的主机名位于(相同)顶级域区域中。

因为当您这样做时,您会得到现在所面临的情况:某种形式的影子簿记,以确保您的内部 DNS 将为您的注册商在其 DNS 中存在的每个公共 DNS 记录返回相同的结果。

最好在您的域中指定一个子域供内部使用(例如,int.example.com使用记录application-1.int.example.comapplication-2.int.example.com等),或者当您同时拥有这两个域时:内部使用 example.net,公开使用 example.com。

按照您的要求,一种解决方法是将您的公共 DNS 记录复制到您的内部 DNS 中,并获取以下内容:

$TTL    3600;
@       IN      SOA     ns1.example. admin.example. (
                     2020110501;
                           3600;
                            600;
                          86400;
                            600 );
        IN      NS     ns1.example.com.

ns1.example.com.             IN  A            10.0.0.254

application-1.example.com.   IN  A            10.0.1.1
application-2.example.com.   IN  A            10.0.1.2
application-3.example.com.   IN  A            10.0.1.3
example.com.                 IN  A  < Public IP server 1 >
www.example.com.             IN  A  < Public IP server 1 >
*.example.com.               IN  A  < Public IP server 1 >
other.example.com.           IN  A  < Public IP server 2 >

不过,您可以简单地避免该问题,只需在公共 DNS 区域中发布您的内部主机名以及公共主机名即可:公共 DNS 中的私有 IP 地址

相关内容