Linux

bind9,從結果中排除外部介面地址

  • February 23, 2015

美好的一天,我正在使用 Zentyal,配置了 2 個介面,一個內部和一個外部。解析伺服器主機名和別名時,bind 在結果中隨機返回外部地址。問題當然是本地網無法與外網通話,隨機中斷服務。例子:

dig proxy.private.example.com

;; ANSWER SECTION:
proxy.private.example.com. 259200 IN   CNAME   zentyal.private.example.com.
zentyal.private.example.com. 900 IN    A       192.168.122.73
zentyal.private.example.com. 900 IN    A       10.10.20.40

10.10.20.40 位於內部網路上,是我們應該始終解析的地址。

如何從結果中排除介面“192.168.122.73”?我的綁定配置會是什麼樣子?

ps:我已經搜尋了3天了;我可能正在尋找錯誤的東西。

非常感謝您的幫助。

您現在配置的是A同一資源的多個 -records。Bind 將以循環方式處理它,並交替返回 192.168.122.73 或 10.10.20.40 用於對 zentyal.private.example.com 的 DNS 請求。

您想要的是,根據 DNS 請求發起的介面/IP 地址,以一致的方式返回不同的響應。在 Bind 中,這稱為視圖。

它要求您設置兩個不同的區域文件,一個用於外部客戶端,另一個用於內部客戶端,並配置 Bind 何時使用哪個區域文件。您的配置中的相關配置部分可能看起來像這樣:

view "internal" {
       match-clients { localnets; };
       recursion yes;          /* this is the default */

       zone "private.example.com" {
               type master;
               file "db.private.example.com.internal";
               allow-transfer { any; };
   };
};

view "external" {
   match-clients { any; };
   recursion no;

   zone "example.com" {
       type master;
       file "db.example.com.external";
           allow-transfer { none; };
   };
};

然後將 10.x ip-address 的 A 記錄添加到 db.private.example.com.internal 並確保只有 192.x ip-address 的 A 記錄保留在公共 db.example.com.external區文件。

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