Сети и протоколы
DNS: проведите подписанную зону через миграцию и rollover
Читать про KSK rollover и миграцию TTL — не то же самое, что провести их, не уронив зону. Поднимите собственную подписанную зону за реальным рекурсивным резолвером, инструментируйте весь путь резолва, затем проведите её через два изменения, которые чаще всего поднимают on-call, — миграцию IP и DNSSEC rollover — с dig-доказательствами на каждом шаге.
Превратите модель юнита в воспроизводимый операционный цикл: постройте обход резолвера end-to-end, провалидируйте DNSSEC, зашифруйте транспорт, мигрируйте запись без сюрпризов окна устаревания и восстановите намеренно порванную цепочку — доказывая каждый исход через dig, а не утверждением.
Запустите небольшую DNSSEC-подписанную зону (lab.example или любой подконтрольный домен, либо полностью локальный root с инструментом вроде dnslib/CoreDNS) за собственным рекурсивным резолвером, инструментируйте путь резолва, затем выполните zero-downtime миграцию IP и KSK rollover — ломая и восстанавливая цепочку — с dig-доказательством каждого утверждения.
- Снятый +trace с пометками, какие хопы — referral'ы, а какой — авторитативный ответ, и заметкой о том, требовался ли glue (in-bailiwick) или нет (out-of-bailiwick) для ваших nameserver'ов.
- Вывод dig +dnssec до поломки с выставленным AD и парой в состоянии поломки (SERVFAIL под +dnssec, NOERROR + корректная A под +cd) с однострочным диагнозом, называющим несовпадение DS-vs-KSK.
- Таймированный лог миграции: результаты dig с интервалами, доказывающие, что новый IP появляется не позже пониженного TTL после изменения, со слитым заранее старым TTL.
- Захват пакетов или лог резолвера, показывающий запрос по DoH/DoT (зашифрованный) и не по plain UDP/53, плюс абзац о том, что DNSSEC добавляет сверх шифрования и наоборот.
- Добавьте доказательство negative caching: запросите несуществующий поддомен дважды и покажите второй NXDOMAIN из кеша (без upstream-запроса) на min(SOA.MINIMUM, SOA.TTL); затем покажите кратковременный кеш SERVFAIL при наведённом сбое upstream.
- Переключите NSEC на NSEC3 и продемонстрируйте, что перечисление зоны (например, инструментом zone-walking) удаётся под NSEC и проваливается под NSEC3.
- Добавьте EDNS Client Subnet в upstream-запросы и покажите через geo-aware тестовый авторитативный, что возвращаемый edge IP меняется с объявленной подсетью — затем опишите цену приватности и почему Cloudflare отключает ECS по умолчанию.
- Напишите одностраничный runbook KSK-rollover: окно перекрытия двойной подписи (публикация нового KSK рядом со старым на 2x макс-TTL), шаг обновления DS, ожидание, вывод из эксплуатации и автоматический мониторинг консистентности DS-vs-DNSKEY, чтобы поломка из этого проекта никогда не попала в продакшен.
Это цикл, который вы запустите для любого реального DNS-изменения: постройте путь резолва, чтобы видеть referral’ы и glue; подпишите и провалидируйте, чтобы бит AD что-то значил; зашифруйте транспорт, не путая его с целостностью; мигрируйте, слив сначала старый TTL, чтобы окно устаревания было ограничено; и отрепетируйте сбой KSK-rollover (+dnssec SERVFAIL, +cd успех, несовпадение DS-vs-KSK), чтобы восстановление стало мышечной памятью. Сделав это раз на lab-зоне, вы превращаете продакшен-версию — где на кону 30-40% пользователей — из открытия в 3 часа ночи в рутину.