SystemdDoctor
служба не работает разрешение имён время

unbound: проверка подписей не проходит, имена не разрешаются

При включённой проверке подписей неверное время или устаревший корневой ключ означают, что все ответы считаются недостоверными. Снаружи это выглядит как полный отказ разрешения имён при работающей службе — сочетание, которое сбивает с толку.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Время на машине неверное

    Подписи имеют срок действия. При сбитых часах действующая подпись считается просроченной, и ответ отбрасывается.

  2. Корневой ключ устарел или файл повреждён

    Служба хранит корневой ключ в файле и обновляет его сама. Если файл устарел или испорчен, доверять ответам нечем.

  3. Нет прав на файл ключа

    Служба работает от своего пользователя и обновляет файл ключа. Без права записи обновление не проходит, и ключ стареет.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Сообщения о проверке подписей.

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

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Время на машине неверное
Почему происходит
Подписи имеют срок действия. При сбитых часах действующая подпись считается просроченной, и ответ отбрасывается.
Как проверить
Посмотрите время и синхронизацию.
timedatectl | head -6
Как исправить
Исправьте время и включите синхронизацию. Пока часы неверны, проверка подписей будет отвергать всё.
2. Корневой ключ устарел или файл повреждён
Почему происходит
Служба хранит корневой ключ в файле и обновляет его сама. Если файл устарел или испорчен, доверять ответам нечем.
Как проверить
Посмотрите файл ключа и сообщения службы.
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
3. Нет прав на файл ключа
Почему происходит
Служба работает от своего пользователя и обновляет файл ключа. Без права записи обновление не проходит, и ключ стареет.
Как проверить
Посмотрите владельца файла и пользователя службы.
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

Связанные ошибки

Где встречается чаще всего

Источники

  • Документация Unbound документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено переводом часов назад на тестовой машине.
    собственная проверка, systemd 255
    сверено 15 сентября 2026