如何根據源子網解析不同的 DNS 條目?
我在多個站點中有一個新的內部網站,我希望根據使用的源子網將 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 解析為伺服器。 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
或者試圖為此使用錯誤的方法,我在研究中也看到了綁定視圖,但是看起來你必須為每個站點重新創建整個區域文件,我只想修改一個 CNAME 記錄.
任何幫助表示讚賞。
- 位置 B 的專用伺服器
在這種情況下,您可以輕鬆使用 RPZ。該解決方案甚至可以在非標準埠上執行此 DNS 伺服器(因此除 53 TCP/UDP 之外)並在防火牆級別設置埠重定向,因此一旦請求來自特定網路,它就會被重定向到此埠。所有其他請求將由標準埠上的 DNS 伺服器處理(因為“全域”RPZ 是問題,我想其他流量也需要 DNS 伺服器)。
- “共享” DNS 伺服器不僅適用於位置 B
The Views 最有可能是您的正確方向。如果您不需要明確的 CNAME 但它甚至可以是 A 記錄,您可以輕鬆地在視圖中定義“特定子域”,其餘的保持“正常”解析/轉發到其他 DNS 伺服器”。
因此,假設您在位置 A 的 DNS 伺服器上有域example.com。存在server.example.com通常解析為 192.0.2.10 的 A 記錄。還有另一條記錄another.example.com解析為值為 192.0.2.20 的 A。
然後,您在本地(位置 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。