Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки...

Инструменты пользователя

Инструменты сайта


unix-linux:debian:stretch:systemd-resolved-in-debian-9

Настройка кеширующего DNS-клиента systemd-resolved в Debian GNU/Linux 9 (Stretch)

В составе systemd, используемой в конфигурации по умолчанию в Debian GNU/Linux 9 имеется отдельная служба, отвечающая за разрешение имён с возможностью кэширования результатов запросов с внешних DNS-серверов - systemd-resolved.

Поэтому, если нужно ускорить работу механизма разрешения имён, например с корпоративных DNS-серверов, нет необходимости устанавливать и настраивать специальные пакеты типа dnsmasq, а достаточно лишь выполнить настройку systemd-resolved.

В конфигурации по умолчанию данная служба не запущена:

# systemctl status systemd-resolved
● systemd-resolved.service - Network Name Resolution Loaded: loaded (/lib/systemd/system/systemd-resolved.service; disabled...) Drop-In: /lib/systemd/system/systemd-resolved.service.d └─resolvconf.conf Active: inactive (dead)...

Установим модуль nss-resolve (библиотека libnss_resolve.so из пакета libnss-resolve) для механизма Name Service Switch (NSS), который будет вызывать службу systemd-resolved для разрешения имён:

# apt-get install libnss-resolve

В процессе установки в конфигурационном файле /etc/nsswitch.conf строка hosts: files dns будет автоматически заменена на следующий вид:

nsswitch.conf
...
hosts:          files resolve [!UNAVAIL=return] dns
...

Настроим конфигурационный файл /etc/systemd/resolved.conf, заполнив параметры секции [Resolve], например следующим образом:

resolved.conf
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See resolved.conf(5) for details
 
[Resolve]
DNS=10.1.0.9 10.2.0.8
#FallbackDNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844
Domains=my.holding.com
LLMNR=no
DNSSEC=no
Cache=yes
DNSStubListener=no

Для совместимости с приложениями, которые не используют библиотечные вызовы, а обращаются к DNS серверам напрямую, получая их из /etc/resolv.conf, создадим символическую ссылку на файл /run/systemd/resolve/resolv.conf, контент которого автоматически генерируется исходя из настроек, заданных нами в /etc/systemd/resolved.conf:

# ln -svi /run/systemd/resolve/resolv.conf /etc/resolv.conf
ln: replace '/etc/resolv.conf'? y '/etc/resolv.conf' -> '/run/systemd/resolve/resolv.conf'

Проверим линковку:

# ls -la /etc/resolv.conf
lrwxrwxrwx 1 root root 32 Dec 11 16:22 /etc/resolv.conf -> /run/systemd/resolve/resolv.conf

Теперь осталось только включить автозагрузку службы и запустить её:

# systemctl enable systemd-resolved # systemctl restart systemd-resolved # systemctl status systemd-resolved

Дополнительные источники информации:


Проверено на следующих конфигурациях:

Версия ОС
Debian GNU/Linux Stretch 9.3

Автор первичной редакции:
Алексей Максимов
Время публикации: 27.12.2017 11:29

Обсуждение

ЕвгенийЕвгений, 16.01.2019 19:30
А на Centos 6 что можно поставить? systemd-resolved - читаю не может встать
Алексей МаксимовАлексей Максимов, 16.01.2019 19:40
Можно попробовать поставить dnsmasq. Пример того, как его можно сконфигурировать в качестве кэширующего клиента можно подсмотреть здесь: https://blog.it-kb.ru/2017/11/18/recommendations-for-configuring-sssd-in-debian-gnu-linux-about-dns-kerberos-and-active-directory-dc-search
 Евгений Евгений, 16.01.2019 19:56
Как думаете мне это поможет?
Это описание по моей ошибки - все что есть, и знаний в этой области 0

Речь идет о почтовом сервере. Через раз получаю ошибку "StatusDnsQueryFailed resolving domain"

От англ мануала по PowerMTA
"Эта ошибка указывает на то, что DNS-запрос для домена не может быть завершен. Это может быть вызвано несколькими причинами, а именно тайм-аутами, когда PowerMTA пытается установить соединение с вашим локальным DNS-сервером, но, скорее всего, тайм-аутами на самом локальном DNS-сервере при попытке установить соединение с другими DNS-серверами."

Сейчас прописал явно в resolv.conf
option timeout:1
option rotate
domain c-premier.ru
nameserver 77.88.8.8
nameserver 8.8.8.8
nameserver 77.88.8.1
nameserver 8.8.4.4
search c-premier.ru

не было domain / search и еще были ipv6 адреса
вроде пока работает.. У меня такая ошибка (да и не только у меня) в этой программе на всех серверах.
Первый раз вооще сталкиваюсь с resolv..м

Еще если он встал с ошибкой - то ребутнуть сервер заметил немного без ошибки (пару минут) потом опять ошибка. Бывает пропадет и норм работает.
Ваш комментарий:
 

unix-linux/debian/stretch/systemd-resolved-in-debian-9.txt · Последние изменения: 18.06.2019 11:39 — Алексей Максимов