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

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

大家好,我正在使用 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天了;我可能正在尋找錯誤的東西。

非常感謝您的幫忙。

答案1

您現在配置的是A相同資源的多個記錄。 Bind 將以循環方式處理該問題,並針對 zentyal.private.example.com 的 DNS 請求交替返回 192.168.122.73 或 10.10.20.40。

您想要的是,根據 DNS 請求發起的介面/IP 位址,以一致的方式傳回不同的回應。在 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; };
    };
};

然後將 IP 位址為 10.x 的 A 記錄新增至 db.private.example.com.internal,並確保公用 db.example.com.external 僅保留 IP 位址為 192.x 的 A 記錄區域檔案。

相關內容