unbound: проверка подписей не проходит, имена не разрешаются
При включённой проверке подписей неверное время или устаревший корневой ключ означают, что все ответы считаются недостоверными. Снаружи это выглядит как полный отказ разрешения имён при работающей службе — сочетание, которое сбивает с толку.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Время на машине неверное
Подписи имеют срок действия. При сбитых часах действующая подпись считается просроченной, и ответ отбрасывается.
-
Корневой ключ устарел или файл повреждён
Служба хранит корневой ключ в файле и обновляет его сама. Если файл устарел или испорчен, доверять ответам нечем.
-
Нет прав на файл ключа
Служба работает от своего пользователя и обновляет файл ключа. Без права записи обновление не проходит, и ключ стареет.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Сообщения о проверке подписей.
journalctl -u unbound -n 30 --no-pager | grep -iE "validation|trust anchor"Что отвечает служба на запрос с проверкой подписи.
dig @127.0.0.1 example.org +dnssec | head -12Верное ли время: от него зависит проверка подписей.
timedatectl | head -6Решение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Подписи имеют срок действия. При сбитых часах действующая подпись считается просроченной, и ответ отбрасывается.
- Как проверить
-
Посмотрите время и синхронизацию.
timedatectl | head -6
- Как исправить
- Исправьте время и включите синхронизацию. Пока часы неверны, проверка подписей будет отвергать всё.
- Почему происходит
- Служба хранит корневой ключ в файле и обновляет его сама. Если файл устарел или испорчен, доверять ответам нечем.
- Как проверить
-
Посмотрите файл ключа и сообщения службы.
sudo ls -l /var/lib/unbound/root.key 2>/dev/null journalctl -u unbound -n 20 --no-pager | grep -iE "trust|anchor|validation"
- Как исправить
-
Обновите корневой ключ штатным средством службы и убедитесь, что файл принадлежит её пользователю.
sudo -u unbound unbound-anchor -a /var/lib/unbound/root.key
- Почему происходит
- Служба работает от своего пользователя и обновляет файл ключа. Без права записи обновление не проходит, и ключ стареет.
- Как проверить
-
Посмотрите владельца файла и пользователя службы.
sudo ls -l /var/lib/unbound/ systemctl show unbound -p User -p StateDirectory
- Как исправить
-
Передайте каталог состояния пользователю службы или объявите его через
StateDirectory=: тогда права выставит systemd.
Пример вывода
Проверка подписей отвергает ответы из-за неверного времени. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
unbound[4900]: [4900:0] info: validation failure <example.org. A IN>: signature expired from 198.51.100.7
unbound[4900]: [4900:0] info: 127.0.0.1 example.org. A IN SERVFAIL 0.000000 0 32
$ timedatectl | head -3
Local time: Sat 2026-06-20 11:02:14 MSK
System clock synchronized: no
Связанные ошибки
- Temporary failure in name resolution в журнале службы Служба не может разрешить имя: не готова сеть, нет сервера имён, мешает изоляция. Разбор при загрузке и в работе.
- Время не синхронизируется: chronyd или systemd-timesyncd Служба синхронизации времени работает, а время расходится: закрыт порт, конфликт двух служб, недоступны серверы.
- Прыжок системного времени сбивает таймеры и сертификаты После синхронизации времени таймеры срабатывают не вовремя, а проверка сертификатов отказывает. Почему и что делать.
- systemd-resolved: DNSSEC validation failed, имена не разрешаются Часть имён не разрешается при работающей службе: проверка подписей отвергает ответы промежуточного сервера.
- clocksource: Marking clocksource unstable Ядро переключило источник времени. Службы видят скачки времени, таймеры срабатывают не тогда, когда ожидалось.
- dnsmasq: failed to create listening socket for port 53 Порт 53 занят встроенной службой разрешения имён. Как развести dnsmasq и systemd-resolved.
- Имена разрешаются не через ту подсистему Служба не находит узел, который виден другим средствам: порядок источников разрешения имён задан иначе.
- Служба имён не загружает зону: нет прав или ошибка в файле Зона не загружается: файл недоступен службе, каталог не позволяет создать журнал изменений или в файле ошибка.
Где встречается чаще всего
Источники
- Документация Unbound
-
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено переводом часов назад на тестовой машине.