===== Настройка кеширующего DNS-клиента systemd-resolved в Debian GNU/Linux 12 (Bookworm) ===== {{:unix-linux:debian:pasted:20171124-194401.png }} Одним из изменений конфигурации **systemd**, используемой по умолчанию в **Debian GNU/Linux 12.0**, является отсутствие службы, отвечающей за разрешение имён с возможностью кэширования результатов запросов с внешних DNS-серверов - **systemd-resolved**. Поэтому, если нужно ускорить работу механизма разрешения имён, например с корпоративных DNS-серверов, можно выполнить самостоятельную установку и настройку этой службы. Устанавливаем одноимённый пакет **systemd-resolved** из стандартных репозиториев Debian Bookworm:
В ходе установки для службы **systemd-resolved** будет включён автоматический запуск при старте системы. Помимо этого, в систему автоматически будут доустановлены пакеты **libnss-myhostname** и **libnss-resolve**. Модуль **nss-resolve** (библиотека **libnss_resolve.so** из пакета **libnss-resolve**) будет добавлен в механизм **Name Service Switch** (**NSS**), который будет вызывать службу **systemd-resolved** для разрешения имён. А в конфигурационном файле ''/etc/nsswitch.conf'' строка ''hosts: files dns'' будет автоматически заменена на следующий вид:# apt-get install systemd-resolved
Заполним параметры секции ''[Resolve]'', например, следующим образом:# nano /etc/systemd/resolved.conf
{{ :unix-linux:debian:bookworm:pasted:20230620-190132.png }} ---- Для совместимости с приложениями, которые не используют библиотечные вызовы, а обращаются к DNS серверам напрямую, получая их из ''/etc/resolv.conf'', нам потребуется символическая ссылка на файл **resolv.conf**, контент которого автоматически генерируется исходя из настроек, заданных нами в ''/etc/systemd/resolved.conf''. В конфигурации по умолчанию текущая реализация пакета **systemd-resolved** в Debian Bookworm при установке заменяет реальный файл ''/etc/resolv.conf'' на ссылку к автоматически генерируемому файлу: ''/run/systemd/resolve/stub-resolv.conf''.# systemctl restart systemd-resolved # systemctl status systemd-resolved
{{ :unix-linux:debian:bookworm:pasted:20230621-091117.png }} Если мы заглянем в этот самый, автоматически генерируемый, конфиг ''/run/systemd/resolve/stub-resolv.conf'', то увидим там отсылку на локальный псевдо-сервер DNS с адресом **127.0.0.53**. {{ :unix-linux:debian:bookworm:pasted:20230621-093006.png }} Отсылка на локальный псевдо-сервер DNS связана с тем, что в конфигурации по умолчанию в ''/etc/systemd/resolved.conf'' активирован механизм **DNSStubListener** (''DNSStubListener=yes''), который запускает отдельные TCP/UDP-прослушиватели на 127.0.0.53%lo:53 и 127.0.0.54:53: {{ :unix-linux:debian:bookworm:pasted:20230621-092159.png }} Согласно [[https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html|man systemd-resolved.service]] такой режим работы является рекомендуемым для systemd-resolved, так как позвляет пропустить весь поток DNS-запросов ото всех типов локальных приложений через внутренний кеширующий резолвер systemd-resolved. Если же по какой-то причине работа **DNSStubListener** вас не устроит и вы решите отказаться от его использования , то его также легко можно будет отключить в конфигурации ''/etc/systemd/resolved.conf'' (''DNSStubListener=no'') с последующим перезапуском службы **systemd-resolved**. В этом случае после перезапуска службы в генерируемом конфиге ''/run/systemd/resolve/stub-resolv.conf'' отсылка на DNS серверы будет автоматически изменена: {{ :unix-linux:debian:bookworm:pasted:20230621-100205.png }} При этом, само собой разумеется, в системе пропадут TCP/UPD-прослушиватели локального псевдо-сервера DNS: {{ :unix-linux:debian:bookworm:pasted:20230621-100649.png }} ---- После проведённой настройки и запуска **systemd-resolved** можно отключить настройки DNS в таких местах, как, например, в классическом для Debian конфигурационном файле ''/etc/network/interfaces''. При этом следует помнить про то, что если настройка сетевой подсистемы сервера выполняется с помощью конфигурационных файлов [[unix-linux:debian:bookworm:how-to-setup-network-configuration-with-systemd-networkd-on-debian-linux-12|systemd-networkd]], и в файлах ''/etc/systemd/network/*.network'' тоже указаны настройки DNS, то эти настройки также попадут в результирующую конфигурацию systemd-resolved (и, как следствие, в тот же resolv.conf). Поэтому важно сразу выбрать стратегию того, в каком именно месте вы будете редактировать конфигурацию DNS серверов (в файлах ''/etc/systemd/network/*.network'' или в файле ''/etc/systemd/resolved.conf''). На мой взгляд, указание DNS серверов и доменных суффиксов представляется более логичным в файлах ''/etc/systemd/network/*.network'', так как это даёт дополнительную гибкость настройки, особенно в конфигурациях с несколькими сетевыми интерфейсами, каждый из которых должен использовать собственные DNS серверы. ---- Проверить текущий статус результирующих настроек **systemd-resolved** можем с помощью утилиты **resolvectl**:# ls -la /etc/resolv.conf
{{ :unix-linux:debian:bookworm:pasted:20230621-102524.png }} С помощью этой же полезной утилиты можно сделать много дополнительных вещей, типа включения и выключения режима отладки, просмотра статистики использования кеша, очистки кеша, мониторинга запросов и ответов в реальном режиме времени и т.д. ---- Дополнительные источники информации: * [[https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html|man systemd-resolved.service]] * [[https://wiki.archlinux.org/title/Systemd-resolved_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)|ArchWiki на Русском - systemd-resolved]] * [[https://www.hippolab.ru/perehodim-na-systemd-resolved|HippoLab - Переходим на systemd-resolved]] ---- Проверено на следующих конфигурациях: ^ Версия ОС ^ Версия systemd-resolved ^ |Debian GNU/Linux Bookworm 12.0 | 252.6-1 amd64 | ---- {{:user:blogroot.png?50&nolink |}} Автор первичной редакции:\\ [[user:blogroot|Алексей Максимов]] \\ Время публикации: 20.06.2023 20:00 {{tag>Linux Debian "Debian 12" "Debian Bookworm" DNS systemd systemd-resolved resolved resolvectl NSS libnss}} ~~DISCUSSION~~# resolvectl status