Оглавление
- Executive summary
- Что DNSSEC делает на практике
- Подготовка до включения
- Пошаговое включение в популярных сценариях
- BIND
- Минимальная рабочая конфигурация для существующей primary-зоны выглядит так:
- PowerDNS Authoritative
- У PowerDNS самый короткий production-path такой:
- Если NSEC3 действительно нужен, задавайте его осознанно и консервативно:
- Для автоматизации через родительскую зону PowerDNS умеет публиковать CDS и CDNSKEY по RFC 7344:
- NSD
- Cloudflare
- AWS Route 53
- Минимальный CLI-flow такой:
- Сравнение поведения популярных DNS-платформ
- Регистрация DS у популярных регистраторов
- Проверка и отладка
- Ошибки, откат и emergency rollover
- Безопасный rollback выглядит так:
- Мониторинг, обслуживание и чек-лист
Executive summary
DNSSEC стоит включать не как “галочку безопасности”, а как управляемое изменение в цепочке доверия DNS. Практически все серьёзные инциденты при внедрении сводятся к одному и тому же: в родительской зоне остаётся старый или неверный DS, а дочерняя зона уже подписывается другим ключом, другим провайдером или вообще больше не подписывается. Для валидирующих резолверов это заканчивается SERVFAIL, хотя “обычные” невалидирующие проверки могут продолжать показывать, что домен якобы работает.
Безопасный порядок включения почти всегда такой: сначала подготовить и подписать зону у авторитативного DNS-провайдера, потом проверить DNSKEY/RRSIG/отрицательные ответы, и только после этого публиковать DS у регистратора или в родительской зоне. Безопасный порядок отката обратный: сначала удалить DS, дождаться истечения DS TTL, и только потом выключать подписание и удалять ключи. Именно этот порядок рекомендуют и вендорские инструкции, и эксплуатационные документы по DNSSEC.
Для 2026 года практический выбор такой. Если у вас BIND — используйте dnssec-policy, а не старый auto-dnssec, потому что ISC официально перевёл BIND на KASP-модель, а auto-dnssec убран из новых веток. Если у вас PowerDNS — базовый путь это pdnsutil zone secure + zone rectify + экспорт DS. Если у вас NSD — помните, что NSD обычно обслуживает предподписанную зону, а не делает inline-signing сам; signer придётся строить отдельно. Если у вас Cloudflare или Route 53 — платформа управляет подписями и ключевым материалом за вас, но DS в родителе всё равно остаётся критической точкой отказа.
Практическая рекомендация по криптографии тоже упростилась. Для большинства зон сегодня разумно использовать современные алгоритмы семейства ECDSA; Cloudflare прямо предпочитает алгоритм 13 (ECDSA P-256 + SHA-256), PowerDNS по умолчанию при zone secure тоже создаёт ECDSA/13 CSK, а Route 53 для цепочки доверия требует именно ECDSAP256SHA256 (тип 13) и SHA-256 digest (тип 2). Но сначала надо проверить, что реестр и интерфейс регистратора принимают выбранный алгоритм и формат DS.
Если вам не нужен отдельный сценарий против zone walking или compliance-требование, выбирайте NSEC, а не NSEC3. Современные рекомендации IETF говорят предпочитать NSEC, а если NSEC3 всё же нужен — ставить iterations=0 и не использовать salt. Cloudflare отдельно отмечает, что их современный механизм отрицательных ответов делает NSEC3 обычно ненужным; PowerDNS и BIND тоже позволяют работать с NSEC как с нормальным default-path.

Что DNSSEC делает на практике
Коротко: DNSSEC добавляет к DNS криптографическое подтверждение происхождения данных и целостности RRset’ов. Базовые документы DNSSEC — семейство RFC 4033/4034/4035, а более свежий BCP RFC 9364 описывает DNSSEC как текущую лучшую практику для origin authentication в DNS. RFC 4034 определяет ключевые RR-типы DNSKEY, DS, RRSIG и NSEC, а RFC 4035 — поведение протокола и место DS в родительской зоне на точке делегации.
Практически оператору нужны не “все RFC”, а понимание пяти вещей: где лежит публичный ключ дочерней зоны (DNSKEY), как родитель указывает на него (DS), чем подписаны ответы (RRSIG), как доказывается отсутствие имени или типа (NSEC/NSEC3), и какие TTL/тайминги влияют на кэширование в момент включения, rollover и отката. Именно на стыке DNSKEY ↔ DS ↔ TTL чаще всего и рождаются outage’ы.
Понятие Что это значит для администратора ZSK и KSK Классическая двухключевая схема: ZSK подписывает обычные RRset’ы зоны, KSK — как минимум DNSKEY RRset. Но современные реализации часто используют один общий signing key (CSK), если это проще в эксплуатации. DS Запись в родительской зоне, которая связывает child zone с её ключом. Неверный DS почти гарантированно ломает валидацию. RRSIG Подпись RRset’а. Валидатор проверяет её с помощью соответствующего DNSKEY. NSEC / NSEC3 Механизм доказательства несуществования имени или типа. NSEC3 не должен быть default-choice “по привычке”; современная рекомендация — предпочитать NSEC, а если нужен NSEC3, использовать iterations=0 и без salt. Алгоритмы В 2026 году в operational practice разумнее держаться современных алгоритмов, а интерфейс регистратора и реестр проверить заранее. Для Cloudflare и Route 53 критичен алгоритм 13. TTL Включение, rollover и откат упираются не только в подписи, но и в кэширование DS, DNSKEY, NS и отрицательных ответов. TTL определяет, сколько ждать до следующего шага.
Важно помнить и про статус ответа на стороне валидирующего резолвера. В BIND различаются как минимум категории Secure, Insecure, Bogus и Indeterminate; для клиента именно Bogus и Indeterminate обычно превращаются в SERVFAIL. Поэтому проверка только “авторитативный сервер отдаёт A/AAAA” недостаточна — надо проверять ещё и то, как ответ проходит через валидирующий recursive resolver.
Готовы перейти на современную серверную инфраструктуру?
В King Servers мы предлагаем серверы как на AMD EPYC, так и на Intel Xeon, с гибкими конфигурациями под любые задачи — от виртуализации и веб-хостинга до S3-хранилищ и кластеров хранения данных.
- S3-совместимое хранилище для резервных копий
- Панель управления, API, масштабируемость
- Поддержку 24/7 и помощь в выборе конфигурации
Результат регистрации
...
Создайте аккаунт
Быстрая регистрация для доступа к инфраструктуре
Подготовка до включения
Перед включением DNSSEC нужен не “мини-аудит”, а короткий предрелизный change review зоны. Надо проверить: нет ли устаревших glue/child delegation, сходятся ли serial/AXFR/IXFR на вторичных серверах, не зависит ли зона от провайдера, который при миграции меняет format/signing policy, умеет ли регистратор публиковать DS именно для вашего TLD и выбранного алгоритма, и есть ли у signer’а права на запись/обновление зоны. Для BIND это буквально условие работы dnssec-policy: зоне нужны dynamic DNS или inline-signing, а сам named должен иметь write access к зоне.
Если у вас PowerDNS, обязательно проверьте, как вы реплицируете зону и кто поднимает serial. PowerDNS прямо предупреждает, что при любых мутациях зоны для secondaries надо следить за serial, а после zone secure — вручную делать zone rectify. Если у вас NSD, планируйте signer отдельно: NSD удобен как быстрый authoritative daemon, но operationally DNSSEC там обычно означает “подписали вне NSD, проверили, загрузили, сделали reload”.
По совместимости регистратора и реестра нельзя полагаться на “наверное, поддерживает”. У Cloudflare прямо указано, что если интерфейс регистратора не умеет Algorithm 13, он может называться ECDSA Curve P-256 with SHA-256; PowerDNS отдельно предупреждает, что не все регистраторы поддерживают algorithm 13; Porkbun отмечает, что часть ccTLD-реестров принимает только keyData, а часть — только dsData; Dynadot требует сторонние nameserver’ы для внешнего DNSSEC и отдельно оговаривает, что их forwarding/parking/custom DNS не настроены для DNSSEC.
Если вы контролируете TTL в родительской зоне, понизьте DS TTL перед change window. AWS прямо рекомендует 300 секунд для более быстрого rollback, а в PowerDNS documentation и rollout-guides тайминги KSK/DS жёстко завязаны на TTL у DNSKEY и DS. Если контроля за TTL у регистратора нет — планируйте change window по худшему сценарию и не выключайте старый signer слишком рано.
flowchart TD A[Аудит зоны] --> B[Проверка secondaries и serial] B --> C[Проверка поддержки DNSSEC у TLD и регистратора] C --> D[Подготовка signer и ключей] D --> E[Подписание зоны и локальная проверка] E --> F[Проверка у валидирующего resolver] F --> G[Публикация DS у родителя] G --> H[Мониторинг SERVFAIL и DNSViz] H --> I[Подтверждение успешного включения]Что проверить перед включением Почему это критично Минимальная проверка Поддержка DS у регистратора/TLD Без неё доверенная цепочка не соберётся Открыть UI регистратора и убедиться, что есть поля KeyTag / Algorithm / DigestType / Digest или ключевой ввод DNSKEY/keyData. Совпадение модели signing с провайдером Cloudflare/Route 53 управляют signing сами; NSD — нет Зафиксировать, где именно живёт private key и кто пересчитывает подписи. Права на запись/обновление Без этого BIND/PDNS автоматизация даст неполный результат Проверить write access для BIND и post-step rectify для PDNS. Тайминги TTL Они определяют длительность rollout/rollback Снять текущие DS, DNSKEY, NS TTL заранее. План отката DNSSEC ломается “жёстко”, если ошибиться с порядком Заранее подготовить шаг “remove DS first”.

Пошаговое включение в популярных сценариях
BIND
Для BIND на 2026 год рекомендуемый путь — dnssec-policy, а не старый auto-dnssec: ISC прямо пишет, что dnssec-policy заменяет auto-dnssec, а auto-dnssec удалён из новых development-веток. В built-in policy default BIND сам создаёт signing key(s), включает автоматическое re-signing и key rollover; по умолчанию эта политика использует NSEC и для большинства зон подходит без кастомизации.
Минимальная рабочая конфигурация для существующей primary-зоны выглядит так:
zone "example.com" IN { type primary; file "db/example.com.db"; inline-signing yes; dnssec-policy default;};
rndc reconfig
Если зона успешно переведена на KASP, BIND начнёт сам генерировать DNSKEY, RRSIG и записи отрицательных ответов, а также обновлять подписи по мере истечения. Важно: dnssec-policy требует либо dynamic DNS, либо inline-signing, и процессу named нужен доступ на запись к зоне/рабочим файлам.
Если нужен кастомный policy — например, раздельные KSK/ZSK, меньший DNSKEY TTL или управляемый NSEC3 — BIND позволяет описать это явно:
dnssec-policy "custom-ecdsa" { dnskey-ttl 600; keys { ksk lifetime P1Y algorithm ecdsap384sha384; zsk lifetime 60d algorithm ecdsap384sha384; }; nsec3param iterations 0 optout no salt-length 0;};zone "example.com" IN { type primary; file "db/example.com.db"; inline-signing yes; dnssec-policy "custom-ecdsa";};
Такой пример есть в ARM BIND 9.20.x, но как operational default использовать NSEC3 не стоит без отдельной причины: и BIND example, и RFC 9276 сходятся на iterations 0 и salt-length 0, а сам RFC рекомендует по возможности выбирать NSEC.
Если вам нужен ручной режим — например, для offline KSK или аварийного восстановления — BIND по‑прежнему поддерживает классический workflow:
dnssec-keygen -a ECDSAP256SHA256 example.comdnssec-keygen -a ECDSAP256SHA256 -f KSK example.comdnssec-signzone -S -K keys example.com
dnssec-keygen создаёт .key и .private файлы, а dnssec-signzone -S включает smart signing и использует timing metadata ключей. Это уже не recommended day‑to‑day path для большинства зон, но для офлайн-процедур и emergency KSK rollover всё ещё актуально.

PowerDNS Authoritative
У PowerDNS самый короткий production-path такой:
pdnsutil zone secure example.compdnsutil zone rectify example.compdnsutil zone export-ds example.compdnsutil zone list-keys example.com
pdnsutil zone secure включает «разумные» DNSSEC-настройки, а после этого документация прямо требует сделать zone rectify. По умолчанию PowerDNS с версии 4 использует один ECDSA-ключ алгоритма 13 как CSK, а отрицательные ответы по умолчанию строит через NSEC; PowerDNS отдельно предупреждает, что algorithm 13 поддерживается не всеми регистраторами.

Если NSEC3 действительно нужен, задавайте его осознанно и консервативно:
pdnsutil zone set-nsec3 example.com '1 0 0 -'pdnsutil zone rectify example.com
У zone set-nsec3 параметры должны передаваться строкой: hash-algorithm flags iterations salt. Из современных best practices следует держать iterations=0; opt-out включайте только если вы точно понимаете, зачем он нужен. В narrow mode PowerDNS может отдавать “white lies”, но это уже advanced-case, а не default-настройка для обычной hosted-зоны.

Для автоматизации через родительскую зону PowerDNS умеет публиковать CDS и CDNSKEY по RFC 7344:
pdnsutil zone set-publish-cds example.compdnsutil zone set-publish-cdnskey example.com
Эти флаги полезны для автоматического bootstrap/rollover там, где реестр и регистратор реально ingest’ят CDS/CDNSKEY. Внутри самой платформы метаданные PUBLISH-CDS и PUBLISH-CDNSKEY документированы отдельно, а для KSK rollover у PowerDNS есть официальные пошаговые guide’ы как для manual DS switch, так и для RFC 7344 flow.
NSD
С NSD важно не пытаться натянуть чужую модель эксплуатации. NSD — это authoritative daemon с remote control (nsd-control) и проверкой zonefile через nsd-checkzone, но production-DNSSEC здесь обычно строится как предподписанная зона, которую NSD затем только раздаёт и reload’ит.
Практический минимальный workflow с внешним signer’ом выглядит так:
ldns-keygen -a ECDSAP256SHA256 example.comldns-keygen -k -a ECDSAP256SHA256 example.comldns-signzone -o example.com /etc/nsd/zones/example.com.zone \ Kexample.com.+013+12345 Kexample.com.+013+54321nsd-checkzone example.com /etc/nsd/zones/example.com.zone.signednsd-control reload example.com
ldns-keygen создаёт .key, .private и .ds; -k помечает ключ как KSK. Документация NLnet Labs по signing поясняет, что ldns_zone_sign добавляет NSEC и RRSIG и пишет подписанную зону; nsd-checkzone нужен перед подачей файла в daemon, а nsd-control reload
Если вы хотите полноценную автоматизацию, NSD обычно комбинируют с отдельным signer’ом вроде OpenDNSSEC или собственной CI/CD-подписью зоны. Преимущество подхода — жёсткий контроль над ключами и артефактами; недостаток — больше ручных этапов и выше требования к дисциплине rollout.

Cloudflare
Для Cloudflare основной путь — через dashboard: DNS > Settings > Enable DNSSEC, после чего Cloudflare подписывает зону, публикует публичный ключ и показывает параметры DS, которые нужно внести у регистратора. Для зон на Cloudflare Registrar и для некоторых TLD (.ch, .cz) Cloudflare умеет добавлять DS автоматически.
Ключевое предупреждение: если вы мигрируете авторитативный DNS на Cloudflare, DNSSEC у старого регистратора/провайдера нужно выключить до смены NS, иначе старый DS будет указывать на уже несуществующую или неверную цепочку, и домен уйдёт в ошибки валидации. Cloudflare это предупреждение повторяет и в DNS docs, и в registrar/transfer docs.
Если вам по compliance-причинам нужен NSEC3, у Cloudflare это отдельный сценарий. Документация говорит, что их современная реализация отрицательных ответов обычно снимает необходимость в NSEC3, а сам NSEC3 включается через API и доступен только на Enterprise:
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dnssec" \ --request PATCH \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "dnssec_use_nsec3": true, "status": "active" }'
После включения NSEC3 проверяйте отрицательные ответы через dig +dnssec nonexistent.example.com и смотрите NSEC3 в Authority Section.

AWS Route 53
В Route 53 DNSSEC состоит из двух частей: включение signing для hosted zone и публикация DS в родительской зоне. Для signing Route 53 создаёт KSK, но требует customer-managed KMS key в us-east-1 с типом ECC_NIST_P256; кроме того, в hosted zone может быть не более двух KSK.
Минимальный CLI-flow такой:
aws --region us-east-1 route53 create-key-signing-key \ --hosted-zone-id $HOSTEDZONE_ID \ --key-management-service-arn $KMS_KEY_ARN \ --name ksk_example_com \ --status ACTIVE \ --caller-reference $(date +%s)aws --region us-east-1 route53 enable-hosted-zone-dnssec \ --hosted-zone-id $HOSTEDZONE_IDaws --region us-east-1 route53 get-dnssec \ --hosted-zone-id $HOSTEDZONE_ID
После enable-hosted-zone-dnssec надо взять значения для DS из console (View information to create DS record) или через GetDNSSEC, и внести их у регистратора или в parent zone. AWS отдельно рекомендует для controllable parent zone выставлять DS TTL = 300 ради быстрого rollback. Для Route 53 registrar указывается алгоритм ECDSAP256SHA256 (type 13) и digest SHA-256 (type 2).
Сравнение поведения популярных DNS-платформ
Платформа Кто управляет signing и ключами Что делается автоматически Что нужно руками BIND 9.20+ Вы; KASP через dnssec-policy или manual/offline mode Re-signing, rollover, публикация ключей внутри зоны; возможно отслеживание DS через parental-agents/checkds Добавить DS у родителя; обеспечить inline-signing/dynamic DNS и write access. PowerDNS Вы; ключи в backend/БД zone secure, live signing, CDS/CDNSKEY публикация, key rotation workflows После zone secure сделать zone rectify; внести DS; следить за serial/secondaries. NSD Вы; внешний signer Только раздача уже подписанной зоны, reload/reconfig Генерировать ключи и подписи отдельно; проверять signed file перед загрузкой. Cloudflare Cloudflare Подписи, ключи, DS-параметры; в части случаев — автопубликация DS Не забыть убрать старый DNSSEC при миграции; добавить DS у регистратора, если он не управляется автоматически. AWS Route 53 Route 53 + ваш KMS key Signing и KSK lifecycle в hosted zone Подготовить KMS key, создать KSK, включить DNSSEC и добавить DS у родителя.
Регистрация DS у популярных регистраторов
Регистратор Как обычно делается DS Практическая особенность GoDaddy Для доменов на GoDaddy nameservers DNSSEC включается в UI и управляется GoDaddy; для внешних NS — вручную через DS Records При внешнем DNS нужен manual DS; для внутренних NS GoDaddy управляет DNSSEC сам. Namecheap В Advanced DNS: сначала включить DNSSEC toggle, потом заполнить KeyTag / Algorithm / DigestType / Digest UI требует именно четыре DS-поля. Porkbun В Registry DNSSEC добавить запись вручную Некоторые ccTLD могут ожидать keyData, а не dsData; Porkbun прямо предупреждает об этом. Dynadot После назначения third-party nameservers — страница DNSSEC в карточке домена Dynadot отдельно предупреждает, что их forwarding/parking/custom DNS/email DNS не настроены для DNSSEC. Gandi Для LiveDNS процесс автоматизирован в разделе домена Не менять nameservers до завершения propagation, иначе домен может стать недоступен. Squarespace Domains Для Squarespace-managed domains DNSSEC включается автоматически там, где TLD поддерживает DNSSEC Это удобно, но только если домен действительно управляется через Squarespace. Cloudflare Registrar One-click DNSSEC в dashboard Для доменов у самого Cloudflare manual DS обычно не нужен.

Проверка и отладка
Проверять DNSSEC нужно в двух точках: у авторитативного сервера и у валидирующего recursive resolver. На авторитативной стороне вы подтверждаете, что зона реально публикует DNSKEY, RRSIG и корректные отрицательные ответы. На recursive-стороне вы убеждаетесь, что цепочка root → TLD → parent DS → child DNSKEY проходит валидацию. Без второй части вы легко пропустите broken DS.
Команда Что она проверяет Что вы хотите увидеть dig example.com SOA +dnssec Запрос RRSIG/DNSSEC-данных (DO-bit) В ответе есть RRSIG; если запрос идёт через валидирующий recursive resolver — возможен ad flag. dig DS example.com +trace Есть ли DS у родителя и кто его отдаёт DS приходит от TLD/parent NS, а не “из вашей зоны”. dig A example.com @1.1.1.1 +dnssec +cd Сравнение ответа с отключённой проверкой Если без +cd — SERVFAIL, а с +cd — ответ приходит, проблема почти наверняка в DNSSEC. delv example.com SOA +multi Полноценная валидация с кодом BIND validator ; fully validated. delv example.com SOA +multi +vtrace Полная трассировка цепочки доверия Видны этапы проверки ./DNSKEY, TLD DS, child DNSKEY, затем RRset.
Типичный “здоровый” recursive-ответ выглядит так:
$ dig example.com SOA +dnssec;; ->>HEADER<<- 2 13 3600 opcode: query, status: noerror;; flags: qr rd ra ad;...example.com. in soa ...example.com. rrsig ...< p>
Здесь критичны две вещи: RRSIG вообще присутствует, а ad flag означает, что валидирующий resolver принял ответ как аутентичный. Документация BIND отдельно поясняет, что отсутствие ad при наличии DNSSEC-данных означает: данные пришли, но валидатор не поручился за их подлинность.
Для глубокой отладки удобнее delv, потому что он использует тот же validation code path, что и BIND itself. В +rtrace вы видите дополнительные fetch’и (DNSKEY, DS, root/TLD), а в +vtrace — буквально всю логику принятия решения по trust chain. Это обычно полезнее, чем просто читать сырой dig-вывод с кучей RRSIG.
Из онлайн-валидаторов в production-практике наиболее полезны три: DNSViz для визуального графа trust chain и объяснения ошибок, Verisign DNSSEC Debugger для быстрой диагностики broken chain, и Internet.nl для внешней проверки домена на набор современных интернет-стандартов, включая DNSSEC. Для статьи на блог это хороший список “проверить после rollout”: цитаты ведут прямо на сервисы.
Если вам нужен CLI поверх внешнего анализа, DNSViz также документирует свой набор subcommands (probe, grok, graph, print, query). Отдельный пакет dnssec-tools как suite по‑прежнему существует в пакетных репозиториях, но для современной эксплуатационной проверки чаще удобнее опираться на dig, delv, DNSViz и нативные инструменты конкретного authoritative DNS.
->
Ошибки, откат и emergency rollover
Самая частая ошибка — “переключили NS/провайдера, а старый DS у родителя не убрали”. Cloudflare прямо показывает такой кейс: без +cd валидирующий resolver отвечает SERVFAIL, а с +cd тот же домен начинает резолвиться, потому что валидация обходится. Это textbook‑симптом broken DNSSEC, и именно с него надо начинать triage.
Вторая частая ошибка — слепое включение NSEC3 “потому что так безопаснее”. Для 2026 года это уже плохой default. RFC 9276 рекомендует NSEC как предпочтительный вариант, а если NSEC3 всё же нужен — iterations=0; ISC отдельно предупреждает, что повышенные NSEC3 iterations не дают реальной пользы и могут привести к интероперабельностным проблемам.
Третья типовая проблема — неверная оценка кэширования при отключении. Cloudflare рекомендует после удаления DS ждать как минимум 1.5 × DS TTL перед удалением оставшихся DNSKEY, а AWS — сначала убрать DS, подтвердить его disappearance у родителя, дождаться DS TTL, и только затем выключать signing и деактивировать KSK. Это правильнее любого “выключу всё сразу, потом разберёмся”.
Ошибка Как выглядит Что делать Старый DS остался у родителя SERVFAIL у валидирующих резолверов; +cd даёт ответ Удалить DS, дождаться DS TTL, затем уже менять signer или отключать DNSSEC. Регистратор не принимает algorithm 13 Невозможно сохранить DS в UI Либо выбрать совместимый стек/регистратора, либо перейти на registrar, который принимает алгоритм 13. BIND не может вести зону Ключи/подписи не появляются, KASP “молчит” Проверить inline-signing или dynamic DNS и права на запись. PDNS signed, но secondaries отстают На мастере ключи новые, на слейвах — старые Убедиться в bump serial/перетрансфере и сделать rectify; проверить AXFR/IXFR. NSD раздаёт неподписанный файл На авторитативном NS нет RRSIG/DNSKEY Проверить pipeline подписи, nsd-checkzone и nsd-control reload.

Безопасный rollback выглядит так:
flowchart TD A[Обнаружили broken DNSSEC] --> B[Проверка dig +cd и DS +trace] B --> C[Удалить DS у родителя] C --> D[Подтвердить удаление DS] D --> E[Подождать DS TTL] E --> F[Отключить signing у провайдера] F --> G[Деактивировать и затем удалить старые ключи] G --> H[Проверить, что валидирующие resolver больше не видят bogus]Для BIND откат из подписанного состояния back to unsigned делается через built-in policy insecure, а не грубым удалением всех ключей “за один раз”:
zone "example.com" IN { type primary; file "db/example.com.db"; dnssec-policy "insecure";};
rndc reload example.com
BIND documentation подчёркивает, что insecure обеспечивает graceful transition и автоматически публикует CDS/CDNSKEY DELETE в нужный момент. Но использовать это можно после удаления DS у родителя, а не вместо него.
Для planned или emergency KSK rollover держитесь double-signature схемы. В PowerDNS это официальный workflow: добавить новый активный и опубликованный KSK, дождаться DNSKEY TTL, переключить DS у родителя, дождаться истечения старого DS TTL, затем удалить старый KSK. Для RFC 7344-capable parent можно автоматизировать фазу DS через CDS/CDNSKEY, но только если вы точно знаете, что ваш parent это поддерживает и реально обрабатывает.

Мониторинг, обслуживание и чек-лист
DNSSEC нельзя считать “включённым и забытым”. Нужно мониторить как минимум четыре сущности: присутствие и корректность DS у родителя, набор опубликованных DNSKEY/RRSIG в child zone, ошибки валидации у внешних recursive resolvers и внутреннее состояние signer’а. Для AWS Route 53 есть отдельный статус в GetDNSSEC, включая INTERNAL_FAILURE, который часто указывает на проблемы с KMS key или его permissions. Для BIND и PowerDNS критичны события вокруг re-signing, key state transitions и репликации на secondaries.
Практика ротации ключей зависит от платформы. BIND KASP умеет lifetime и refresh policy внутри dnssec-policy; PowerDNS поддерживает как ручной KSK rollover, так и сценарии RFC 7344 для CDS/CDNSKEY; Route 53 допускает до двух KSK на зону, что даёт безопасную модель planned rollover. Это означает, что автоматизация ключей уместна, но только вместе с контролем parent-side DS, а не в отрыве от него.
Если вы хотите автоматизировать parent update, учитывайте современный стек RFC’ов: RFC 7344 — публикация CDS/CDNSKEY, RFC 8078 — обработка и безопасное применение этих записей, а у PowerDNS есть ещё support-путь для authenticated bootstrapping/signal zone (RFC 9615). Но operationally правило остаётся простым: автоматизируйте только там, где registry/registrar это действительно поддерживает, а не “должен бы поддерживать”.
По логам и алертам полезно иметь не только системные сообщения signer’а, но и внешние synthetic checks. Практически это означает: отдельный probe с dig +dnssec, отдельный probe с delv, периодический DS +trace, и внешний DNSViz/Internet.nl чек после каждого change. Это уже не просто удобство: так вы быстрее ловите ситуации, где authoritative side выглядит здоровой, а валидирующие резолверы видят bogus.