Linux

綁定命名伺服器 - 將一些請求轉發到其他伺服器

  • October 21, 2013

有沒有辦法綁定回答一些查詢,但將所有其他查詢(同一域的)轉發到另一台伺服器,如:

example.com A 127.0.0.1
www.example.com A 127.0.0.1

不在此列表中的所有內容(example.com MX、ftp.example.com A 等) - 詢問 192.168.0.1(另一個 DNS 伺服器)

本質上,我想攔截一些(但不是全部)去往(在本例中)192.168.0.1 的查詢並回答它。

example.com A- intercept
www.example.com - intercept
example.com MX - pass trough
ftp.example.com - pass trough

這對於 BIND 來說是相當棘手的。雖然這不是您所問的,但您是否考慮過使用另一個 DNS 伺服器,如 DNSMasq,這類事情相對簡單?

預設情況下,您的 BIND 伺服器將使用 DNS 伺服器/etc/resolv.conf來解析它不具有權威性的記錄,但適用於 localhost(即其自身)和 localnets(見下文)。您應該確保相應地設置這些。

localnets 的定義

匹配執行 BIND 的伺服器的所有 IP 地址和子網遮罩。例如,如果伺服器具有 IP 地址為 192.168.2.3 和網路遮罩為 255.255.255.0(或 192.168.2.2/24)的單個介面,則 localnets 將匹配 192.168.2.0 到 192.168.2.255 和 127.0.0.1(環回始終存在,並且只有一個地址,即網路遮罩 255.255.255.255)。某些系統不提供確定本地 IPv6 地址前綴長度的方法。在這種情況下,localnets 只匹配本地 IP 地址,就像 localhost 一樣,但在這種情況下,它將適用於外部和內部(同一主機)請求。

您還可以像這樣顯式定義全域轉發器,記住要保護您的環境:

options {
 recursion yes;
 allow-recursion-on {
   192.168/24;
 };

 forwarders {
   8.8.8.8;
   8.8.4.4;
 };
};

如果要將特定域的查詢定向到特定伺服器,可以通過為各個域配置轉發器來實現:

zone "myothernet.local" {
 type forward;
   forwarders {
     192.168.50.11;
     192.168.50.12;
   };
};

進一步閱讀:

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