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

Как перенести конфигурацию BIND в политику dnssec из режима автоматического обслуживания dnssec без сбоев?

BIND 9.16 представил новый dnssec-policy функция как еще одно более автоматизированное средство управления ключами DNSSEC и подписи в течение давно установленного auto-dnssec maintain функциональность.

Документация, похоже, не охватывает переход от старого к новому, но соответствующая вики-страница похоже, указывает на то, что уже существующие ключи будут подобраны dnssec-policy.

Тем не менее, создание новой зоны с dnssec-policy достаточно просто, но перенос существующей зоны из auto-dnssec maintain к dnssec-policy похоже, не работает, как можно было бы ожидать.
Я ожидал, что политика, совместимая с существующими ключами, продолжит использовать эти ключи.

Похоже, что все существующие ключи немедленно удаляются из зоны, потому что они «просрочены» и заменяются новыми ключами, даже если новая политика требует совместимого набора ключей (тот же алгоритм и размер), а существующие ключи имеют не определены свойства конца срока службы (только Created, Publish и Activate тайминги в файлах .key).

Политика, которую я использовал при тестировании, выглядит так (названа так, чтобы отразить, что к чему во время тестирования):

dnssec-policy alg13-ksk-unlimited-zsk-60day {
     keys {
         ksk key-directory lifetime unlimited algorithm ECDSAP256SHA256;
         zsk key-directory lifetime P60D algorithm ECDSAP256SHA256;
     };
};

Это вывод журнала при изменении конфигурации с auto-dnssec maintain; к dnssec-policy alg13-ksk-unlimited-zsk-60day;:

zone zone.example/IN (signed): reconfiguring zone keys
keymgr: DNSKEY zone.example/ECDSAP256SHA256/49004 (KSK) created for policy alg13-ksk-unlimited-zsk-60day
keymgr: DNSKEY zone.example/ECDSAP256SHA256/54646 (ZSK) created for policy alg13-ksk-unlimited-zsk-60day
Removing expired key 20481/ECDSAP256SHA256 from DNSKEY RRset.
DNSKEY zone.example/ECDSAP256SHA256/20481 (ZSK) is now deleted
Removing expired key 12506/ECDSAP256SHA256 from DNSKEY RRset.
DNSKEY zone.example/ECDSAP256SHA256/12506 (KSK) is now deleted
Fetching zone.example/ECDSAP256SHA256/49004 (KSK) from key repository.
DNSKEY zone.example/ECDSAP256SHA256/49004 (KSK) is now published
DNSKEY zone.example/ECDSAP256SHA256/49004 (KSK) is now active
Fetching zone.example/ECDSAP256SHA256/54646 (ZSK) from key repository.
DNSKEY zone.example/ECDSAP256SHA256/54646 (ZSK) is now published
DNSKEY zone.example/ECDSAP256SHA256/54646 (ZSK) is now active
zone zone.example/IN (signed): next key event: 22-Mar-2020 15:08:19.805

Как видно, существующие ключи были немедленно удалены (даже после обычной процедуры одновременного нажатия клавиш!) И заменены новыми ключами того же типа.
Учитывая, что простая мгновенная замена ключей вместо выполнения намеченной процедуры опрокидывания ломает все, очевидно, что простое переключение конфигурации на dnssec-policy это непроходимо.

Глядя на ключевые файлы, отмечу, что дополнительный .state файл добавляется рядом со старым и новым ключами.
Я не знаю, нужен ли этот файл для правильного dnssec-policy операция как-нибудь? Может ли создание этих файлов заранее избежать такого поведения?

По сути, вопрос заключается в следующем: есть ли способ перейти на использование dnssec-policy без нарушения работы? Если да, то как?

Поведение, описанное в вопросе, было ошибкой, которая должна быть устранена в версии BIND 9.16.2.

Из Примечания к выпуску BIND 9.16.2:

Исправление ошибок

[вырезать]

  • При попытке перенести уже подписанную зону из режима auto-dnssec в зону, основанную на политике dnssec, существующие ключи немедленно удалялись и заменялись новыми. Поскольку ограничения по времени смены ключей не соблюдались, было возможно, что некоторые клиенты не смогли бы проверить ответы, пока вся старая информация DNSSEC не истекла из кешей. BIND теперь просматривает метаданные времени существующих ключей и включает их в свою операцию политики DNSSEC. [GL # 1706]