
Systemd resolved – это служба, предназначенная для упрощения работы с DNS в Linux-системах. Она заменяет традиционные инструменты для разрешения доменных имен, такие как dnsmasq или bind, обеспечивая лучшую интеграцию с системными сервисами. Основной задачей resolved является управление настройками DNS, предоставление динамического разрешения и поддержка дополнительных функций, таких как DNS-over-HTTPS (DoH) и DNS-over-TLS (DoT).
Основные преимущества использования Systemd resolved заключаются в централизованном управлении DNS-запросами и автоматическом их обновлении в реальном времени, что значительно упрощает настройку и диагностику. Также, благодаря тесной интеграции с другими компонентами systemd, она позволяет более эффективно управлять сетевыми соединениями, обеспечивая их стабильность и безопасность.
В этой статье рассматриваются ключевые функции и аспекты использования Systemd resolved в реальных условиях. Мы подробно разберем, как настроить и оптимизировать работу службы для различных сценариев, таких как использование сторонних DNS-серверов, настройка DNS на нескольких интерфейсах и решение проблем с производительностью. Особое внимание уделено настройке конфигурационных файлов и диагностике ошибок, что позволяет добиться точного и предсказуемого поведения системы.
Конфигурация Systemd resolved для работы с DNS

Для настройки Systemd resolved под работу с DNS необходимо отредактировать конфигурационные файлы, расположенные в каталоге /etc/systemd/resolved.conf. Важно понимать, что изменение этих параметров напрямую влияет на работу DNS-сервера и всего разрешения имен в системе.
Основные параметры конфигурации:
- DNS – задает список серверов DNS, которые будут использоваться для разрешения имен. Сервера можно указывать через пробел, например: DNS=8.8.8.8 8.8.4.4.
- FallbackDNS – резервные DNS-серверы, которые будут использованы в случае, если основные не отвечают. Указание нескольких серверов повышает отказоустойчивость системы.
- Domains – позволяет указать доменные зоны, которые будут автоматически обрабатываться через resolved. Например, Domains=example.com.
- LLMNR – включает или отключает поддержку Link-Local Multicast Name Resolution. Эта опция полезна в локальных сетях для разрешения имен устройств без использования DNS.
- DNSSEC – включает или отключает проверку безопасности DNS-запросов через DNSSEC. Включение этой опции повышает безопасность, но может повлиять на производительность.
После внесения изменений необходимо перезапустить службу systemd-resolved командой:
sudo systemctl restart systemd-resolved
Для проверки текущих настроек можно использовать команду systemd-resolve —status, которая выведет информацию о текущих DNS-серверах и их статусе.
Также важно помнить, что для применения настроек на уровне системы можно создать символическую ссылку:
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
Эта команда указывает системе использовать DNS-серверы, управляемые через systemd, и позволяет исключить возможные конфликты с другими инструментами разрешения имен, такими как dnsmasq или NetworkManager.
Как проверить статус и диагностика проблем с resolved
Для диагностики состояния службы systemd-resolved и выявления возможных проблем, можно использовать несколько полезных команд и инструментов.
Основные команды для проверки статуса службы:
- journalctl -u systemd-resolved – показывает журнал работы службы. Для подробной диагностики можно использовать фильтрацию по времени или ключу —since, чтобы найти ошибки или предупреждения.
При обнаружении проблем, например, если DNS-запросы не работают, можно использовать следующие методы диагностики:
- Проверка конфигурации – убедитесь, что в файле /etc/systemd/resolved.conf правильно указаны DNS-серверы и другие параметры. Если используется несколько интерфейсов, проверьте, что каждый из них настроен корректно.
- Перезапуск службы – иногда простого перезапуска службы достаточно для устранения временных ошибок. Используйте команду:
sudo systemctl restart systemd-resolved - Проверка сетевого интерфейса – если проблема с DNS связана с определённым интерфейсом, используйте команду ip a для проверки состояния интерфейсов и их IP-адресов. Также важно убедиться, что интерфейс правильно подключён к сети.
Для диагностики ошибок DNS можно использовать команды dig или nslookup для тестирования запросов к конкретным DNS-серверам. Например, для проверки работы DNS-сервера Google:
dig @8.8.8.8 example.com
Если результаты запроса корректны, значит проблема скорее всего в настройках системы или сети. Если запрос не проходит, можно проверить журнал systemd или перезапустить службу resolved.
Если ошибка связана с разрешением имен на локальных устройствах, проверьте, включена ли поддержка LLMNR и MulticastDNS в конфигурации resolved. Для этого используйте команду systemd-resolve —status и убедитесь, что соответствующие параметры активированы.
Настройка системы для использования сторонних DNS-серверов через resolved
Для настройки использования сторонних DNS-серверов через systemd-resolved необходимо внести изменения в конфигурационный файл службы. Это позволяет использовать DNS-серверы, отличные от тех, которые предоставляет провайдер, или настроить специализированные серверы для повышения безопасности и производительности.
Шаги настройки:
- Откройте файл конфигурации resolved:
sudo nano /etc/systemd/resolved.conf
DNS=8.8.8.8 8.8.4.4 1.1.1.1
FallbackDNS=9.9.9.9 8.8.8.8
sudo systemctl restart systemd-resolved
systemd-resolve --status
Для использования сторонних DNS-серверов в качестве основного источника разрешения имен и исключения использования локальных или DNS-серверов провайдера, установите символическую ссылку на файл /etc/resolv.conf, который будет указывать на файл конфигурации systemd-resolved:
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
Этот шаг гарантирует, что система будет использовать DNS-серверы, указанные в конфигурации resolved, а не стандартные настройки сети, установленные автоматически.
Если вы хотите настроить только определённые интерфейсы для использования сторонних DNS, можно указать их в параметре DNS= для конкретных интерфейсов в конфигурации networkd или другим способом, используя systemd.network файлы.
Особенности работы resolved с конфигурационными файлами

Systemd-resolved использует несколько конфигурационных файлов для настройки работы с DNS, сетевыми интерфейсами и параметрами безопасности. Каждый из этих файлов имеет свои особенности, и правильная настройка этих файлов критична для корректной работы службы.
Основные конфигурационные файлы:
- /etc/systemd/resolved.conf – основной конфигурационный файл для systemd-resolved. В нём настраиваются параметры, такие как список DNS-серверов, резервных серверов, поддержка DNSSEC и прочее. Параметры в этом файле влияют на поведение службы на уровне всей системы.
- /etc/resolv.conf – файл, используемый для хранения актуальных настроек DNS-серверов. Этот файл должен быть символической ссылкой на /run/systemd/resolve/stub-resolv.conf или /run/systemd/resolve/resolv.conf, чтобы systemd-resolved мог управлять его содержимым. Если это не так, система будет использовать старые методы разрешения DNS.
- /etc/systemd/network/*.network – файлы конфигурации, которые управляют сетевыми интерфейсами в systemd-networkd. В этих файлах можно указать DNS-серверы, которые будут использоваться только для конкретных интерфейсов. Эти настройки могут переопределять общие параметры, указанные в resolved.conf.
Порядок приоритета параметров в конфигурационных файлах:
- Параметры, указанные в /etc/systemd/resolved.conf, применяются ко всем интерфейсам и системным настройкам.
- Параметры в файлах *.network могут переопределить общие настройки для конкретных интерфейсов.
- Файл /etc/resolv.conf может быть использован для старых методов настройки DNS и не должен изменяться вручную, если используется systemd-resolved.
Чтобы внести изменения в параметры, такие как DNS-серверы или настройки безопасности, необходимо редактировать /etc/systemd/resolved.conf и перезапустить службу командой:
sudo systemctl restart systemd-resolved
Кроме того, для обеспечения корректной работы DNS в некоторых случаях требуется вручную синхронизировать настройки с /etc/resolv.conf, особенно если используется нестандартная конфигурация сети. Это делается с помощью символической ссылки:
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
Важно также проверять состояние службы и корректность настроек с помощью команды:
systemd-resolve --status
Корректная работа с конфигурационными файлами позволяет гибко настраивать DNS-систему в Linux и минимизировать вероятность конфликтов между различными сетевыми сервисами.
Использование Systemd resolved в многосетевых конфигурациях

Systemd-resolved предоставляет удобные возможности для работы с DNS в многосетевых конфигурациях, когда система подключена к нескольким сетям или использует разные интерфейсы для различных типов трафика. В таких случаях важно правильно настроить приоритеты и конфигурацию DNS для каждого интерфейса.
Для работы в многосетевых средах можно использовать следующие методы:
- Настройка интерфейсов через systemd.network: В файлах конфигурации для каждого интерфейса (например, /etc/systemd/network/20-wired.network) можно указать специфические параметры DNS. Это позволяет для каждого интерфейса использовать свой набор DNS-серверов, что полезно при наличии отдельных сетей для локальных и внешних подключений. Пример настройки:
[Network]
DNS=192.168.1.1
[DHCP]
UseDNS=false
DNS=8.8.8.8 8.8.4.4
FallbackDNS=9.9.9.9
Domains=internal.local
При такой настройке система будет автоматически выбирать соответствующие DNS-серверы в зависимости от интерфейса и доменов, что позволяет более гибко управлять сетевыми соединениями и улучшить производительность в многосетевых средах.
Решение проблем с разрешением DNS через log-файлы Systemd
Основной журнал, где можно найти информацию о проблемах с DNS:
Типичные ошибки, которые могут быть найдены в логе:
| Ошибка | Описание | Решение |
|---|---|---|
| DNS query failed | Запрос DNS не выполнен, возможно, из-за недоступности серверов. | Проверьте настройки DNS-серверов в /etc/systemd/resolved.conf, убедитесь, что серверы работают. |
| Failed to resolve | Не удаётся разрешить домен, что может означать проблемы с сервером или сетью. | Проверьте соединение с сетью и доступность указанных серверов. Также проверьте настройки доменов в resolved.conf. |
| DNS timeout | Истекло время ожидания ответа от DNS-сервера. | Проверьте скорость соединения, доступность серверов, а также настройки таймаутов в конфигурации. |
Дополнительные команды для более детальной диагностики:
- journalctl -xe – показывает последние ошибки и события в системе, что помогает быстро найти возможные проблемы с DNS-запросами.
- dig или nslookup – для диагностики работы DNS-запросов с использованием конкретных серверов. Эти утилиты помогают проверить, правильно ли работают DNS-сервера, настроенные через systemd-resolved.
Если ошибка не устраняется, можно временно переключиться на другой DNS-сервер, чтобы исключить проблемы с текущим сервером, например, использовать Google DNS или Cloudflare. Для этого достаточно обновить конфигурацию в /etc/systemd/resolved.conf и перезапустить службу:
sudo systemctl restart systemd-resolved
Регулярный мониторинг логов и их анализ позволяет быстро выявлять и устранять проблемы с разрешением DNS, обеспечивая стабильную работу системы.
Интеграция resolved с другими службами системы для улучшения производительности
Systemd-resolved может быть эффективно интегрирован с другими службами Linux-системы для повышения общей производительности сети и управления DNS. В этой части рассматриваются ключевые способы интеграции и их влияние на производительность.
1. Интеграция с systemd-networkd: В многосетевых конфигурациях systemd-resolved тесно работает с systemd-networkd, обеспечивая динамическое обновление настроек DNS при изменении состояния сетевых интерфейсов. Когда systemd-networkd изменяет параметры сети, такие как подключение к новому интерфейсу или изменение IP-адреса, resolved автоматически подстраивается под новые условия, минимизируя задержки при разрешении DNS. Это также позволяет обрабатывать специфичные настройки для каждого интерфейса (например, использование разных DNS-серверов для разных сетей).
Для интеграции в файле конфигурации интерфейса можно указать параметры DNS, которые будут использованы только для этого интерфейса:
[Network]
DNS=192.168.1.1
2. Работа с NetworkManager: В случае, если в системе используется NetworkManager для управления сетевыми подключениями, он может взаимодействовать с systemd-resolved для автоматической синхронизации настроек DNS. NetworkManager будет передавать параметры DNS, настроенные для каждого интерфейса, в systemd-resolved, что позволяет более гибко управлять DNS-запросами на уровне каждой сети.
Для корректной работы NetworkManager и resolved необходимо убедиться, что файл /etc/NetworkManager/NetworkManager.conf настроен для использования systemd-resolved:
[main]
dns=systemd
3. Интеграция с консольными утилитами: Важно отметить, что systemd-resolved работает в тесной связи с инструментами, такими как dig и nslookup, которые могут быть использованы для тестирования производительности и точности DNS-запросов. При правильной настройке системы с использованием этих утилит можно быстро выявить любые проблемы с производительностью и настроить их для устранения.
4. Использование DNS-кеширования: Включение кеширования DNS-запросов в systemd-resolved значительно ускоряет обработку повторных запросов к уже разрешённым доменам. Это снижает нагрузку на сеть и DNS-серверы, а также ускоряет отклик системы. Кеширование можно настроить через параметр Cache в /etc/systemd/resolved.conf.
5. Использование DNS-over-HTTPS (DoH) и DNS-over-TLS (DoT): Для повышения безопасности и производительности можно настроить использование зашифрованных DNS-соединений через DoH или DoT. Включение этих технологий позволяет не только ускорить разрешение имен, но и повысить конфиденциальность запросов. Для настройки этих опций нужно указать соответствующие серверы в файле /etc/systemd/resolved.conf:
DNS=1.1.1.1
DNSOverHTTPS=true
Интеграция systemd-resolved с другими службами системы, такими как systemd-networkd, NetworkManager и утилитами для работы с DNS, позволяет не только улучшить производительность разрешения имен, но и обеспечить безопасность, отказоустойчивость и динамичную настройку DNS в различных сетевых средах.
Вопрос-ответ:
Что такое systemd-resolved и как он работает в Linux?
Systemd-resolved — это служба, которая отвечает за разрешение доменных имен (DNS) в Linux. Она работает как часть системы init (systemd) и предоставляет интерфейс для управления DNS-запросами, поддерживает такие функции, как DNS-кеширование и интеграцию с другими сетевыми сервисами. Она может работать с DNS-серверами, указанными в конфигурации системы, а также поддерживает технологии DNS-over-HTTPS (DoH) и DNS-over-TLS (DoT) для повышения безопасности.
Как настроить DNS-сервера в systemd-resolved?
Для настройки DNS-серверов в systemd-resolved нужно отредактировать файл конфигурации /etc/systemd/resolved.conf. В разделе DNS можно указать адреса DNS-серверов, например, DNS=8.8.8.8 8.8.4.4. Также можно настроить резервные серверы через параметр FallbackDNS. После изменений нужно перезапустить службу командой sudo systemctl restart systemd-resolved, чтобы настройки вступили в силу.
Как проверить, какие DNS-сервера использует systemd-resolved?
Чтобы узнать, какие DNS-сервера использует systemd-resolved, выполните команду systemd-resolve —status. Эта команда выведет информацию о текущих DNS-серверах, используемых для разрешения имен на разных интерфейсах. Вы сможете увидеть, какие серверы подключены и для каких интерфейсов они применяются.
Как можно улучшить производительность DNS через systemd-resolved?
Для повышения производительности DNS через systemd-resolved важно включить кеширование DNS-запросов, что ускорит повторные обращения к уже разрешённым доменам. Для этого нужно убедиться, что кеширование активно в конфигурации службы. Также можно настроить более быстрые и отказоустойчивые DNS-серверы, например, использовать Cloudflare (1.1.1.1) или Google DNS (8.8.8.8), а для безопасности включить DNS-over-HTTPS или DNS-over-TLS.
Как диагностировать проблемы с разрешением DNS через systemd-resolved?
Для диагностики проблем с разрешением DNS можно использовать журнал systemd. Команда journalctl -u systemd-resolved покажет логи службы и поможет выявить ошибки, такие как недоступность DNS-серверов. Также полезна команда systemd-resolve —status, которая позволяет увидеть текущие настройки DNS и интерфейсы. Для диагностики конкретных запросов можно использовать утилиты dig или nslookup, чтобы проверить, работают ли DNS-серверы.
