Domain-Name-System
如何使用 BIND 獲取 NS 記錄的應答響應類型
我希望有人可以幫我配置一下。我試圖讓 BIND 以某種方式響應以重現託管 DNS 提供商的行為。我對 DNS 很陌生,但我遇到了一個我無法克服的障礙。
當我查詢託管服務提供商的 DNS 伺服器時,NS 記錄作為答复記錄返回。
# dnsq NS www.example.com ns.host.com 2 www.example.com: 113 bytes, 1+2+0+2 records, response, noerror query: 2 www.example.com answer: www.example.com 3600 NS lb1.example.com answer: www.example.com 3600 NS lb2.example.com additional: lb1.example.com 3600 A 1.2.3.4 additional: lb2.example.com 3600 A 5.6.7.8
當我查詢我的內部 BIND 伺服器時,NS 記錄作為授權記錄返回。
# dnsq NS www.test.com bind.local 2 www.test.com: 110 bytes, 1+0+2+2 records, response, noerror query: 2 www.test.com authority: www.test.com 3600 NS lb1.test.com authority: www.test.com 3600 NS lb2.test.com additional: lb1.test.com 3600 A 10.254.0.1 additional: lb2.test.com 3600 A 10.254.0.2
差異最終會改變客戶端的行為,然後查詢權威響應,但不會查詢響應響應。(即在第二種情況下,查詢 ns1.test.com 或 ns2.test.com 以找到“實際”NS 記錄。)這是我想避免的行為。我將在 BIND 中更改哪些設置以將 NS 記錄作為答案響應返回?
編輯 1
根據要求,以下是託管服務提供商提供的區域文件的相關部分:
$ORIGIN example.com. @ 86400 IN SOA <omitted> <omitted> 104 28800 450 1209600 900 lb1 3600 IN A 1.2.3.4 lb2 3600 IN A 5.6.7.8 @ 172800 IN NS ns1.host.com. @ 172800 IN NS ns2.host.com. www 3600 IN NS lb1.example.com. www 3600 IN NS lb2.example.com. ns1 86400 IN A <Host's Nameserver> ns2 86400 IN A <Host's Nameserver>
從我的 BIND 本地伺服器:
$TTL 1h test.com. IN SOA ns1.test.com. ns2.test.com. ( 1 ; 10000 ; 3600 ; 86400 ; 3600 ) ; ; Name servers test.com. IN NS ns1.test.com. test.com. IN NS ns2.test.com. ; ; Addresses ns1.test.com. IN A 10.254.0.1 ns2.test.com. IN A 10.254.0.2 lb1.test.com. IN A 10.254.0.101 lb2.test.com. IN A 10.254.0.102 ; ; Delegation www.test.com. IN NS lb1.test.com. www.test.com. IN NS lb2.test.com.
我想要做的是將 www.test.com 委託給一對 DNS 負載均衡器。
編輯 2
根據要求,以下是對託管 DNS 提供商的探勘輸出,其中遞歸關閉:
# dig +norecurse @ns.host.com www.example.com ns ; <<>> DiG 9.5.1-P2.1 <<>> +norecurse @ns.host.com www.example.com ns ; (1 server found) ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14494 ;; flags: qr; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 2 ;; QUESTION SECTION: ;www.example.com. IN NS ;; ANSWER SECTION: www.example.com. 3600 IN NS lb2.test.com. www.example.com. 3600 IN NS lb1.test.com. ;; ADDITIONAL SECTION: lb2.test.com. 3600 IN A 83.246.78.219 lb1.test.com. 3600 IN A 96.56.160.204 ;; Query time: 88 msec ;; SERVER: 216.239.128.4#53(216.239.128.4) ;; WHEN: Fri Aug 12 12:16:42 2011 ;; MSG SIZE rcvd: 113
嚴格來說,bind 是正確的。可能還有“真正的名稱伺服器”知道的其他 NS 記錄,客戶端查詢它們以找出答案是正確的。
要複製託管服務提供商的名稱伺服器的行為,您可能必須使用相同的軟體。我不相信你可以用綁定來做到這一點。
我懷疑您的託管服務提供商的名稱伺服器要麼是遞歸響應,要麼是 www.example.com 區域的權威伺服器。您可能希望在沒有遞歸的情況下進行查詢以進行檢查。
dig +norecurse @ns.host.com www.example.com ns