Назад | Перейти на главную страницу

Как обновить одну из многих записей TXT с помощью nsupdate

У меня есть запись домена в моем DNS с 3 разными записями TXT (1 SPF, 1 Keybase proof и запись DMARC).

Я собираюсь переместить свой почтовый сервер на новый хост, поэтому мне нужно обновить запись SPF, но я изо всех сил пытаюсь понять, как удалить и заменить только запись SPF на nsupdate.

На данный момент лучший вариант, который я могу придумать, - это запустить сценарий nsupdate, чтобы удалить все 3 и добавить 2 неизмененных перед добавлением обновленной записи SPF.

Есть ли способ просто удалить 1 запись?

Когда вы указываете не только имя и тип записи, но и существующее значение, сервер имен должен только удалить запись с этим значением и оставить другие записи того же типа без изменений.

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

Следует удалить все 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-адрес за некоторое время до запланированной миграции, запустить с двумя разрешенными up-адресами в течение некоторого времени и удалить старый только после завершения миграции.