Задача: включить функцию prefetch в Unbound и показать, что записи обновляются до истечения TTL.
Prefetch — механизм, при котором Unbound автоматически обновляет запись в кэше, если к ней поступает запрос, а оставшийся TTL составляет менее 10% от исходного. Таким образом, запись никогда не «устаревает» при активном использовании.
Важно: порог 10% жёстко зашит в исходный код Unbound — изменить его через конфигурационный файл нельзя.
prefetch: yesтолько включает/выключает механизм. Чтобы задать другой порог, потребуется пересборка Unbound из исходников с изменённым кодом.
Открываем конфигурационный файл:
sudo nano /etc/unbound/unbound.conf
В секцию server: добавляем:
prefetch: yes
Сохраняем и перезапускаем Unbound:
sudo systemctl restart unbound
dig @127.0.0.1 yandex.ru A
Запоминаем значение TTL в секции ANSWER.
Ждём, пока TTL опустится до ~10% от исходного значения, затем выполняем повторный запрос:
dig @127.0.0.1 yandex.ru A
При активном prefetch Unbound в фоне отправит запрос на авторитетный сервер и обновит запись. В ответе мы получим старую запись (из кэша), но TTL уже будет обновлён.
sudo unbound-control stats | grep prefetch
В выводе ищем num.prefetch — ненулевое значение подтверждает, что механизм сработал.