systemd-resolved: DNSSEC validation failed, имена не разрешаются
Встроенная служба разрешения имён по умолчанию проверяет подписи там, где они есть. Промежуточные серверы провайдеров и точек доступа часто подменяют или обрезают ответы, и проверка их отвергает. Снаружи это выглядит как избирательный отказ разрешения имён: одни домены работают, другие нет.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Промежуточный сервер портит ответы
Сервер провайдера отдаёт ответ без подписей или с изменённым содержимым. Проверка считает его недостоверным.
-
Время на машине неверное
Подписи имеют срок действия. При сбитых часах проверка отвергает даже верные ответы.
-
Режим проверки задан строгим для всей системы
В строгом режиме отвергаются и домены без подписей. Область отказов становится гораздо шире.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Разрешение имени с подробным сообщением о причине отказа.
resolvectl query проблемный.доменСерверы разрешения имён и режим проверки подписей.
resolvectl status | head -20Записи о проверке подписей.
journalctl -u systemd-resolved -n 30 --no-pager | grep -iE "DNSSEC|validation"Решение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Сервер провайдера отдаёт ответ без подписей или с изменённым содержимым. Проверка считает его недостоверным.
- Как проверить
-
Посмотрите сообщения службы и попробуйте разрешить имя напрямую.
journalctl -u systemd-resolved -n 20 --no-pager | grep -iE "DNSSEC|validation" resolvectl query проблемный.домен 2>&1 | head -5
- Как исправить
- Смените сервер разрешения имён на тот, который отдаёт подписи целиком. Отключать проверку из-за плохого сервера — крайняя мера: она открывает подмену ответов.
- Почему происходит
- Подписи имеют срок действия. При сбитых часах проверка отвергает даже верные ответы.
- Как проверить
-
Посмотрите время и синхронизацию.
timedatectl | head -5
- Как исправить
- Исправьте время и включите синхронизацию. До этого разрешение имён с проверкой работать не будет.
- Почему происходит
- В строгом режиме отвергаются и домены без подписей. Область отказов становится гораздо шире.
- Как проверить
-
Посмотрите режим проверки.
resolvectl status | grep -iE "DNSSEC" systemd-analyze cat-config systemd/resolved.conf | grep -i dnssec
- Как исправить
- Оставьте режим проверки по возможности вместо строгого. Строгий режим уместен там, где вы управляете всей цепочкой серверов.
Пример вывода
Ответ промежуточного сервера отвергнут проверкой подписей. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
systemd-resolved[740]: DNSSEC validation failed for question example.org IN A: no-signature
systemd-resolved[740]: DNSSEC validation failed for question example.org IN AAAA: no-signature
$ resolvectl query example.org
example.org: resolve call failed: DNSSEC validation failed: no-signature
Связанные ошибки
- systemd-resolved: resolv.conf заменён обычным файлом Разрешение имён работает частично: поиск по домену и разные серверы по интерфейсам перестают действовать.
- Temporary failure in name resolution в журнале службы Служба не может разрешить имя: не готова сеть, нет сервера имён, мешает изоляция. Разбор при загрузке и в работе.
- unbound: проверка подписей не проходит, имена не разрешаются Служба работает, но все ответы отбрасываются: неверное время, устаревший корневой ключ или права на его файл.
- clocksource: Marking clocksource unstable Ядро переключило источник времени. Службы видят скачки времени, таймеры срабатывают не тогда, когда ожидалось.
- dnsmasq: failed to create listening socket for port 53 Порт 53 занят встроенной службой разрешения имён. Как развести dnsmasq и systemd-resolved.
- Время не синхронизируется: chronyd или systemd-timesyncd Служба синхронизации времени работает, а время расходится: закрыт порт, конфликт двух служб, недоступны серверы.
- Имена разрешаются не через ту подсистему Служба не находит узел, который виден другим средствам: порядок источников разрешения имён задан иначе.
- Прыжок системного времени сбивает таймеры и сертификаты После синхронизации времени таймеры срабатывают не вовремя, а проверка сертификатов отказывает. Почему и что делать.
Где встречается чаще всего
Источники
-
resolved.conf(5)
Режимы проверки подписей DNSSEC=. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено сервером разрешения имён, отдающим ответы без подписей.