Devo modificare il mio file resolv.conf per correggere un problema DNS errato?


35

Ho il problema che la mia macchina Ubuntu utilizza il server DNS sbagliato. Per qualche motivo la macchina richiede localhostinformazioni DNS.

Ho aggiunto il server DNS nella GUI delle impostazioni di rete, ma /etc/resolv.confcontiene ancora 127.0.0.1come indirizzo del server DNS. Ora, ho pensato di poter semplicemente modificare il file da solo, ma dice esplicitamente che non dovrei modificare il file a mano.

Ora, poiché la GUI delle impostazioni di rete non ha generato il file con le giuste impostazioni, come posso generare un nuovo resolv.conffile da solo?


1
Se stai usando Ubuntu Server 12.04 LTS, fai un grande favore e modifica /etc/resolvconf/resolv.conf.d/head direttamente come vuoi che il tuo resolv.conf legacy appaia. Non ho avuto nient'altro che problemi risolutivi fino a quando non l'ho forzato brutalmente.

Risposte:


40

Ciò che nessuna delle risposte postate finora indirizza è l'aspetto che l'interrogante non riesce a capire che avere nameserver 127.0.0.1in /etc/resolv.confè corretto, supponendo che un server dei nomi locale sia in esecuzione. E in Ubuntu 12.04 Desktop esiste, per impostazione predefinita, un server dei nomi locale in esecuzione, ovvero un dnsmasqprocesso controllato da NetworkManager che ascolta 127.0.0.1. In Ubuntu 12.10 l'indirizzo di ascolto è stato modificato in 127.0.1.1.

Quindi la soluzione è non apportare modifiche a resolv.conf. È corretto, supponendo che l'interrogante voglia utilizzare il nameserver locale.

Se il servizio dei nomi non funziona, al server dei nomi locale non vengono forniti gli indirizzi di inoltro corretti o si verificano altri problemi di rete.

L'interrogatore ha provato a utilizzare la "GUI delle impostazioni di rete" per "generare il file con le giuste impostazioni" e questo non ha funzionato. Non so esattamente cosa significhi, ma ecco il modo giusto per inserire gli indirizzi dei nameserver in modo che finiscano resolv.confal momento giusto. Presumo che l'interrogatore stia utilizzando NetworkManagere non ifupconfigurare le interfacce.

Molto spesso le interfacce sono configurate utilizzando il protocollo DHCP. In tal caso, non è necessario configurare nulla sul sistema locale. Il server DHCP è a conoscenza dell'indirizzo del nameserver che i suoi client dovrebbero usare e invia queste informazioni al client DHCP, che le invia a NetworkManager, che le invia a resolvconf, in cui inserisce le informazioni resolv.conf. Quindi, in questo caso, potrebbe essere necessario configurare il server DHCP.

Se l'interfaccia di rete sul computer locale è configurata staticamente, gli indirizzi dei nameserver corretti devono essere inseriti in NetworkManager, ad esempio l'indicatore di rete | Modifica connessioni ... | Wireless | myconnection | Modifica ... | Impostazioni IPv4 | Server DNS aggiuntivi.

È possibile che il nameserver locale non funzioni correttamente. In tal caso l'interrogatore dovrebbe modificare/etc/NetworkManager/NetworkManager.conf

sudo gedit /etc/NetworkManager/NetworkManager.conf

e commentare la linea

dns=dnsmasq

nella sezione "[principale]". Per commentare la riga, inserire #a all'inizio della riga, quindi salvare il file. Quindi riavviare il gestore di rete.

sudo restart network-manager

Successivamente, verranno inseriti gli indirizzi dei nameserver non locali resolv.confanziché l'indirizzo 127. *.

Se l'interrogatore utilizza ifupanziché NetworkManager per configurare le interfacce di rete, la risposta di jmartin2279 è corretta: è necessario aggiungere gli indirizzi dei nameserver a / etc / network / interfaces nel modo descritto da jmartin2279.

Contrariamente a quanto alcuni altre risposte consigliano, in generale, si dovrebbe non aggiungere nameserver, domaino searchle opzioni per i file in /etc/resolvconf/resolv.conf.d/. Vedi i miei commenti su quelle risposte.


1
"Il server DHCP sa quale indirizzo del nameserver i suoi client dovrebbero usare" - Tranne quando non si ha alcun controllo sul server DHCP (si pensi agli hotspot WiFi pubblici) e si desidera sovrascrivere il nameserver in uso ... Impostazione della stessa configurazione su una connessione base - ripetutamente per ogni hotspot WiFi a cui ti connetti - non è la soluzione.
Teoh Han Hui,

Sembra che abbia bisogno di eseguire dhclientper i cambiamenti (che le nameserverlinee) finalmente arrivano etc/resolv.conf. Sto eseguendo un live personalizzato di Xubuntu 14.04 (forse questo è il motivo).
Sopalajo de Arrierez,

Quali potrebbero essere gli svantaggi della disabilitazione di DNSMasq, jdthood? Ovviamente, la risoluzione dei nomi e Internet sembrano funzionare bene dopo averlo fatto.
Sopalajo de Arrierez,

Vedi bugs.launchpad.net/ubuntu/+source/dnsmasq/+bug/1003842 , ad esempio il mio commento # 60.
jdthood,

Il mio resolv.conf continua a cambiare 127.0.0.1nonostante il mio gestore di rete abbia altri namerserver + dnsmasq commentato + riavviato + dnsmasq ucciso (come ancora inizia) + rete riavviata: /
alcuni utenti il

17

Se stai usando ifup per configurare staticamente l'interfaccia, puoi aggiungerla al file / etc / network / interfaces.

Apri un terminale e digita:

sudo gedit /etc/network/interface*

Dovresti vedere qualcosa del tipo:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Modifica in:

auto eth0
iface eth1 inet static
address 192.168.1.10 
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8

usando le tue informazioni di rete. questo ti permetterà di impostare il DNS. puoi utilizzare più server DNS qui:

dns-nameservers 8.8.8.8 8.8.4.4

Dopo aver fatto questo, corri

ifdown eth0
ifup eth0

Se è il tuo caso, questa è la soluzione: "Se stai usando ifup per configurare l'interfaccia in modo statico ...."
angelcervera

Hai mai provato questo? ifdown: interface eth0 not configured
Cerin,

3
se sei connesso tramite ssh non puoi usare ifdown / ifup. invece usasudo /etc/init.d/networking restart
TD_Nijboer

11

In Ubuntu 12.04 è cambiata la gestione di resolv.conf.

Se si desidera aggiungere i propri indirizzi dei nameserver, modificare il file /etc/resolvconf/resolv.conf.d/ head

sudo nano /etc/resolvconf/resolv.conf.d/head

e aggiungi qui il tuo nameserver (ad es. Google open dns)

nameserver 8.8.8.8

salvare il file ed eseguirlo

sudo resolvconf -u

Nessun riavvio o altro. Forse dovrai riavviare il gestore della rete

sudo service network-manager restart

Fatto.

Puoi provarlo con il comando

nslookup www.google.com

Il risultato deve essere simile a

Server: 8.8.8.8
Address: 8.8.8.8#53

4
L'aggiunta di una riga "nameserver" a /etc/resolvconf/resolv.conf.d/head può funzionare come un trucco rapido ma non è la soluzione corretta a nessun problema. Ciò consente al risolutore di utilizzare l'indirizzo del nameserver in ogni circostanza, mentre i nameserver da utilizzare dipendono dalle circostanze. Ad esempio, se si è connessi a una LAN (forse tramite VPN), di solito si desidera utilizzare i server dei nomi LAN per poter risolvere i nomi privati ​​sulla LAN. E nel presente caso il sistema sembra eseguire un nameserver di memorizzazione nella cache locale, ma l'aggiunta di "nameserver 8.8.8.8" lo ignora.
jdthood,

@jdthood - Hai segnalato un problema. Vuoi fornire una soluzione?
TJ Biddle,

@TJ Ho già pubblicato una risposta alla domanda principale ("Come posso modificare il mio file resolv.conf?") Se è questo che intendi.
jdthood,

1
Per favore, non raccomandare questo. Al molto superiore del file, "Non modificare questo file a mano - le modifiche saranno sovrascritti".
Cerin,

Vorrei sottolineare che la modifica di /etc/resolv.conf sovrascrive manualmente le modifiche al riavvio, tuttavia, la modifica di /etc/resolvconf/resolv.conf.d/head NON sovrascrive manualmente le modifiche al riavvio, ma probabilmente lo fa al riavvio installazione di resolvconf che è probabilmente il motivo per cui è presente l'avviso.
Ken,

1

Per aggiungere più voci a /etc/resolv.conf, crea un /etc/resolvconf/resolv.conf.d/tailfile e aggiungile lì.

Ma se /etc/resolv.confcontiene 127.0.0.1, l'aggiunta di voci a /etc/resolvconf/resolv.conf.d/tailnon cambierà nulla. È necessario impostare staticamente gli indirizzi dei server DNS in NetworkManager che li invierà a dnsmasq che è in ascolto 127.0.0.1.

La configurazione DNS per un'interfaccia statica dovrebbe andare come " dns-nameservers", " dns-search" e " dns-domain" voci aggiunte alla stanza iface appropriata in/etc/network/interfaces

Leggi questo per maggiori informazioni.

`Inoltre:

Puoi installare uno strumento gui chiamato gnome-network-adminche imposterà il tuo DNS. Provalo :

sudo apt-get install gnome-network-admin

3
(1) No, non aggiungere le opzioni "nameserver" a /etc/resolvconf/resolv.conf.d/tail. Questo è inefficace (perché altre opzioni di "nameserver" hanno la precedenza) e non ottimale (perché è una configurazione statica mentre la configurazione dovrebbe riflettere le circostanze della rete). (2) No, non usare gnome-network-admin. Non funziona correttamente con resolvconf. Vedi bug # 60518 ( bugs.launchpad.net/ubuntu/+source/gnome-system-tools/+bug/60518 ).
jdthood,
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.