![在 MySQL 資料庫之外增加額外區域](https://rvso.com/image/623631/%E5%9C%A8%20MySQL%20%E8%B3%87%E6%96%99%E5%BA%AB%E4%B9%8B%E5%A4%96%E5%A2%9E%E5%8A%A0%E9%A1%8D%E5%A4%96%E5%8D%80%E5%9F%9F.png)
我的 DNS 伺服器需要 MySQL 後端,因此我決定從 Bind 切換到 PowerDNS,後者的 MySQL 後端稍微方便一點。
基本上:使用者使用 Web 前端將網域新增到我的資料庫中,這些網域已註冊並可供 PowerDNS 使用。當我向 DNS 伺服器查詢這些網域時,我得到了有效的回應。奇蹟般有效。
事實是,我需要將我的網域和區域添加到我的 DNS 註冊表中,並將它們添加到資料庫中會破壞我的應用程式的邏輯(只有該應用程式的使用者才應該添加網域)。我想為 PowerDNS 添加額外的網域和區域,而不是直接將它們添加到我的資料庫中。
有什麼方法可以註冊額外的網域,例如在檔案中,在進行任何 MySQL 查詢之前會讀取該網域?或者也許是一個後備文件,以防在我的 MySQL 記錄中找不到任何內容?
答案1
找到解決方案,在PowerDNS 啟動板的深度!在使用 MySQL 後端之前有一種方法可以讀取 DNS 資料文件,那就是...使用兩個後端!引用:
如中所述http://doc.powerdns.com/modules.html- 只是不需要那麼多字;) - PowerDNS 可以透過啟動聲明啟動任意數量的不同或烤箱相同的後端。通常,人們只需在設定檔 pdns.conf 中而不是在命令列中執行此操作。這些後端將按照啟動聲明中給出的順序耗盡您的 DNS 查詢的答案。這確實意味著,如果佇列中的第一個後端可以回答問題,那麼它就會回答問題,如果只有第四個後端可以回答問題,則前三個後端的循環將會延遲,直到PowerDNS 發出答案。因此,您必須確保您的後端確實回答夠快如果接收和應答速度夠快,<1 秒內應該足以與大多數遞歸名稱伺服器相容,但當然越快越好。
對於我的問題,我選擇使用:
- 綁定後端,用作優先的基於文件的後端。
- MySQL 後端排名第二。
基本上,所需要的只是在以下方面進行一些配置更改pdns.local
:
launch=bind,gmysql
我聽說你可以更具體(為後端分配名稱):
launch=bind:first,gmysql:second
然後,只需為兩個後端添加參數:
# Bind backend configuration
bind-config=/path/to/your/zones/file
# MySQL configuration
gmysql-host=localhost
gmysql-port=
gmysql-dbname=db
gmysql-user=user
gmysql-password=passwd
gmysql-dnssec=no
您所要做的就是建立一個引用zone{}
特定於網域的檔案(包含 SOA、A、MX、NS...記錄)的綁定區域檔案(區塊)。
重新開始 !