Как отключить systemd-разрешения в Ubuntu?

88

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

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

Бастиан Фойгт
источник
10
systemd-resolved не просто большой, он также нарушает работу DNS-решения, поскольку не всегда пытается разрешить в том порядке, в котором DNS-серверы указаны в конфигурации клиента. Когда сервер не разрешает домен, следующий в списке перемещается наверх (Poettering называет это «памятью»). Смотрите эту тему для деталей.
LifeBoy
7
это также обходит правила iptables, что является ужасной идеей.
Спонгман

Ответы:

152

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

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

sudo systemctl disable systemd-resolved
sudo 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 для некоторых пользователей. Смотрите эту ошибку на панели запуска (спасибо, Винсент).

Бастиан Фойгт
источник
4
похоже, это не работает в Ubuntu 17.04. Алси, файл конфигурации это /etc/NetworkManager/NetworkManager.conf. Разрешение имен нарушается, когда я делаю вышеупомянутое. systemd-resolved - отстой, так как теперь разрешение DNS VPN не работает для меня должным образом. Прогресс ошибки может быть найден здесь: bugs.launchpad.net/ubuntu/+source/systemd/+bug/1624317
Винсент
5
Я думаю, что вы должны добавить к приведенному выше ответу, что «apt-get install dnsmasq» следует выполнять после отключения systemd-resolved.
LifeBoy
5
@LifeBoy Я не использую dnsmasq. Я просто не использую какой-либо локальный сервер имен, не вижу значения этого.
Бастиан Фойгт
9
Для Ubuntu 18.04 все, что нужно, это запустить команды sudo systemctl disable systemd-resolved.service и sudo service systemd-resolved stop. Это сработало для меня.
Дэниел Игл
12
Спасибо. SystemD разрушает Linux, превращая его из чего-то надежного и понятного в нечто, что работает с помощью магии.
Forbesmyester
18

Я недавно обновился до (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::8844
Domains=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-запросы отправляются на мой HUB.

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

Связанная проблема, между прочим, заключается в том, что /etc/nsswitch.conf кастрирован.

Следует читать:

hosts: файлы mdns4_minimal dns [NOTFOUND = возвращение], разрешение [! UNAVAIL = возврат] днс

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

user2427436
источник
1
И тогда мне приходится менять адрес маршрутизатора в конфиге каждый раз, когда я подключаюсь к новому WIFI? Ты серьезно? -1
Бастиан Фойгт
Я не осознавал, что ты бродишь с ним. Если да, то оставьте пункты конфигурации закомментированными. Затем вы должны получить /etc/resolv.conf, в котором написано: nameserver 8.8.8.8
nameserver
1
Я не думаю, что необходимо редактировать resolved.conf, если вы правильно настроили netplan. то есть, netplan записывает правильные значения в символьный файл ... PS SYSTEMD сосет!
g33kz0r
3

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

делать, ln -sf /var/run/resolved/resolv.conf /etc/resolv.confесли вы испортили этот файл.

Yvain
источник
1
В самом деле? Для меня это работает именно так, как описано в моем ответе. Определенно не использовать nameserver 127.0.0.1. Я также думаю, что не очень удобно жестко задавать IP-адрес вашего сервера имен в конфигурационном файле. По крайней мере, я переключаю сети Wi-Fi довольно часто, и у каждого Wi-Fi свой
Bastian Voigt
да «по умолчанию» включает 127.0.0.1 как DNS
Yvain