Jak wyłączyć systemd-resolved w Ubuntu?

87

Jak mogę wyłączyć systemd rozwiązany w Ubuntu 17.04?

Wyłączenie go za pomocą systemctl disablenie działało, usługa wydaje się być ponownie uruchomiona (przez Networkmanager?)

Bastian Voigt
źródło
10
systemd-resolved jest nie tylko duży, ale także psuje sposób działania rozdzielczości dns, nie zawsze próbując rozwiązać w kolejności określonej przez serwery dns w konfiguracji klienta. Gdy serwer nie rozpoznaje domeny, następny na liście jest przenoszony na górę (Poetter nazywa to „pamięcią”). Zobacz ten wątek, aby uzyskać szczegółowe informacje.
LifeBoy
7
omija także zasady iptables, co jest okropnym pomysłem.
Spongman

Odpowiedzi:

150

Ta metoda działa w wersjach Ubuntu 17.04 (Zesty), 17.10 (Artful), 18.04 (Bionic), 18.10 (Cosmic) i 19.04 (Disco):

Wyłącz i zatrzymaj usługę rozwiązaną przez system:

sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved

Następnie umieść następujący wiersz w [main]sekcji /etc/NetworkManager/NetworkManager.conf:

dns=default

Usuń dowiązanie symboliczne /etc/resolv.conf

rm /etc/resolv.conf

Uruchom ponownie NetworkManager

sudo systemctl restart NetworkManager

Należy również pamiętać, że wyłączenie systemd-resolvd może spowodować uszkodzenie rozpoznawania nazw w sieci VPN dla niektórych użytkowników. Zobacz ten błąd na starterze (Dzięki, Vincent).

Bastian Voigt
źródło
4
nie działa to na Ubuntu 17.04. Alsi, plik konfiguracyjny to /etc/NetworkManager/NetworkManager.conf. Rozpoznawanie nazw pęka, gdy robię powyższe. systemd-resolved jest do bani, ale teraz VPN VPN wcale nie działa poprawnie. Postęp błędów
Vincent Gerris
5
Myślę, że powinieneś dodać do powyższej odpowiedzi, że „apt-get install dnsmasq” powinno być zrobione po wyłączeniu systemd-resolved.
LifeBoy
5
@LifeBoy Nie używam dnsmasq. Po prostu nie używam żadnego lokalnego serwera nazw, nie widzę jego wartości.
Bastian Voigt
9
W przypadku Ubuntu 18.04 wystarczy uruchomić polecenia sudo systemctl disable systemd-resolved.service i sudo service systemd-resolved stop. To działało dla mnie.
Daniel Eagle,
12
Dziękuję Ci. SystemD rujnuje Linuksa, czyniąc go z czegoś niezawodnego i zrozumiałego na coś, co działa magicznie.
Forbesmyester
18

Niedawno uaktualniłem do (k) Ubuntu 17.04 i natknąłem się również na zmianę na systemd.

Myślę, że moja konfiguracja jest dość typowa, ponieważ w moim koncentratorze szerokopasmowym mam dostawcę DNS i jest to moje główne źródło informacji dla wszystkich urządzeń w mojej sieci (z których mam kilka).

W systemie jest trochę piękna, nie wszystko jest złe, ale to, co naprawdę złe, to dokumentacja, brak komunikacji od zespołu Ubuntu i gung-ho „zmieńmy to, mimo że psuje się wszystkim”.

Rozwiązaniem dla mnie po oderwaniu niektórych włosów było edytowanie /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

Po niezrozumieniu, dlaczego to nie zadziałało, zorientowałem się, że potrzebowałem również zmienić /etc/resolv.conf na ten dostarczony przez systemd. Nie dzieje się tak w przypadku instalacji „po wyjęciu z pudełka” (z nieznanych mi powodów).

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

Lokalny serwer DNS nie jest wtedy używany, a wszystkie żądania DNS są wysyłane do mojego koncentratora.

Myślę, że jest to znacznie lepsze rozwiązanie niż wycinanie i wprowadzanie innego rozwiązania, ponieważ systemd-resolv jest teraz domyślny.

Powiązanym problemem jest to, że plik /etc/nsswitch.conf jest neutralny.

Powinien brzmieć:

hosts: pliki mdns4_minimal dns [NOTFOUND = return] rozwiązać [! UNAVAIL = return] dns

Jest to myląca konfiguracja, ponieważ [NOTFOUND = return] oznacza, że ​​przetwarzanie się tam kończy. Wpisy po nim nigdy nie będą używane.

użytkownik2427436
źródło
1
A potem muszę zmienić adres routera w konfiguracji za każdym razem, gdy łączę się z nową siecią WIFI? Jesteś poważny? -1
Bastian Voigt
Nie zdawałem sobie sprawy, że wędrujesz z tym. Jeśli tak, pozostaw elementy konfiguracji skomentowane. Powinieneś dostać /etc/resolv.conf, który mówi: serwer nazw 8.8.8.8 serwer nazw 8.8.4.4
2427436
1
Nie sądzę, że konieczna jest edycja resolved.conf, jeśli poprawnie skonfigurowałeś netplan. tzn. netplan zapisuje poprawne wartości do pliku dowiązania symbolicznego ... PS SYSTEMD SUCKS!
g33kz0r
3

Jeśli masz problemy z wyciekiem z VPN i nie możesz dowiedzieć się, jak skonfigurować systemd (jak ja), możesz usunąć go w sposób opisany w pierwszej odpowiedzi, ale nie dodawaj dns=defaultwiersza, ponieważ aktywuje on serwer nazw 127.0 .0.1. Aby ustawić router jako dns, utwórz plik „ogon” w swoim /etc/resolvconf/resolv.conf.d/ folderze, dodając linięnameserser 192.168.1.1

zrób, ln -sf /var/run/resolved/resolv.conf /etc/resolv.confjeśli pomieszałeś z tym plikiem.

Yvain
źródło
1
Naprawdę? Dla mnie działa dokładnie tak, jak opisano w mojej odpowiedzi. Zdecydowanie nie używa serwera nazw 127.0.0.1. Myślę też, że nie jest zbyt przydatne, aby kodować adres IP twojego serwera nazw w pliku konfiguracyjnym. Przynajmniej dość często przełączam sieci Wi-Fi, a każde Wi-Fi ma inny serwer nazw
Bastian Voigt
tak „default” włącza 127.0.0.1 jako dns
Yvain