來自公共域名的私有子域的 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
這是我的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.com
和application-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 地址