nameserver 127.0.1.1 in resolv.conf non andrà via!


60

Ho letto che avrei dovuto nameserver 127.0.1.1nel mio /etc/resolv.conffile solo se la mia macchina ha un proprio server DNS. Dal momento che non lo fa, averlo causa problemi. Ma non importa cosa faccio, non posso liberarmene!

Ecco le cose che ho fatto finora:

  1. Aggiunta nameserver 192.168.1.3al /etc/resolvconf/resolv.conf.d/basefile. (192.168.1.3 è il DNS della nostra rete).
  2. Esecuzione: sudo resolvconf --enable-updates.
  3. Esecuzione: sudo resolvconf -u.
  4. In esecuzione: sudo service network-manager restart(solo per essere sicuro).

Eppure quando apro il /etc/resolv.conffile dice nameserver 127.0.1.1:! Qualcuno ha idea di cosa non va?

Si prega di notare che in realtà è 127.0.1.1! E non ho idea del perché non lo sia 127.0.0.1!

Anche quando aggiorno /etc/resolv.confmanualmente e lo cambio in qualcos'altro, lo sudo resolvconf -uripristinerò su 127.0.1.1! Da dove viene questo indirizzo?

Risposte:


100

NetworkManager è il programma che (tramite l'utilità resolvconf) inserisce indirizzo 127.0.1.1in resolv.conf. NM inserisce quell'indirizzo se solo se è configurato per avviare un'istanza del programma dnsmasq per fungere da server dei nomi di inoltro locale. Quell'istanza dnsmasq è in attesa di query all'indirizzo 127.0.1.1.

Se non si desidera utilizzare un server dei nomi di inoltro locale, configurare NetworkManager per non avviare un'istanza di dnsmasq e non inserire tale indirizzo. Nel /etc/NetworkManager/NetworkManager.confcommento fuori lineadns=dnsmasq

sudo nano /etc/NetworkManager/NetworkManager.conf

[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq

e riavviare il servizio NetworkManager.

sudo service network-manager restart

In questa modalità, NetworkManager si aggiorna /etc/resolv.conf(sempre tramite resolvconf) per includere gli indirizzi dei nameserver che NetworkManager ha per le connessioni attive.

Se si desidera disabilitare il meccanismo resolvconf per l'aggiornamento di resolv.conf e utilizzare semplicemente un file resolv.conf statico, procedere come segue.

sudo rm -f /etc/resolv.conf  # Delete the symbolic link
sudo nano /etc/resolv.conf   # Create static file

# Content of static resolv.conf
nameserver 8.8.4.4
nameserver 8.8.8.8

Ho 3 DNS e la query non raggiunge mai il 3 se disabilito dnsmasq, qualche consiglio? Voglio interrogare Google, quindi interrogare il DNS Intranet. Grazie
JorgeeFG

3
restart network-managernon funziona su Xenial in quanto utilizza systemd anziché upstart. provaresystemctl restart network-manager
Matthias Weiler il

La mia domanda è: il programma dnsmasq chiederà quale server DNS? chiederà al server DNS del DHCP la query dell'indirizzo IP dell'host?
Orologio ZHONG

11

È possibile che resolvconf sia configurato in modo errato. Ciò è particolarmente probabile se stai giocando con i suoi file di configurazione senza davvero capire come funzionano resolvconf e NetworkManager.

Per informazioni di base, si prega di leggere la documentazione resolvconf e il post sul blog di Stéphane Graber.

https://www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/

Prima di tutto dovresti sapere che sia Ubuntu Desktop che Ubuntu Server per impostazione predefinita hanno resolvconf installato e attivato. Resolvconf fornisce un framework per l'aggiornamento dinamico del file /etc/resolv.conf in modo ordinato e reversibile.

Secondo, dovresti sapere che Ubuntu Desktop di default ha NetworkManager installato e attivato. Per impostazione predefinita NetworkManager avvia un'istanza di dnsmasq per fungere da nameserver di inoltro locale. Questa istanza dnsmasq controllata da NetworkManager ascolta le query in 127.0.1.1. Quando NetworkManager avvia l'istanza dnsmasq indica a resolvconf di inserire l'indirizzo 127.0.1.1in resolv.conf. Come menzionato in un'altra risposta, se si configura NetworkManager per non avviare un'istanza di nameserver di inoltro locale, non avvierà un nameserver di inoltro locale e non verrà indicato a resolvconf di inserire l'indirizzo 127.0.1.1in resolv.conf.

Questa configurazione predefinita funziona correttamente, quindi a meno che la situazione non sia speciale, è necessario ripristinare la configurazione predefinita.

Per ripristinare la configurazione predefinita, accertarsi che

  • /etc/resolvconf/resolv.conf.d/head contiene solo il testo dell'intestazione resolvconf costituito da due righe che iniziano con un #carattere
  • /etc/resolvconf/resolv.conf.d/base è un file vuoto
  • /etc/resolvconf/resolv.conf.d/tail è un file vuoto
  • /etc/resolv.conf è un collegamento simbolico con contenuto ../run/resolvconf/resolv.conf

Per ottenere ciò, eseguire i seguenti comandi.

sudo su
dpkg-reconfigure resolvconf   # And answer `Yes` to agree to dynamic updates
cd /etc/resolvconf/resolv.conf.d
echo '# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN' > head
rm -f base tail original
:> base
:> tail

La configurazione originale di NetworkManager deve avere

[main]
...
dns=dnsmasq
...

in /etc/NetworkManager/NetworkManager.conf. È una scelta ragionevole disabilitare il server dei nomi di inoltro locale controllato da NetworkManager commentando la dns=dnsmasqriga.

[main]
...
#dns=dnsmasq
...

Dopo aver fatto tutto ciò, è consigliabile riavviare la macchina per cancellare i record di informazioni del nameserver non aggiornati.

sudo reboot

1

Nel mio caso non c'era alcuna dns=dnsmasqriga nel /etc/NetworkManager/NetworkManager.conffile ed /etc/resolv.confera ancora sovrascritto da Network Manager per avere solonameserver 127.0.1.1

La correzione consisteva nel ripristinare un collegamento simbolico per l'aggiornamento corretto:

sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf
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.