web-dev-qa-db-ja.com

nsupdateで多くのTXTレコードの1つを更新する方法

DNSに3つの異なるTXTレコード(1 SPF、1つのキーベース証明、DMARCエントリ)のドメインエントリがあります。

メールサーバーを新しいホストに移動しようとしているため、SPFレコードを更新する必要がありますが、SPFレコードのみを削除してnsupdateで置き換える方法を考え出すのに苦労しています。

現時点で私が思いつく最良のオプションは、更新されたSPFレコードを追加する前に、nsupdateをスクリプト化して3つすべてを削除し、2つの変更されていないものを再度追加することです。

1つのレコードを削除する方法はありますか?

2
hardillb

レコードの名前とタイプを指定するだけでなく、既存の値も指定する場合、ネームサーバーはその値のレコードのみを削除し、同じタイプの他のレコードは変更しないでおく必要があります。

man nsupdate

update delete domain-name [ ttl ] [ class ] [ type [ data...] ]
domain-nameという名前のリソースレコードをすべて削除します。タイプとデータが指定されている場合、一致するリソースレコードのみが削除されます。クラスが指定されていない場合は、インターネットクラスが想定されます。 ttlは無視され、互換性のためにのみ許可されます。

update add domain-name ttl [ class ] type data...
指定されたttl、クラス、およびデータで新しいリソースレコードを追加します。

つまり.

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

allTXTレコードを削除する必要がありますが、代わりにより具体的:

# 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はonlySPF TXTレコードを削除します。次に、たとえば別のIPv4アドレスを持つレコードに置き換えることができます。

または、計画された移行の少し前に新しいIPアドレスを追加し、2つの許可されたアップアドレスでしばらく実行して、移行が完了した後にのみ古いIPアドレスを削除することができます。

2
HBruijn