
大家好,我正在使用 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 記錄區域檔案。