Перейти к содержанию

DNS в НАЙС.ОС: systemd-resolved

В НАЙС.ОС CLOUD разрешением имён управляет компонент systemd-resolved. Он получает DNS-серверы из статической конфигурации systemd-networkd, DHCP и, в некоторых профилях, настроек уровня системы. Итоговый список нужно смотреть на работающем экземпляре, а не предполагать по файлу /etc/resolv.conf.

Состояние DNS

systemctl status systemd-resolved --no-pager
resolvectl status
resolvectl dns
resolvectl domain
ls -l /etc/resolv.conf
cat /etc/resolv.conf

Запись nameserver 127.0.0.53 указывает на локальный stub-resolver systemd и не означает, что внешний DNS-сервер имеет адрес 127.0.0.53. Реальные серверы отображаются через resolvectl.

Установка DNS на конкретном интерфейсе

В /etc/systemd/network/10-ens3.network добавьте (или измените) значения в [Network]:

[Network]
DHCP=ipv4
DNS=192.0.2.53
DNS=192.0.2.54
Domains=example.test

Этот фрагмент не является полным файлом: сохраните действующую секцию [Match] и остальные сетевые параметры. DNS-адреса и домен условные; используйте свою инфраструктуру.

При использовании DHCP уточните, должны ли приниматься DNS-серверы DHCP. Это задаётся в секции [DHCPv4]:

[DHCPv4]
UseDNS=no

Включайте UseDNS=no только если вы осознанно переходите на ручные DNS-серверы. Иначе сервер может перестать разрешать имена в сетях, где DNS предоставляется исключительно DHCP.

Применение — через консоль или при гарантированном резервном доступе:

sudo networkctl reload
sudo networkctl reconfigure ens3
resolvectl status ens3

Проверка разрешения имён

resolvectl query niceos.ru
getent ahostsv4 niceos.ru
getent ahostsv6 niceos.ru

resolvectl query проверяет путь через resolved; getent — путь разрешения имён в системной библиотеке с учётом nsswitch.conf. Они могут давать разный результат, если NSS настроен не на использование resolved.

Системные настройки

Файл /etc/systemd/resolved.conf содержит глобальные настройки. Для собственных изменений удобны drop-in файлы под /etc/systemd/resolved.conf.d/, если эта схема подтверждена в установленном пакете. Не заменяйте /etc/resolv.conf вручную, не поняв, кто формирует его содержимое.

В SPEC systemd есть сборочные параметры DNS по умолчанию 77.88.8.8 и 77.88.8.1, а также включение возможности DNS-over-TLS. Это не доказывает, что в каждом облачном экземпляре используются именно эти серверы: DHCP и профиль интерфейса могут задавать свои DNS.

Типичные ошибки

Симптом Проверка Возможное объяснение
По IP соединение есть, по имени нет resolvectl status, getent неверный DNS либо ограничения OUTPUT
DNS виден, но запрос истекает iptables -L OUTPUT -n -v запрещены UDP/TCP 53 до выбранного DNS
В resolv.conf локальный адрес resolvectl status это нормальный stub-resolver
После перезагрузки DNS изменился networkctl status, cloud-init status DHCP/cloud-init восстановил настройки
Работает только часть доменов resolvectl domain маршрутизация DNS по доменам или поисковые суффиксы

Откат: верните исходный .network-профиль и перезагрузите сетевую конфигурацию. Для изменения resolved.conf верните прежнее значение, затем после проверки выполните systemctl restart systemd-resolved и повторите диагностику.