Как отключить systemd-resolved в Ubuntu?

Как я могу отключить systemd-resolved в Ubuntu 17.04?

Отключив его с помощью systemctl disable не сработало, служба, похоже, перезапущена (с помощью Networkmanager?)

Этот метод работает в версиях Ubuntu 17.04 (Zesty), 17.10 (Artful), 18.04 (Bionic), 18.10 (Cosmic), 19.04 (Disco) и 20.04 (Focal):

Отключите и остановите службу, разрешенную systemd:

sudo systemctl disable systemd-resolvedsudo systemctl stop systemd-resolved

Затем поместите следующую строку в [main] раздел вашего /etc/NetworkManager/NetworkManager.conf:

dns=default

Удалить символическую ссылку /etc/resolv.conf

rm /etc/resolv.conf

Перезапустите NetworkManager

sudo systemctl restart NetworkManager

Также имейте в виду, что отключение systemd-resolvd может привести к нарушению разрешения имен в VPN для некоторых пользователей. Видеть эта ошибка на панели запуска (Спасибо, Винсент).

Недавно я обновился до (k) Ubuntu 17.04, а также наткнулся на изменение systemd.

Я думаю, что моя настройка довольно типична, поскольку у меня есть DNS-провайдер в моем широкополосном концентраторе, и это мой основной источник информации для всех устройств в моей сети (которых у меня несколько).

В systemd есть некоторая красота, не все так плохо, но что действительно плохо, так это документация, отсутствие общения со стороны команды Ubuntu и фанатичный менталитет "давайте просто изменим это, несмотря на то, что это ломает для всех".

Решением для меня после того, как я вырвал несколько волос, было отредактировать /etc/systemd/resolved.conf:

[Resolve]DNS=192.168.1.254   # <-- change to your router address#FallbackDNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844Domains=lan         # <-- change to your localdomain name (maybe .local)#LLMNR=yes  <-- I dabbled with this for a while but it doesn't matter#DNSSEC=no#Cache=yes#DNSStubListener=udp

После того, как я не понял, почему это не сработает, я понял, что также необходимо переключить файл /etc/resolv.conf на файл, предоставленный systemd. Это не относится к готовой установке (по неизвестным мне причинам).

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

Затем локальный DNS-сервер не используется, и все DNS-запросы отправляются на мой концентратор.

Я думаю, что это гораздо лучшее решение, чем вырезать и вставить какое-то другое решение, поскольку systemd-resolv теперь используется по умолчанию.

Кстати, связанная с этим проблема заключается в том, что файл /etc/nsswitch.conf кастрирован.

Он должен гласить:

хосты: файлы mdns4_minimal dns [NOTFOUND=return] разрешить [!UNAVAIL=return] dns

Это сбивающая с толку конфигурация, поскольку [NOTFOUND=return] означает, что обработка на этом заканчивается. Записи после него никогда не будут использоваться.

Если вы используете Ubuntu 18.04 Server (или Ubuntu 20.04 Server), ни один из этих ответов не применим. Тот, который принадлежит пользователю 2427436, подходит ближе всего.

Проблема в том, что systemd-resolved является / запускает распознаватель заглушек, и мне просто нужно полностью отключить это (в соответствии с вопросом). Мне нужно это сделать, потому что Zimbra 8.8.15 (FOSS) поставляется со своим собственным встроенным распознавателем (несвязанным).

В моей ситуации я начинаю со стандартной (наивной) установки сервера 18.04 с минимальными опциями на голом металле (ну, на самом деле виртуальная машина).

итак, вот рецепт:

   vi /etc/systemd/resolved.conf     edit line #DNSStubListener=yes         to be DNSStubListener=no   systemctl stop systemd-resolved   systemctl status systemd-resolved   rm /etc/resolv.conf   reboot to test...

Вот как сейчас выглядит файл /etc/systemd/resolved.conf:

# See resolved.conf(5) for details[Resolve]#DNS=#FallbackDNS=#Domains=#LLMNR=no#MulticastDNS=no#DNSSEC=no#Cache=yes#DNSStubListener=yesDNSStubListener=no

это все, что для этого потребовалось.

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

Если у вас возникли проблемы с утечкой данных с вашим VPN и вы не можете понять, как настроить systemd (как и я), вы можете удалить его способом, описанным в первом ответе, но не добавляйте dns=default строка, потому что она активирует сервер имен 127.0.0.1.To установите маршрутизатор в качестве dns, создайте файл "tail" в вашем /etc/resolvconf/resolv.conf.d/папка, добавляющая строку nameserver 192.168.1.1

делать ln -sf /var/run/resolved/resolv.conf /etc/resolv.confесли бы вы что-то напутали с этим файлом.

Я чувствую себя вынужденным добавить этот отличный ответ, появляющийся на dupe, он охватывает случай, когда вам нужна минимальная настройка ifupdown + dhclient + resolvconf (да, это все еще возможно в 2021 году в Ubuntu Focal).

Этот вариант использования не рассматривается в других ответах. Возможно, нам следует стремиться предоставлять настройки, не разрешенные systemd, для большинства различных комбинаций, которые мы могли бы использовать в нашем сетевом стеке (на основе netplan, на основе networkmanager, wicd и так далее).

https://askubuntu.com/a/1336755/32178

systemd-resolved не просто большой, он также нарушает работу разрешения dns, не всегда пытаясь разрешить в том порядке, в котором dns-серверы указаны в конфигурации клиента. Когда сервер не разрешает домен, следующий в списке перемещается наверх (Поэтеринг называет это “памятью”). Смотрите эту тему для получения подробной информации.

это также обходит правила iptables, что является ужасной идеей.

@HaroldFischer у меня нет рекомендации. попробуйте сами: добавьте несколько правил iptables для перенаправления DNS-трафика (в моем случае я делал это для каждого пользователя), затем включите systemd-resolved и посмотрите, как он полностью игнорирует правила iptables. по крайней мере, так было ~ октябрь/2018. с тех пор я этого не пробовал.

@HaroldFischer без обид. у меня была похожая ситуация, я использовал iptables для условного перенаправления исходящего dns-трафика на разные серверы на основе локального идентификатора группы. я не помню точных заклинаний iptables (я думаю, что для этого использовал shorewall). в любом случае … я обновил свою ОС, и systemd-resolved был установлен, и правила iptables перестали работать - весь DNS-трафик отправлялся непосредственно на настроенный сервер в обход правил iptables.

@Spongman Не могли бы вы, пожалуйста, предоставить ссылку на переопределение или обход правил iptables с разрешением systemd? Кажется, я не могу найти в Google или DuckDuckGo ничего, что указывало бы на то, что это правда

@Spongman Спасибо, что обратился ко мне. Я не пытался быть грубым, просто приятно иметь рекомендацию. Насколько вам известно, только ли правила DNS iptables переопределяются systemd-resovled? Также краткий пример, чтобы убедиться, что я вас понимаю: допустим, я ввел правило iptable, которое блокирует доступ к 8.8.8.8; systemd-resovled настроен на использование Google DNS и с радостью игнорирует мое правило, запрещающее доступ к 8.8.8.8 - это то поведение, которое вы имеете в виду?

@Spongman Я имею в виду, что пользовательский фильтр “работает”, но все поступает от одного пользователя из-за того, что работает systemd-resolved (что означает, что вы не можете фильтровать для каждого пользователя) (Это не обходит iptables, но нарушает определенные типы правил (изменяя способ передачи трафика отправляется)) (Я не фанат systemd-resolved)

@Spongman С этой настройкой iptables, вероятно, “обходит” правила, поскольку пользователь отправляет запросы в systemd-resolved, и это отправляет фактические запросы со своими UID и GID (которые одинаковы для всех пользователей)

@GertvandenBerg нет, вы неправильно поняли. пользовательский фильтр не имеет значения. даже если не фильтровать правило iptables по пользователю, systemd-resolved был still не маршрутизирован через any правила iptables.

@GertvandenBerg я, кажется, помню, как пытался удалить пользовательский фильтр iptables, и DNS-трафик still не маршрутизировался через iptables. отключил systemd-resolved, и все начало работать нормально. я полагаю, что я даже отправил ошибку, которая была быстро закрыта “по замыслу”.