Почему Technitium не валидирует DNSSEC для ya.ru: разбор проблемы

    Вы запустили Technitium DNS Server в LXC-контейнере на Proxmox, отключили systemd-resolved и включили DNSSEC Validation. При тестировании утилитой dig вы заметили неожиданное поведение: для cloudflare.com отображается флаг ad (Authentic Data) и запись RRSIG, а для ya.ru флаг отсутствует, хотя IP-адрес возвращается. Разберёмся, почему так происходит и как Technitium обрабатывает неподписанные зоны.

    Как работает DNSSEC в рекурсивном резолвере Technitium

    Technitium по умолчанию является рекурсивным резолвером. Когда вы не настроили DNS Forwarders, сервер самостоятельно выполняет рекурсивный обход от корневых DNS-серверов до авторитетных. При включённой опции Enable DNSSEC Validation Technitium проверяет цепочку доверия DNSSEC для каждого домена. Если домен подписан (например, cloudflare.com), резолвер проходит всю цепочку от корневой зоны до домена, проверяя RRSIG-записи, и в случае успеха устанавливает флаг ad в ответе.

    Почему ya.ru не получает флаг ad при включённом DNSSEC

    Чтобы понять причину, нужно проверить, действительно ли ya.ru поддерживает DNSSEC. На момент написания ответа ya.ru не имеет корректной подписи DNSSEC. Зона может быть не подписана, либо подпись невалидна. Technitium, столкнувшись с отсутствием RRSIG-записей в ответе авторитетного сервера, не может построить цепочку доверия. В результате DNSSEC-валидация не проходит - флаг ad не проставляется. Однако сервер всё равно возвращает IP-адрес, потому что для неподписанных зон рекурсивный резолвер не блокирует ответ, а просто помечает его как невалидированный.

    Почему Technitium не отбрасывает записи для неподписанных доменов

    Это стандартное поведение всех рекурсивных DNS-серверов с поддержкой DNSSEC. Согласно RFC 4033 и RFC 4035, резолвер должен различать два случая:

    • Подписанная зона с невалидной подписью - сервер обязан вернуть ошибку SERVFAIL и не возвращать IP-адрес.
    • Неподписанная зона (отсутствие DNSSEC) - сервер не может проверить подпись, поэтому возвращает данные без флага ad, но с флагом ra (Recursion Available). Это не считается ошибкой, так как отсутствие подписи не означает, что данные неверны.

    Technitium следует этому правилу. Если бы зона была подписана, но подпись не прошла проверку (например, из-за подмены), сервер бы вернул SERVFAIL. В случае ya.ru - зона просто не подписана, поэтому IP возвращается, а DNSSEC-статус не подтверждён.

    Как проверить, подписан ли домен и корректно ли работает DNSSEC

    Для диагностики используйте dig с дополнительными опциями:

    dig ya.ru +dnssec +multiline

    Если в ответе нет записи RRSIG для A-записи, значит зона не подписана. Также можно проверить корневую цепочку:

    dig . DNSKEY +multiline

    Убедитесь, что корневой ключ доверия (trust anchor) в Technitium актуален. Если он устарел, валидация может ложно не работать для подписанных зон. Обновить ключи можно в настройках DNSSEC сервера.

    Настройка Technitium для строгой валидации DNSSEC

    Если вы хотите, чтобы сервер блокировал все неподписанные домены, необходимо изменить поведение по умолчанию. В Technitium это делается через опцию Block Unverified Domains в разделе DNSSEC. При её включении сервер будет возвращать SERVFAIL для любых доменов, которые не прошли DNSSEC-валидацию, включая неподписанные. Однако имейте в виду: это приведёт к тому, что значительная часть интернета станет недоступна, так как многие сайты до сих пор не используют DNSSEC.

    Заключение

    Проблема с ya.ru не связана с ошибкой Technitium или неправильной настройкой. Сервер корректно обрабатывает DNSSEC: для подписанных доменов (cloudflare.com) проставляет флаг ad, для неподписанных (ya.ru) возвращает IP без валидации. Если вам нужно строгое соблюдение DNSSEC, включите блокировку неподтверждённых доменов, но помните о последствиях.

    Часто задаваемые вопросы