systemd-resolved не запрашивает DNS-сервер для локального домена

12

После обновления до 17.04 я больше не могу разрешать адреса в своей локальной сети (silvesternet.local). Я получаю следующий ответ:

$ systemd-resolve edgerouter
edgerouter: resolve call failed: No appropriate name servers or networks for name found

В журнале есть только отчеты о тайм-аутах для транзакции, связанной с этим поиском.

Я использовал Wireshark, чтобы прослушать сетевой трафик, и кажется, что он даже не пытается найти имя. ДНС трафика нет вообще. Поиск другого внешнего домена работает просто отлично.

Многие проблемы, связанные с той же темой, упоминают изменение nsswitch.conf, но это, похоже, ничего не решает. Мои текущие настройки:

hosts:          files mdns4_minimal dns [NOTFOUND=return] resolve [!UNAVAIL=return] mdns4
Роб ван дер Мост
источник
1
Ты бегал sudo apt update && sudo apt full-upgrade? Исправлены ошибки в образе релиза ...
Zanna
если вы используете systemd-networkdдля конфигурирования интерфейсов, вы можете добавить UseDomains=trueв [DHCP]разделе ваших .networkфайлов: wiki.archlinux.org/index.php/systemd-networkd#.5BDHCP.5D
донкихотский
Действительно, близко с доменом. На самом деле это была ошибка в прошивке edgerouter, которая не устанавливала домен в ответе dhcp.
Роб ван дер Мост

Ответы:

10

Я считаю, что это по замыслу.

Ubuntu 17.04 переключился на systemd-resolved для разрешения имен и использует только LLMNR (многоадресный поиск имен) для разрешения имен по одной метке. Смотрите эту ссылку для получения подробной информации: https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html

Для обоснования этого решения проверьте ответ от автора в этом сообщении об ошибке: https://github.com/systemd/systemd/issues/2514

UPD: эту проблему можно обойти, используя домен для локальной сети. Если сетевой интерфейс настроен (либо вручную, либо по DHCP) на использование домена поиска, то systemd-resolved добавит этот домен к однокомпонентным именам, а затем выполнит их поиск по одноадресной DNS.

Очевидно, что локальный DNS-сервер должен быть перенастроен для распознавания этих доменов. В случае dnsmasq, который читает локальные пары хост-IP из / etc / hosts, это можно сделать, добавив следующие инструкции в dnsmasq.conf:

domain=mydomain.net
local=/mydomain.net/
expand-hosts

UPD2: Или вы можете просто вернуться к dnsmasq, как описано здесь /ubuntu//a/911432/692094

МОГ-запад
источник
И еще одна страница с ошибками с некоторыми пояснениями: github.com/systemd/systemd/issues/4821
ish-west
Доменное имя было проблемой здесь. На самом деле это также было вызвано ошибкой в ​​прошивке edgerouter. Параметр domain-name из конфигурации не был правильно сохранен в конфигурации dhcp. Таким образом, клиенты не получили домен для поиска.
Роб ван дер Мост
8

Я получил ту же проблему на Ubuntu 18.04, которая также использует systemd-resolved для DNS. Его конфигурация по умолчанию не разрешает имена хостов с одной меткой или имена доменов .local по DNS, но по LLMNR или mDNS соответственно.

Чтобы разрешить локальные однокомпонентные имена хостов или имена доменов .local в DNS, я включил 3-й из «четырех режимов обработки /etc/resolv.conf», описанных на странице man для systemd-resolved.service :

sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

Аналогичный ответ был дан здесь . И снова, по причинам, лежащим в основе дефолта, см. Ответ поэтеринга в этом сообщении об ошибке .

Матс Линден
источник
2

После обновления до 18.04 у меня работало то, что я настроил файл /etc/systemd/resolved.conf, изменив параметр Domains на домен (локальный или как в моем случае mydomain.local). Я также изменил параметр DNS, но мне показалось, что он не актуален, но я упоминаю об этом на всякий случай, если это не так. Для получения дополнительной информации перейдите по ссылке https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html .

Кроме того, я изменил конфигурацию avahi (/etc/avahi/avahi-daemon.conf), чтобы изменить параметр домена в разделе сервера с локального (по умолчанию) на что-то другое, как указали некоторые люди на этом форуме.

С упомянутыми изменениями я могу связаться с машинами, используя имена без точек, например, при пинге с моим компьютером компьютер успешно подключен. Однако, если я отправляю ping на mycomputer.mydomain.local, он не работает, полное доменное имя не разрешается должным образом.

Надеясь, что это помогает в некоторых случаях или приводит к более общему решению.

Джордж
источник
0

Я столкнулся с этой проблемой из-за неправильной настройки nsswitch.conf. Так как 12.04следующая строка работала как положено. Имена хостов без домена разрешаются успешно.

Но новая 17.04версия (а также версия 16.10) ubuntu со старым шаблоном для настройки системы nss не работает, как раньше.

Неправильная версия hosts, из старых версий Ubuntu: hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4

Успешная рабочая версия hosts, например от 17.04: hosts: files mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns

vskubriev
источник