如何將 BIND 配置為引用
我在本地 BIND 中創建了一個區域:
zone "labs" { type master; file "/etc/bind/db.labs"; }; zone "foo.labs" { type master; file "/etc/bind/db.foo.labs"; };
/etc/bind/db.labs:
@ 3600 IN SOA labs. root.labs. ( 2019041900 3600 600 604800 600 ) 3600 IN NS ns1.labs. 3600 IN NS ns2.labs. 3600 IN NS ns3.labs. ns1 IN A 172.16.238.100 ns2 IN A 172.16.238.110 ns3 IN A 172.16.238.120
/etc/bind/db.foo.labs:
@ 3600 IN SOA labs. root.labs. ( 2019041900 3600 600 604800 600 ) 3600 IN NS ns.foo.labs. ns IN A 172.16.238.200
這個 BIND 實例正在偵聽
172.16.238.100
,我得到了另一台伺服器正在偵聽172.16.238.200
,它將為foo.labs
.我希望我的 BIND 實例充當參考,這意味著如果我查詢
dig @172.16.238.100 foo.labs
我應該獲得 NS 記錄(例如,與根伺服器的行為相同。dig @a.gtld-servers.net. google.com A
給我 NS 記錄,因為它充當參考)但截至目前:
dig @labs_bind9 foo.labs A ;; QUESTION SECTION: ;foo.labs. IN A ;; AUTHORITY SECTION: foo.labs. 600 IN SOA labs. root.labs. 2019041900 3600 600 604800 600
dig @labs_bind9 foo.labs NS ;; QUESTION SECTION: ;foo.labs. IN NS ;; ANSWER SECTION: foo.labs. 3600 IN NS ns.foo.labs. ;; ADDITIONAL SECTION: ns.foo.labs. 3600 IN A 172.16.238.200
在這種情況下,強制 BIND 提供 NS 記錄缺少什麼?如何將 BIND 作為推薦,我在文件或野外範例中看不到任何內容。
我希望我的 BIND 實例充當參考,這意味著如果我查詢 dig @172.16.238.100 foo.labs 我應該獲得 NS 記錄(例如,與根伺服器的行為相同。dig @a.gtld-servers.net . google.com A 給了我 NS 記錄,因為它充當了推薦)
讓我們看看這裡發生了什麼
#dig @a.gtld-servers.net. google.com A ; <<>> DiG 9.10.3-P4-Debian <<>> @a.gtld-servers.net. google.com A ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56733 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 9 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;google.com. IN A ;; AUTHORITY SECTION: google.com. 172800 IN NS ns2.google.com. google.com. 172800 IN NS ns1.google.com. google.com. 172800 IN NS ns3.google.com. google.com. 172800 IN NS ns4.google.com. ;; ADDITIONAL SECTION: ns2.google.com. 172800 IN AAAA 2001:4860:4802:34::a ns2.google.com. 172800 IN A 216.239.34.10 ns1.google.com. 172800 IN AAAA 2001:4860:4802:32::a ns1.google.com. 172800 IN A 216.239.32.10 ns3.google.com. 172800 IN AAAA 2001:4860:4802:36::a ns3.google.com. 172800 IN A 216.239.36.10 ns4.google.com. 172800 IN AAAA 2001:4860:4802:38::a ns4.google.com. 172800 IN A 216.239.38.10 ;; Query time: 87 msec ;; SERVER: 192.5.6.30#53(192.5.6.30) ;; WHEN: Wed Sep 07 14:03:26 +06 2022 ;; MSG SIZE rcvd: 287
在這裡,您要求 DNS 伺服器遞歸地為您
a.gtld-servers.net.
解析名稱的 IPv4 ( )。google.com``flags: qr
但
a.gtld-servers.net.
對google.com
區域不具有權威性,並且不允許遞歸查詢(請參閱;; WARNING: recursion requested but not availabl
),因此它的答案對於您的 A 查詢 (ANSWER: 0
) 而言是無意義的。但是因為區域
a.gtld-servers.net.
的權威名稱伺服器com.
非常友好地告訴您哪些名稱伺服器負責該google.com.
區域,這意味著您應該向這些伺服器詢問名稱的 IPv4 地址google.com
(請參閱 參考資料;; AUTHORITY SECTION:
)。這些 NS 記錄稱為委託記錄。
此外,它還會報告這些名稱伺服器的 IP 地址,以便您提前了解它們以避免委派記錄解析循環(請參閱 參考資料
;; ADDITIONAL SECTION:
)。這些 A 記錄稱為膠水記錄。
所以你可能會這樣:
/etc/bind/db.labs:
@ 3600 IN SOA labs. root.labs. ( 2019041900 3600 600 604800 600 ) 3600 IN NS ns1.labs. 3600 IN NS ns2.labs. 3600 IN NS ns3.labs. foo IN NS ns.foo.labs. ; delegation for foo.labs. ns.foo.labs. IN A ip_of_ns.foo.labs. ; glue record ns1 IN A 172.16.238.100 ns2 IN A 172.16.238.110 ns3 IN A 172.16.238.120