我想為每個請求傳回一個唯一的 CNAME,並將該 CNAME 的 IP 位址新增至區域檔案。是否可以?
答案1
你的問題缺乏細節。為什麼要這樣做(為什麼特別是 CNAME?),誰執行查詢,為什麼需要將結果放入區域文件中,等等。
所以下面只是一些模糊的想法。
如果您的問題是關於動態產生記錄,是的,您可以使用綁定以及其他名稱伺服器來完成,讓您使用某種程式語言選擇「動態」後端。
看:
- Bind 可以服務“動態區域”,但這主要與資料庫相關,請參閱http://bind-dlz.sourceforge.net/和動態可載入區域 |網路系統聯盟;但你也可以發展自己的後端
- 強力域名解析:Lua 後端 | PowerDNS 權威伺服器文檔 這個後端只是 PowerDNS 和您自己的 Lua 應用程式之間的「黏合劑」。;因此,如果您編寫 Lua 應用程序,您可以自由地為每個查詢提供您想要的任何記錄。
- Yadifa 和 NSD 似乎沒有能力做到這一點(但有各種補丁並嘗試將它們插入 SQL 資料庫)
當然,您也可以根據您的需要,使用您選擇的任何程式語言來建立一個小型簡單的權威名稱伺服器,該語言具有良好的 DNS 抽象程式庫來處理 DNS 協定的所有細節(而且有很多細節)。
另一種廉價的方法是:使用通配符。但要小心。然而,從本質上講,通配符讓您只需一行即可立即在區域文件中擁有所需的所有 CNAME。但這完全取決於誰查詢您的網域伺服器。
請記住,您的權威名稱伺服器將遞歸名稱伺服器作為客戶端,而不是最終客戶端,因此它只會看到客戶端使用的最後一個遞歸名稱伺服器的 IP 位址,而不是客戶端 IP。您可以使用 EDNS 客戶端子網選項,如果遞歸解析器支持,該選項將為您提供客戶端 IP 位址子網路的指示,但出於隱私原因,絕不會提供完整位址。
最後,讓我們來看看傑夫休斯頓的各種作品。他是 APNIC 的 DNS 研究員,做了很多研究。為了進行這些活動,他經常購買廣告,為每個客戶提供解析特定名稱的唯一連結。請參閱以下範例:統計 DNS 中的 IPv6 | ISP 專欄 它可能會給你一些新鮮的想法。
(請參閱我對您的相關問題的詳細回答:如何將 DNS 請求與託管該網域的 Web 伺服器的請求關聯起來? |伺服器故障)