◽Systemd timers как замена Cron
◽Journald как замена Syslog
◽Systemd-journal-remote - централизованное хранение логов
◽Systemd-journal-gatewayd - просмотр логов через браузер
◽Systemd-mount для монтирования дисков
◽Есть ещё timesyncd как замена ntp или chrony.
Сегодня расскажу про ещё одну такую службу, которая заменяет локальный кэширующий DNS сервер - systemd-resolved. Изначально я научился настраивать DNS сервер Bind ещё в те времена, когда было привычным делом держать свою зону на своих серверах. Везде использовал его, даже в простых случаях, где нужно простое кэширование без поддержки своих зон. Потом познакомился с Dnsmasq и для обычного кэширования стал использовать его, так как настроить быстрее и проще. На пути к упрощению решил попробовать systemd-resolved. Он выступает в роли локального кэширующего сервера, то есть обрабатывает только запросы сервера, где он установлен, и его приложений.
В каких-то дистрибутивах systemd-resolved может быть в составе systemd. В Debian 12 это не так, поэтому придётся поставить отдельно:
# apt install systemd-resolvedДалее открываем конфиг
/etc/systemd/resolved.conf и приводим его примерно к такому виду:[Resolve]DNS=77.88.8.1 1.1.1.1 8.8.8.8FallbackDNS=77.88.8.8 8.8.4.4Cache=yesЭто минимальный набор настроек для локального кэширующего сервера. Сервера из списка FallbackDNS будут использоваться в случае недоступности основного списка.
Перезапускаем службу:
# systemctl restart systemd-resolvedПосле установки systemd-resolved удаляет
/etc/resolv.conf и заменяет ссылкой на /run/systemd/resolve/stub-resolv.conf. Проверить работу службы можно разными способами. Например так:# resolvectl query ya.ruили так:
# dig @127.0.0.54 ya.ruТо есть локальный DNS сервис имеет адрес 127.0.0.54. Он же и указан в виде
nameserver 127.0.0.53 в resolv.conf. Посмотреть статус службы можно так:
# resolvectl statusЕсли захотите посмотреть подробности работы службы, например, увидеть сами запросы и узнать сервера, к которым они были переадресованы, то можно включить режим отладки.
# systemctl edit systemd-resolvedДобавляем параметр:
[Service]Environment=SYSTEMD_LOG_LEVEL=debugПерезапускаем службу и смотрим логи:
# systemctl restart systemd-resolved# journalctl -f -u systemd-resolvedЕсли ответа нет в кэше, то вы увидите информацию о том, что был запрос к публичному DNS серверу. Если в кэше есть запись об этом домене, то увидите строку:
Positive cache hit for example.com IN AПосмотреть статистику по запросам:
# resolvectl statisticsОчистить локальный кэш:
# resolvectl flush-cachesВ принципе, простой и эффективный инструмент. Можно пользоваться, особенно если он идёт в комплекте с systemd. Было бы интересно его приспособить и для удалённых запросов. Например, поставить на гипервизор и обслуживать запросы виртуальных машин. Но как я понял, он так не умеет и не предназначен для этого.
#systemd #dns