Bind9 IP更新

Bind9 IP更新

我有 2 個 DNS 伺服器 (BIND9)(主要、輔助)和 1 個網域。我有一個帶有動態IP的網路伺服器。因此,如果我的 IP 發生變化,我將無法透過網域存取我的站點,因為在 DNS 伺服器中,網域區域 IP 座發生了變化。

我的問題是:如何每次 x 次使用我的公用 IP 位址從我的伺服器更新我的區域?有人能給我一個 Linux (Debian 9) 上的更新腳本嗎?

謝謝

答案1

nsupdate您可以透過編寫工具腳本或使用相容的第三方用戶端來使用 RFC 2136“DNS UPDATE” :

共享金鑰 (TSIG)

  1. 產生用於驗證更新的金鑰:

    $ tsig-keygen -r /dev/urandom | tee tsig-key.private
    key "tsig-key" {
        algorithm hmac-sha256;
        secret "7P6HbRZRJCmtauo/lV0jwN9wkMgBTUikhf9JuaTvYT4=";
    };
    

    伺服器和客戶端都知道該金鑰,其他人都不知道。

  2. 將列印的文字複製到您的named.conf. (您可以為不同的主機擁有多個金鑰,每個金鑰在欄位中都有唯一的名稱key "…"。)

  3. 在區域配置中啟用動態更新:

    zone … {
        update-policy {
            /* grant <key_name> <policy> <record_types> */
            grant "tsig-key" name myserver.example.com ANY;
        };
    };
    

    可以使用各種不同的策略;例如zonesub允許更新全部的區,並且subdomain dyn.example.com具有明顯的意義。

  4. 執行更新:

    $ nsupdate -k tsig-key.private
    > zone example.com
    > del myserver.example.com
    > add myserver.example.com 3600 A 100.64.1.1
    > send
    

有多種客戶端能夠自動更新。

公鑰/私鑰 (SIG(0))

  1. 產生密鑰對:

    $ dnssec-keygen -r /dev/urandom -T KEY -n USER myclient.example.com
    $ ls K*
    Kmyclient.example.com.+005+07399.key
    Kmyclient.example.com.+005+07399.private
    
  2. *.key檔案包含公鑰 - 將其新增至您的 DNS 區域。

    *.private文件包含私鑰 - 將其複製到客戶端電腦。 (實際上,複製兩個都文件到客戶端計算機。

  3. 設定update-policy { }方式與 TSIG 完全相同。

  4. 使用 也以相同的方式執行更新nsupdate -k <filename>.private

(注意:雖然 TSIG 金鑰名稱是任意的,但 SIG(0) 金鑰儲存在 DNS 中,因此始終以主機名稱/子網域的形式命名。金鑰名稱才不是不過,需要符合您正在更新的主機名稱。

Kerberos (GSS-TSIG)

有點超出範圍,但 BIND9 也支援這一點(主要用於 Active Directory)。

相關內容