Bind

如何使用 nsupdate 更新許多 TXT 記錄之一

  • August 6, 2019

我的 DNS 中有一個域條目,其中包含 3 個不同的 TXT 記錄(1 個 SPF、1 個 Keybase 證明和一個 DMARC 條目)。

我即將將我的郵件伺服器移動到新主機,因此需要更新 SPF 記錄,但我正在努力研究如何使用 nsupdate 刪除和替換 SPF 記錄。

目前,我能想到的最佳選擇是編寫腳本 nsupdate 以刪除所有 3 個並在添加更新的 SPF 記錄之前將 2 個未更改的添加回來。

有沒有辦法只刪除 1 記錄?

當您不僅指定記錄名稱和類型,還指定現有值時,名稱伺服器應該只刪除具有該值的記錄,而保持相同類型的其他記錄不變。

man nsupdate

update delete domain-name [ ttl ] [ class ] [ type [ data...] ]

刪除任何名為 domain-name 的資源記錄。如果提供了類型和數據,則只會刪除匹配的資源記錄。如果未提供類,則假定 Internet 類。ttl 被忽略,僅出於兼容性考慮。

update add domain-name ttl [ class ] type data...

添加具有指定 ttl、類和數據的新資源記錄。

是的

# nsupdate
> update delete example.com 86400 TXT
> send

應該刪除所有TXT 記錄,但是當您更具體時:

# nsupdate
> update delete example.com 86400 TXT “v=spf1 a mx ip4:10.0.0.131”
> update add example.com 86400 TXT “v=spf1 a mx ip4:192.168.0.17”
> send

那麼 nsupdate 應該刪除SPF TXT 記錄,然後您可以將其替換為例如具有不同 IPv4 地址的記錄。

或者,您可以在計劃遷移之前的某個時間添加新的 IP 地址,使用兩個允許的上行地址執行一段時間,然後僅在遷移完成後刪除舊的 IP 地址。

引用自:https://serverfault.com/questions/978072