nameserver 127.0.1.1 in resolv.conf non andrà via!

54

Ho letto che dovrei avere nameserver 127.0.1.1 nel mio file /etc/resolv.conf solo se la mia macchina ha il proprio server DNS. Dal momento che non lo fa, averlo causa problemi. Ma non importa quello che faccio, non posso liberarmene!

Ecco le cose che ho fatto finora:

  1. Aggiunta di nameserver 192.168.1.3 a /etc/resolvconf/resolv.conf.d/base file. (192.168.1.3 è il DNS della nostra rete).
  2. In esecuzione: sudo resolvconf --enable-updates .
  3. In esecuzione: sudo resolvconf -u .
  4. In esecuzione: sudo service network-manager restart (tanto per essere sicuri).

Tuttavia quando apro il file /etc/resolv.conf , dice: nameserver 127.0.1.1 ! Qualcuno ha idea di cosa c'è che non va?

Si noti che in realtà è 127.0.1.1 ! E non ho idea del perché non sia 127.0.0.1 !

Anche quando aggiorno manualmente /etc/resolv.conf e lo cambio in qualcos'altro, sudo resolvconf -u tornerà a 127.0.1.1 ! Da dove viene questo indirizzo?

    
posta Mehran 25.05.2015 - 08:38

3 risposte

92

NetworkManager è il programma che (tramite l'utilità resolvconf) inserisce l'indirizzo 127.0.1.1 in 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. Quella istanza di dnsmasq ascolta le query all'indirizzo 127.0.1.1.

Se non si desidera utilizzare un server dei nomi di inoltro locale, configurare NetworkManager in modo che non avvii un'istanza di dnsmasq e non inserisca tale indirizzo. In /etc/NetworkManager/NetworkManager.conf commenta la riga dns=dnsmasq

sudo nano /etc/NetworkManager/NetworkManager.conf

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

e riavvia il servizio NetworkManager.

sudo service network-manager restart

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

Se si desidera disattivare il meccanismo resolvconf per l'aggiornamento di resolv.conf e utilizzare solo un file resolv.conf statico, effettuare le seguenti operazioni.

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
    
risposta data 2707974 25.05.2015 - 08:51
11

È possibile che resolvconf non sia configurato correttamente. Questo è particolarmente probabile se hai giocato con i suoi file di configurazione senza capire veramente come funzionano resolvconf e NetworkManager.

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

link

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

In secondo luogo dovresti sapere che Ubuntu Desktop di default ha NetworkManager installato e attivato. Per impostazione predefinita, NetworkManager avvia un'istanza di dnsmasq per fungere da server dei nomi di inoltro locale. Questa istanza di dnsmasq controllata da NetworkManager ascolta le query su 127.0.1.1. Quando NetworkManager avvia l'istanza dnsmasq, dice a resolvconf di inserire l'indirizzo 127.0.1.1 in resolv.conf. Come menzionato in un'altra risposta, se si configura NetworkManager per non avviare un'istanza server dei nomi di inoltro locale, allora non avvierà un server di inoltro locale e non dirà a resolvconf di inserire l'indirizzo 127.0.1.1 in resolv.conf.

Questa configurazione predefinita funziona correttamente, quindi a meno che la tua situazione sia speciale, devi ripristinare la configurazione predefinita.

Per ripristinare la configurazione predefinita, fare in modo che

  • /etc/resolvconf/resolv.conf.d/head contiene solo il testo dell'intestazione resolvconf composto 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 è avere

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

in /etc/NetworkManager/NetworkManager.conf. È una scelta ragionevole disabilitare il nameserver di inoltro locale controllato da NetworkManager commentando la riga dns=dnsmasq .

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

Dopo aver fatto tutto ciò, è consigliabile riavviare la macchina per cancellare i record delle informazioni del server dei nomi stantio.

sudo reboot
    
risposta data jdthood 26.05.2015 - 09:52
1

Nel mio caso non c'era alcuna riga dns=dnsmasq in /etc/NetworkManager/NetworkManager.conf file e /etc/resolv.conf era ancora sovrascritta da Network Manager per avere solo nameserver 127.0.1.1

La correzione era di ripristinare un collegamento simbolico per un aggiornamento corretto:

sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf
    
risposta data Valery Markov 12.04.2018 - 07:24

Leggi altre domande sui tag