我在多個網站中建立了一個新的內部網站,我希望根據所使用的來源子網路將其 FQDN 解析為網站特定的子網域。我們的綁定DNS 目前設定的方式是,fqdn 解析在網站a 中為主,從屬於網站b 和c(全部透過puppet),因此我無法在網站b 和c 中設定單獨的記錄文件,並使用不同的答案來執行此操作。
例如,我希望網站 a 172.10.0.0/16 中的 IP 將 server.domain.com 解析為 server.a.domain.com,網站 b 172.11.0.0/16 中的 IP 將 server.domain.com 解析為 server。 b.domain.com 等
我一直在研究 Bind RPZ,但這似乎沒有為子網提供特定的解析選項,只能刪除或阻止整個子網,除非我讀錯了。我可以讓它重定向 cname,而不是轉發到正確的區域進行解析,但這通常適用於所有不使用客戶端 IP 觸發器的伺服器,就像我嘗試使用的那樣,我也可能會更新 CNAME在domain .com 區域中。
加入到 name.d.conf.options
response-policy { zone "rpz"; };
rpz 區域文件
zone "rpz" {
type master;
file "/etc/named/zones/rpz/db.rpz.conf";
allow-query { none; };
};
資料庫檔案
@ IN SOA nstest.domain.com. domain.com. (
2 ; serial
3H ; refresh
1H ; retry
1W ; expiry
1H) ; minimum
@ IN NS nstest.domain.com. ; destination IP rewrite
16.0.0.16.172.rpz-ip CNAME server.domain.com.
server.domain.com CNAME server.a.domain.com.
透過這些設置,所有透過此 ns 向 server.domain.com 發出的請求,無論來源 IP 解析為 server.a.domain.com
或者嘗試使用 RPZ 是錯誤的方法,我在研究中也看到了綁定視圖,但這看起來您必須為每個站點重新創建整個區域文件,我只想修改單個 CNAME 記錄。
任何幫助表示讚賞。
答案1
- 地點 B 的專用伺服器
在這種情況下,您可以輕鬆使用 RPZ。解決方案甚至可以在非標準連接埠(除 53 TCP/UDP 之外)上運行此 DNS 伺服器,並在防火牆層級設定連接埠重定向,以便一旦請求來自特定網絡,它就會被重定向到此連接埠。所有其他請求將由標準連接埠上的 DNS 伺服器處理(由於存在「全域」RPZ 問題,我認為也需要為其他流量提供 DNS 伺服器)。
- 「共享」DNS 伺服器不僅適用於位置 B
視圖可能是最適合您的方向。如果您不需要明確 CNAME,但它甚至可以是 A 記錄,您可以輕鬆地在視圖中定義“特定子網域”,其餘部分保持“正常”解析/轉送到其他 DNS 伺服器”。
假設您有域名example.com在位置 A 的 DNS 伺服器上。server.example.com通常解析為 192.0.2.10 的 A 記錄。另外還有一個紀錄another.example.com解析為 A,值為 192.0.2.20。
然後你在本地某個地方(位置 B)綁定伺服器解析一些本地客戶端。您可以為特定用戶端(位置 B 上的本機 IP)建立本機視圖,您可以在其中建立網域server.example.com。
@ IN SOA dns.example.com. admin.example.com. (
2 ; serial
3H ; refresh
1H ; retry
1W ; expiry
1H) ; minimum
@ IN NS dns.example.com ; destination IP rewrite
@ IN A 192.0.2.30
一旦客戶端發送對 server.example.com 的請求,它將在本機解析為視圖中的本機「主」區域。一旦客戶端請求其他任何內容(除了 server.example.com 的子網域),它將根據其他配置進行定期解析或轉送...
所以在位置 A 的結果將是:
server.example.com => 192.0.2.10
another.example.com => 192.0.2.20
在位置 B 上,它將是:
server.example.com => 192.0.2.30
another.example.com => 192.0.2.20
透過這種方式,您可以僅覆寫明確的子網域清單。缺點是,由於它是額外區域,因此至少必須有 SOA 和最可能的 NS 記錄,因此在這種情況下不可能使用 CNAME。