DNS impostato su 127.0.0.53 di systemd - come modificare in modo permanente?


38

Ho recentemente aggiornato alla 17.10. Quando provo a navigare in un sito Web o eseguo il ping di un dominio, non riesce a dire che il sito non può essere risolto.

network-adminmostra il contenuto di /etc/resolv.confesserenameserver: 127.0.0.53

Se lo cambio a 8.8.8.8 o 208.67.222.222, allora tutto funziona. Fino al riavvio.

Al riavvio o al riavvio, il nameserver viene reimpostato su 127.0.0.53.

Come posso impostare permanentemente il nameserver su qualcosa che funzioni?


Per i fan di systemd, se corro systemd-resolve --statusottengo

Link 3 (wlo1)
      Current Scopes: LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

Se seguo il consiglio a questa domanda, il DNS continua a reimpostarsi dopo il riavvio. Ubuntu 17.10 - Il DNS non riesce ancora a risolversi.


systemctl stop systemd-resolvede systemctl mask systemd-resolveddovrei fare il trucco :)
Shayan il

Risposte:


28

È possibile installare un pacchetto resolvconf, che modificherà il modo in cui /etc/resolv.confviene creato all'avvio del sistema.

sudo apt install resolvconf

È quindi possibile creare o modificare un file /etc/resolvconf/resolv.conf.d/tail. Se si inserisce in questo file una riga nameserver 8.8.8.8, questa riga verrà aggiunta alla fine /run/resolvconf/resolv.confall'avvio. /etc/resolv.confsarà ora un collegamento simbolico a questo file.


4
Questo funziona - grazie! Sai se c'è un modo per far funzionare 127.0.0.53 da solo?
Terence Eden,

1
Sono abbastanza nuovo su questo argomento. Ho appena cercato di eliminare i problemi di DNS durante l'attivazione / disattivazione di VPN in queste ultime settimane. Potresti provare sudo dpkg-reconfigure resolvconf. Ho provato di recente, ho cancellato il file tail e all'inizio sembra funzionare.
oscar1919

@TerenceEden se stai cercando di far funzionare 127.0.0.53 da solo (come dovrebbe), dai un'occhiata alla mia risposta: askubuntu.com/a/1083843/281191
intelfx

10

La soluzione corretta sarebbe quella di risolvere il sistema risolto invece di provare a curare l'emicrania con una ghigliottina.

È uno strumento piacevole, davvero, se usato correttamente.

A giudicare dalla tua systemd-resolve --statususcita ...

Link 3 (wlo1)
      Current Scopes: LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

... lo strumento di gestione della rete non passa la configurazione DNS per interfaccia a systemd-risolto.

Le versioni recenti di NetworkManager, ad esempio, lo farebbero automaticamente se /etc/resolv.confun link simbolico punta all'interno /run/systemd/resolveo verso /usr/lib/systemd/resolv.conf. In alternativa, le versioni recenti di systemd-resolved cercano di essere compatibili con la storica interfaccia resolvconf installando un resolvconfbinario che comunica con systemd-risolto.

Mentre sarebbe preferibile utilizzare una di queste due soluzioni, se stai cercando una soluzione rapida e sporca, puoi semplicemente configurare systemd-resolved per utilizzare i tuoi server DNS a livello globale:

$ cat /etc/systemd/resolved.conf
<...>
[Resolve]
DNS=8.8.8.8 8.8.4.4
<...>

Quindi riavviare systemd-resolved.serviceo riavviare.


Almeno per me questa risposta non funziona, usando Ubuntu 18.04, dopo aver cambiato la voce "DNS" continua a utilizzare 127.0.0.53
André M. Faria

1
@ AndréM.Faria scopri come funziona risolto. 127.0.0.53è l'indirizzo del risolutore di stub della cache locale. Inoltra le richieste DNS a qualsiasi server DNS upstream specificato.
intelfx

A volte sai qualcosa e lo ignori, sì, hai ragione.
André M. Faria,

1
Anche qui va notato che per impostazione predefinita systemd-resolvedmemorizza nella cache le risposte DNS. Mentre questo può essere utile a volte, può causare problemi in alcune situazioni. Scomponi la cache=yesriga nel file di configurazione nella risposta e impostala su no.
Quentin Skousen,

cosa provoca effettivamente /etc/resolve.conf(o realmente, a /run/resolvconf/resolv.confcui punta il primo) essere aggiornato? sarebbe bello sapere per i test, senza che sia richiesto un riavvio presunto. tutto quello che posso dire è che il riavvio systemd-resolved.servicenon sembra fare il trucco
bbarker il

8

Uso Lubuntu e Kubuntu 18.04. Sono stato in grado di superare il problema DNS in 2 passaggi:

Primo passo: installalo unbounde impostalo per sostituirlo systemd-resolvedcome mostrato da Grégoire C qui .

sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved
sudo systemctl enable unbound-resolvconf
sudo systemctl enable unbound

riavvio

Apri come root il file /etc/NetworkManager/NetworkManager.conf

( sudo leafpad /etc/NetworkManager/NetworkManager.confin Lubuntu 18.04 o in Kubuntu 18.04 SUDO_EDITOR=kate sudoedit /etc/NetworkManager/NetworkManager.conf)

e sotto [main]metti questa linea:

dns=unbound

riavviare di nuovo

Secondo passaggio: se dopo il riavvio il problema non viene ancora risolto, come nel mio caso, avviare il file manager come root, andare su /etc, eliminare resolv.confe crearne uno nuovo resolv.conf. Lascialo vuoto e riavvia il sistema operativo. Nel mio caso dopo questo riavvio il problema è scomparso.

In Kubuntu 18.04 non puoi avviare Dolphin come root, quindi puoi prima andare /etce aprire il terminale da lì, quindi digitare sudo sue premere Invio per usarlo come root e quindi eliminare resolv.confcon il comando rm resolv.conf. Quindi è possibile creare un nuovo file vuoto sul desktop, denominarlo resolv.confe aprire un terminale da lì. Utilizzare il sudo sucomando per accedere alla modalità root per il terminale e quindi copiare il nuovo resolv.confdal desktop /etccon il comando cp resolv.conf /etc.

Devo aggiungere che non ho provato a fare il secondo passo prima dell'installazione unbound, quindi la prossima volta lo farò, solo per vedere se sarà abbastanza o no.


Perché non modificarlo come root ed eliminare i contenuti?
Ballie

@Ballie L'ho provato all'inizio, ma non ha aiutato. Anche l'originale resolv.confdi è /etcstato mostrato come una sorta di scorciatoia, che non è normale, credo. Questo è il motivo per cui ho deciso di eliminarlo e ricrearlo creando un nuovo file vuoto e nominandolo resolv.conf. E ha funzionato. Per questo motivo ho scritto sopra che la prossima volta che dovrò reinstallare il sistema operativo, proverò a farlo prima, senza fare il "primo passo" - per vedere se sarebbe abbastanza. Ma l'originale resolv.confin /etcdeve essere rimosso e ricreato comunque - di questo sono sicuro.
Калоян Грънчаров

Ho appena disabilitato systemd-resolved.service e rimosso il collegamento di resolv.conf e ne ho creato uno manualmente, e ha funzionato!
André M. Faria,

8

lavorando all'interno del systemdparadigma aggiungere un DNS a un collegamento / dispositivo

usando Ubuntu 17.10+ aggiungi un *.networkfile:

sudo nano /lib/systemd/network/100-somecustom.network:

100-somecustom.network (100 può essere un numero qualsiasi per priorità e richiede l' .networkestensione del file):

[Match]
Name=wlo1 # the device name here

[Network] # add multiple DNS 
DNS=8.8.8.8
DNS=208.67.222.222

Quindi riavviare:

sudo service systemd-networkd restart

Guarda anche in:

netplan apply

Quindi controllare:

systemd-resolve --status wlo1

Dalla pagina informativa info systemd.network:

Inoltre /etc/systemd/network, le directory drop-in ".d" possono essere inserite nelle directory / lib / systemd / network o / run / systemd / network . I file drop-in in / etc hanno la precedenza su quelli in / run che a loro volta hanno la precedenza su quelli in / lib. I file drop-in in una di queste directory hanno la precedenza sul file netdev principale ovunque si trovino. (Naturalmente, poiché / run è temporaneo e / usr / lib è per i fornitori, è improbabile che i drop-in debbano essere utilizzati in uno di questi punti.)

Un altro approccio disabilita l' DNSStubListenerutilizzo per dnsmasq:

sudo nano /etc/systemd/resolved.conf:

#
DNSStubListener=false

relazionato:


Strano è che hai dichiarato che DNSStubListener = false, ma l'attuale configurazione commentata è DNSStubListener = yes, di solito l'inverso del valore "yes" è "no" e non "false" che in caso di "false" era di solito " vero".
André M. Faria,

La tua risposta per creare un file con estensione .network non ha funzionato.
André M. Faria,

2

Ecco come cambio il mio record DNS sulla configurazione dell'interfaccia.

$ vi /etc/netplan/50-cloud-init.yaml

Modifica gli indirizzi del server dei nomi, in precedenza era .4, quindi l'ho modificato in .3:

...
            nameservers:
                addresses:
                - 192.168.1.3
...

Salvare la configurazione e quindi applicare la configurazione:

$ sudo netplan apply

Successivamente riavviare il servizio resolvectl.

$ sudo systemctl restart systemd-resolved.service

Per le note: ho riavviato il server e le modifiche apportate sono ancora intatte. Uso il resolvctl dnscomando per verificare il record DNS.


Questa è in realtà la risposta corretta. Sono sorpreso che non sia quello accettato.
Toumal

0

Ho avuto alcuni problemi con NordVPN, quindi ho deciso di aggiungere a questo.

Risultati:
NordVPN imposta /run/systemd/resolve/resolv.confle impostazioni DNS durante la connessione.
NordVPN rimuove tutte le impostazioni DNS da /run/systemd/resolve/resolv.confquando si disconnette.
Questo fa sì che il server DNS non funzioni più (poiché non esiste un set).

Il sistema ha bisogno di un riavvio per riportarlo a qualsiasi cosa. Un riavvio standard del servizio ( sudo systemctl restart systemd-resolved.service) non funziona.

La soluzione per aggirare questo:

sudo apt install resolvconf

Vai su /etc/resolvconf/resolv.conf.d/

cd /etc/resolvconf/resolv.conf.d/
sudo nano tail

Aggiungi nameserver

nameserver 1.1.1.1
nameserver 1.0.0.1

Controllare i seguenti luoghi per i nameserver che avrebbero potuto essere impostati:

/run/resolvconf/interface/original.resolvconf
/run/resolvconf/interface/systemd-resolved
/etc/resolvconf/resolv.conf.d/tail
/etc/resolvconf/resolv.conf.d/head
/etc/systemd/resolved.conf
/run/systemd/resolve/resolv.conf
/run/systemd/resolve/stub-resolv.conf

Verifica quali server DNS vengono utilizzati con:

nslookup google.com

Server:         1.1.1.1
Address:        1.1.1.1#53

0

Forse un po 'in ritardo, ma ho riscontrato questo problema. Devo ammettere che ho configurato manualmente le mie impostazioni di rete tramite cli prima e non tramite il gestore di rete integrato. Corro Ubuntu 18.04.

Quindi, dopo aver disabilitato e quindi riattivato systemd.resolved.service, questo comportamento irregolare di perdita casuale della mia configurazione DNS è stato risolto per me.

systemctl disable systemd.resolved.service
reboot

dopo il riavvio:

systemctl enable systemd.resolved.service
reboot

Sono un utente Linux relativamente nuovo, quindi ci deve essere qualcuno che può spiegare come e perché potrebbe aver funzionato per me, ma vale la pena menzionare se può aiutare gli altri.


Sry per deludere, ma ci deve essere qualcosa che hai fatto nel mezzo che ha risolto il problema. Le operazioni che stai suggerendo qui possono lasciare il sistema solo com'era.
tishma,

-1

Quando si utilizza la risoluzione dei nomi dhcp funziona come previsto in Ubuntu. I problemi iniziano quando vuoi diventare statico. cat /etc/resolv.confmostrerà che yor dns è 127.0.0.53 e non quelli che hai nel /etc/netplan/.yamlfile. Per risolvere questo problema è necessario rimuovere il /etc/resolve.confcollegamento e crearne uno nuovo che punta a/run/resolve/resolve.conf


Per favore, modifica la tua risposta e correggi un po 'di formattazione ...
Yufenyuy Veyeh Dider

-2

Ciò ha richiesto un po 'di gioco. Dopo aver aggiornato l'impostazione, ho riavviato. Uso:

ln -s /run/resolvconf/resolv.conf /etc/resolv.conf

/etc/systemd/resolved.conf
DNS=8.8.8.8
Cache=no

System resolved failed
systemctl stop systemd-resolved
systemctl disable systemd-resolved

Quando commentare la "richiesta" per

# domain-name, domain-name-servers, domain-search, host-name,

Aggiungi questa linea al tuo /etc/dhcp/dhclient.conf:

 supersede domain-name "cwillenterprise.com";

Modifica il file di configurazione e aggiungi la voce. Ulteriori non sostituiranno.

Aggiungi voci a /etc/resolvconf/resolv.conf.d/tail

nameserver 8.8.8.8
search "cwillenterprise.com"

Esegui per implementare le modifiche

resolvconf -u

1
Benvenuto in Ask Ubuntu ! Si prega di modificare la risposta ad un uso formattazione del codice per il codice che deve essere inserito nel file o terminale. Non anteporre #ai "commenti" al codice, significa intestazione in Markdown. Controlla sempre l'anteprima del tuo post prima di inviarlo.
Melebio
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.