3.5.2.5 Настройка локального кеширующего DNS-сервера systemd-resolved
Скачать документ Предварительная подготовка
Настройка файла конфигурации
Режим совместимости
Откат к старому методу разрешения имен
Окружение
- Версия РЕД ОС: 8
- Конфигурация: Рабочая станция, Сервер графический, Сервер минимальный
- Версия ПО: systemd-251.13-2
systemd-resolved представляет собой небольшой локальный кеширующий DNS-сервер. Основной задачей кеширующего DNS-сервера является обработка DNS-запросов, которые выполняет во время своей работы операционная система, и сохранение их в памяти (кеширование).
systemd-resolved поддерживает такие стандарты, как DNSSEC и DNSoverTLS (или DoT), которые увеличивают безопасность при работе в сети Интернет.
systemd-resolved входит в состав пакета systemd, который установлен в РЕД ОС по умолчанию.
Предварительная подготовка
Для настройки службы systemd-resolved используется конфигурационный файл /etc/systemd/resolved.conf.
Для проверки DNS-серверов, используемых systemd-resolved в данный момент, выполните команду:
resolvectl status
В ответе команды должно отображаться примерно следующее:
Global Protocols: LLMNR=resolve -mDNS -DNSOverTLS DNSSEC=no/unsupported resolv.conf mode: stub Link 2 (enp0s3) Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6 Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported Current DNS Server: 192.168.0.1 DNS Servers: 192.168.0.1 192.168.0.251 DNS Domain: example.com
По умолчанию systemd-resolved считывает стандартные настройки DNS в сети.
Дополнительно рекомендуется проверить параметр hosts
в файле /etc/nsswitch.conf, который определяет последовательность обращений программ к системным компонентам для разрешения доменных имен. В параметре hosts должен быть указан resolve:
hosts: files myhostname resolve [!UNAVAIL=return] dns
где:
files
– считывание настроек из файла /etc/hosts (имеет наивысший приоритет);myhostname
– считывание имени текущего хоста;resolve [!UNAVAIL=return]
– считывание настроек с помощью локального кеширующего DNS-сервера, systemd-resolved поддерживает внутренний каталог с собственным файлом resolv.conf;dns
– обращение напрямую к DNS-серверам (имеет низший приоритет).
Настройка файла конфигурации
Для настройки DNS, к которым необходимо обращаться для преобразования доменных имен, в файл /etc/systemd/resolved.conf потребуется внести следующие изменения:
nano /etc/systemd/resolved.conf
Указать список основных и запасных DNS. Для этого раскомментируйте параметры
DNS=
иFallbackDNS=
и укажите свои значения.В параметре
DNS=
рекомендуется указывать IP-адрес главного маршрутизатора в локальной сети.В параметре
FallbackDNS=
рекомендуется указывать любые публичные DNS-серверы, например,77.88.8.88
– бесплатный DNS-сервер от Яндекс.При необходимости раскомментируйте и укажите нужные значения для следующих параметров:
DNSSEC=yes
– набор расширений протокола DNS, позволяющий минимизировать атаки, связанные с подменой IP-адреса при разрешении доменных имён;DNSOverTLS=yes
– стандартный протокол для выполнения разрешения удалённой системы DNS с использованием TLS;MulticastDNS=no
– многоадресный DNS для поиска устройства или службы по имени в локальной сети;LLMNR=no
– протокол стека TCP/IP, выполняющий разрешение имён хостов в локальной сети.
Включите кеширование, раскомментировав параметр
Cache=
и установив значениеyes
.
После настройки конфигурационного файла выполните перезапуск службы systemd-resolved и проверьте её статус:
systemctl restart systemd-resolved systemctl status systemd-resolved
В случае если по каким-либо причинам в вашей системе systemd-resolved не запущен, при проверке статуса будет отображаться следующее сообщение:
Failed to get global data: The name is not activatable
Для решения данной проблемы запустите и добавьте службу systemd-resolved.service в автозагрузку с помощью команды:
systemctl enable systemd-resolved.service --now
Режим совместимости
Для совместимости с приложениями, которые не используют библиотечные вызовы, а обращаются к DNS-серверам напрямую, получая их из /etc/resolv.conf, потребуется наличие символической ссылки на файл resolv.conf, содержимое которого автоматически генерируется, исходя из настроек, заданных в /etc/systemd/resolved.conf.
В РЕД ОС 8 в конфигурации systemd-resolved по умолчанию реальный файл /etc/resolv.conf заменен на ссылку к автоматически генерируемому файлу /run/systemd/resolve/stub-resolv.conf.
Для проверки символической ссылки выполните:
ls -la /etc/resolv.conf lrwxrwxrwx. 1 root root 39 апр 15 08:34 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
Файл /run/systemd/resolve/stub-resolv.conf содержит в себе отсылку на локальный псевдо-сервер DNS (local stub) на адресе 127.0.0.53 в качестве единственного DNS-сервера, а также список доменов для поиска (параметр search
).
Отсылка на локальный псевдо-сервер DNS связана с тем, что в конфигурации по умолчанию в /etc/systemd/resolved.conf активирован механизм DNSStubListener (DNSStubListener=yes
), который запускает отдельные TCP/UDP-прослушиватели на адресах 127.0.0.53%lo:53
и 127.0.0.54:53
:
ss -tunlp | sort tcp LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:* users:(("systemd-resolve",pid=531,fd=17)) tcp LISTEN 0 4096 127.0.0.54:53 0.0.0.0:* users:(("systemd-resolve",pid=531,fd=19))
Согласно справке по systemd-resolved.service такой режим работы является рекомендуемым для systemd-resolved, так как позволяет пропустить весь поток DNS-запросов от всех типов локальных приложений через внутренний кеширующий DNS-сервер systemd-resolved.
Откат к старому методу разрешения имен
Для того чтобы вернуться с старому методу разрешения имён необходимо:
1. Отключить сервис systemd-resolved:
systemctl disable systemd-resolved --now
2. Удалить /etc/resolv.conf и создать его как обычный файл:
rm /etc/resolv.conf && touch /etc/resolv.conf
3. Прописать в файл все необходимые DNS-сервера, например:
nameserver 8.8.8.8 nameserver 77.88.8.8
Дата последнего изменения: 19.09.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.