Come disabilitare systemd risolto in Ubuntu?


88

Come posso disabilitare systemd-risolto in Ubuntu 17.04?

Disabilitandolo con systemctl disablenon ha funzionato, il servizio sembra essere riavviato (da Networkmanager?)


10
systemd-resolved non è solo grande, ma interrompe anche il funzionamento della risoluzione DNS non sempre tentando di risolvere nell'ordine in cui i server DNS sono specificati nella configurazione del client. Quando un server non risolve un dominio, il successivo nell'elenco viene spostato in alto (Poettering chiama quella "memoria"). Vedi questa discussione per i dettagli.
LifeBoy,

7
ignora anche le regole di iptables, che è una pessima idea.
Spongman,

Risposte:


152

Questo metodo funziona con le versioni di Ubuntu 17.04 (Zesty), 17.10 (Artful), 18.04 (Bionic), 18.10 (Cosmic) e 19.04 (Disco):

Disabilita e arresta il servizio risolto da systemd:

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

Quindi inserisci la seguente riga nella [main]sezione del tuo /etc/NetworkManager/NetworkManager.conf:

dns=default

Elimina il link simbolico /etc/resolv.conf

rm /etc/resolv.conf

Riavvia NetworkManager

sudo systemctl restart NetworkManager

Inoltre, tenere presente che la disabilitazione di systemd-resolvd potrebbe interrompere la risoluzione dei nomi nella VPN per alcuni utenti. Vedi questo bug sul launchpad (Grazie, Vincent).


4
questo non sembra funzionare su Ubuntu 17.04. Alsi, il file di configurazione è /etc/NetworkManager/NetworkManager.conf. La risoluzione dei nomi si interrompe quando faccio quanto sopra. systemd-resolved fa schifo alla grande, ora la risoluzione DNS VPN non funziona affatto per me. L'avanzamento del bug è disponibile qui: bugs.launchpad.net/ubuntu/+source/systemd/+bug/1624317
Vincent Gerris,

5
Penso che dovresti aggiungere alla risposta sopra che "apt-get install dnsmasq" dovrebbe essere fatto una volta che il sistema risolto è stato disabilitato.
LifeBoy,

5
@LifeBoy Non uso dnsmasq. Semplicemente non uso alcun nameserver locale, non ne vedo il valore.
Bastian Voigt,

9
Per Ubuntu 18.04, è sufficiente eseguire i comandi sudo systemctl disable systemd-resolved.service e sudo service systemd-resolved stop. Questo ha funzionato per me.
Daniel Eagle

12
Grazie. SystemD sta rovinando Linux, rendendolo da qualcosa di affidabile e comprensibile a qualcosa che funziona tramite la magia.
Forbesmyester,

18

Di recente ho eseguito l'aggiornamento a (k) Ubuntu 17.04 e mi sono anche imbattuto nella modifica a systemd.

La mia configurazione è abbastanza tipica, credo, in quanto ho un provider DNS nel mio HUB a banda larga e questa è la mia principale fonte di informazioni per tutti i dispositivi della mia rete (di cui ne ho alcuni).

C'è un po 'di bellezza in systemd, non è tutto negativo ma ciò che è veramente negativo è la documentazione, la mancanza di comunicazione da parte del team di Ubuntu e la mentalità del gung-ho "cambiamola nonostante si rompa per tutti".

La soluzione per me dopo aver strappato i capelli era modificare /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

Dopo non aver capito perché questo non avrebbe funzionato, ho capito che ciò che era necessario era passare da /etc/resolv.conf a quello fornito da systemd. Questo non è il caso di un'installazione immediata (per motivi a me sconosciuti).

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

Il server DNS locale non viene quindi utilizzato e tutte le richieste DNS vengono inviate al mio HUB.

Penso che questa sia una soluzione molto migliore rispetto al tagliare e inserire qualche altra soluzione poiché systemd-resolv è ora l'impostazione predefinita in poi.

Un problema correlato è che /etc/nsswitch.conf è castrato.

Dovrebbe leggere:

host: file mdns4_minimal dns [NOTFOUND = return] risolve [! UNAVAIL = return] dns

Questa è una configurazione confusa poiché [NOTFOUND = return] significa che l'elaborazione termina lì. Le voci successive non verranno mai utilizzate.


1
E poi devo cambiare l'indirizzo del router nella configurazione ogni volta che mi collego a un nuovo WIFI? Sei serio? -1
Bastian Voigt,

Non mi ero reso conto che tu stessi facendo il roaming. In tal caso, lasciare gli elementi di configurazione commentati. Dovresti quindi ottenere un file /etc/resolv.conf che dice: nameserver 8.8.8.8 nameserver 8.8.4.4
user2427436

1
Non penso che sia necessario modificare resolved.conf se si è configurato correttamente netplan. vale a dire, netplan scrive i valori corretti nel file con collegamento simbolico ... PS SYSTEMD SUCKS!
g33kz0r

3

Se hai problemi di perdite con la tua VPN e non riesci a capire come impostare systemd (come me) puoi rimuoverlo nel modo descritto nella prima risposta ma non aggiungere la dns=defaultriga perché attiverà il nameserver 127.0 .0.1. Per impostare il router come DNS, creare il file "tail" nella /etc/resolvconf/resolv.conf.d/ cartella aggiungendo la lineanameserser 192.168.1.1

fare ln -sf /var/run/resolved/resolv.conf /etc/resolv.confse hai incasinato questo file.


1
Veramente? Per me funziona esattamente come descritto nella mia risposta. Sicuramente non usando nameserver 127.0.0.1. Penso anche che non sia molto utile codificare l'IP del tuo nameserver in un file di configurazione. Almeno cambio reti WiFi abbastanza spesso e ogni wifi ha un nameserver diverso
Bastian Voigt,

si 'default' abilita 127.0.0.1 come dns
Yvain
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.