Domain-Name-System

來自公共域名的私有子域的 Bind9 DNS 配置

  • November 10, 2020

我們目前有一個私有 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

這是我的named.conf文件:

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

我不明白我的設置有什麼問題。

因為 BIND 伺服器對 具有權威性example.com所以即使在子域的情況下它也不會執行遞歸NXDOMAIN。您要麼需要使用另一級別的子域,要麼使用響應策略區(RPZ)application.sub.example.com配置個別例外。

事後不是很有幫助,但一般來說,您不希望在(相同的)頂級域區域中擁有一個內部/私有 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 地址

引用自:https://serverfault.com/questions/1042027