Qual è il modo corretto di modificare l'IP DNS?


56

Ho il sospetto che il server dei nomi fornito dal mio modem / router ADSL sia difettoso. Ogni volta che visito un sito Web per la prima volta in Ubuntu, la risoluzione del nome di dominio richiede almeno 15 secondi.

Per ovviare a questo problema, ho modificato la configurazione del nameserver /etc/resolv.confda 192.168.1.1 (il mio modem ADSL) a 8.8.8.8 (DNS primario di Google). Questo sembra risolvere il problema, ma sfortunatamente le mie modifiche /etc/resolv.confvengono sovrascritte da "NetworkManager" ad ogni avvio.

Qual è il modo corretto di configurare l'IP del server dei nomi in Ubuntu 10.4?

Risposte:


51

Se hai una tipica configurazione della connessione con il gestore della rete e DHCP, prova quanto segue:

  1. Fai clic con il tasto destro sull'icona del gestore di rete nel pannello e scegli "Modifica connessioni ..."
  2. Seleziona la tua connessione dalla scheda cablata o wireless, scegli "Modifica"
  3. (Immettere la password se la connessione è impostata come "disponibile per tutto il sistema")
  4. Scegli la scheda Impostazioni IPv4
  5. Passa al metodo "Solo indirizzi automatici (DHCP)"
  6. Immettere il nome del server desiderato nella casella "Server DNS aggiuntivi" e premere "Applica"

Questo dovrebbe fare il trucco.


1
Questo continua a funzionare in Ubuntu 12.04 e versioni successive, anche se NetworkManager ora utilizza resolvconf per gestire resolv.conf.
jdthood,

4
Se ti stai chiedendo dove finisce la configurazione, dai un'occhiata /etc/NetworkManager/system-connections/(avrai bisogno dei privilegi di amministratore per accedere a quei file di configurazione).
Lekensteyn,

2
Questo cambia solo DNS per la connessione corrente, ma c'è anche un modo per una modifica DNS globale ?
rubo77,

l'elenco è vuoto per me. cosa usa di default?
J. Taylor,

1
Funziona esattamente allo stesso modo sull'interfaccia terminale nmtuitra l'altro!
Granitosaurus,

30

Puoi cambiarli in questo modo.

Innanzitutto, fai clic sull'icona del gestore di rete nella barra dei menu e fai clic Edit Connections...sull'elemento.

inserisci qui la descrizione dell'immagine

Ora, passa alle schede "Wired" o "Wireless", a seconda di ciò che usi: uso il WiFi, quindi lo userò.

Seleziona il nome della tua rete e fai clic Edit...

Passare alla scheda IPv4, quindi cambiarlo solo dagli indirizzi DHCP automatici a quelli automatici (DHCP).

Inserisci l'indirizzo IP del tuo server DNS.

inserisci qui la descrizione dell'immagine

Fai clic su Salva e il gioco è fatto!


Sebbene sia possibile modificare il server DNS nelle impostazioni di rete su qualsiasi PC, è meglio modificarli nel router effettivo che si connette a Internet in modo che tutti i dispositivi collegati ne traggano vantaggio.
Mark Rooney,

3
E se non avesse un router in sé? O vuole solo cambiare il DNS per questo computer / utente? E se fosse solo questa volta? Forse in realtà non ha accesso al router e vuole utilizzare un altro server DNS ... Posso aggiungere ragioni a questo elenco per tutta la notte. Buon consiglio e risposta @jrg.
Bruno Pereira,

6
È una buona guida grafica per impostare dns su una singola macchina con gestore di rete. Vorrei solo sottolineare che è possibile impostare più di uno, separati da virgola. 8.8.8.8,8.8.4.4. L'impostazione del DNS per una LAN può anche essere utile, se la lan è abbastanza grande uso personalmente il router o la maschera DNS. Su una LAN, è spesso più facile mantenere una lista nera o un proxy in una singola posizione (router / maschera di dns / squid) piuttosto che su ciascun client o ciascun utente su ciascun client, ma questo è un po 'oltre la domanda posta qui.
Pantera,

29

Il modo migliore per impostare un nameserver tramite la CLI, senza NetworkManger, con un indirizzo statico o indipendente dalla connessione è questo:

Installa il pacchetto resolvconf .

Correre

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

(ignora l'avvertimento spaventoso. /etc/resolv.conf viene generato automaticamente, quindi l'avviso è presente e verrà inserito in /etc/resolv.conf quando viene generato /etc/resolv.conf.) Alla fine del file, Inserisci

 nameserver <ip_of_nameserver>

Premi Ctrl xe rispondi sì per salvare il file. Per finire, rigenerare /etc/resolv.conf in modo che le modifiche vengano applicate proprio ora:

 sudo resolvconf -u

1
Per qualche motivo circa un mese fa la mia build notturna di Xubuntu ha smesso di risolvere i nomi host LAN. Il mio server DHCP dovrebbe emettersi (192.168.68.1) come server DNS, l'ho anche codificato in Network Manager e in ogni luogo (menzionato sopra questa risposta). Con il modo in cui Xubuntu / NetworkMan / qualunque cosa usi un IP 127.0.xx in questi giorni, è difficile diagnosticare il problema. Potrei risolvere IP esterni, quindi stava ottenendo QUALCOSA per DNS. Comunque, questa è stata l'unica risposta che ha risolto il mio problema. Grazie
Adam Plocher il

18

Un altro modo per farlo è modificare /etc/dhcp3/dhclient.conf, puoi farlo digitandolo nella finestra di dialogo Esegui (appare premendo Alt+ F2)

gksudo gedit /etc/dhcp3/dhclient.conf

Quindi trova la seguente riga

#prepend domain-name-servers 127.0.0.1;

E cambiarlo in

prepend domain-name-servers 8.8.8.8;

Ciò renderà dhclient (il client DHCP che NetworkManager utilizza) antepone questo ai server DNS, quindi resol.conf finirà così

nameserver 8.8.8.8
nameserver 192.168.1.1

Questa soluzione funzionerà ovunque e otterrai sempre il DNS che hai scelto come principale.


4
Mi sembra che Network Manager scriva resolv.conf senza consultare dhclient.conf
daithib8

2
su Ubuntu 11.10 è necessario modificare /etc/dhcp/dhclient.conf invece di
/etc/dhcp3/dhclient.conf

1
puoi metterne più?
PyRulez,

1
@PyRulez Sì, separato da virgole, punto e virgola alla fine
Sergiy Kolodyazhnyy

2
Ho provato questo nel 14.10, ma senza effetto
rubo77,

7

Un'altra soluzione è modificare la configurazione del router per utilizzare l'altro server DNS. Accedi al suo amministratore e fintanto che non è il router a causare il problema, tutti i tuoi computer client ottengono un DNS migliore.


+1 Concordato se questo è un problema che non sarà probabilmente risolto presto per risolverlo sul router, verrà risolto per tutte le macchine della rete. Trovo che sia meglio utilizzare Google DNS o OpenDNS.
Mark Davidson,

1
L'ho già fatto, ma il router funge ancora da server dei nomi intermedio tra i client e il server dei nomi configurato ed è ancora molto lento.
Wim Coenen,

1
Molti ISP bloccano i loro router in modo da non poter modificare queste impostazioni o pagare per farlo.
LassePoulsen,

@Wim Se il tuo router non è in grado di fornire la risoluzione DNS entro un lasso di tempo ragionevole, diciamo 50ms su una buona connessione, c'è qualcosa che non va. Così sbagliato potrebbe gestire in modo inefficace altro traffico. Potrebbe essere il momento di un aggiornamento di $ 30 / £ 20.
Oli

1
@Oli: il problema DNS si manifesta solo quando si utilizza il router da un box Linux: ho avuto lo stesso problema con debian, ma nessun problema con Windows. Sono sicuro che sia solo un sottile problema di compatibilità. Il router funziona bene altrimenti.
Wim Coenen,

6

Fai clic sull'indicatore di rete in alto a destra sullo schermo e seleziona Edit Connections.... Scegli la connessione che desideri modificare (probabilmente dalla scheda Wiredo Wirelesse fai clic sul Edit...pulsante.

Passare alla IPv4 Settingsscheda della finestra di connessione e modificare il metodo da Automatic (DHCP)a Automatic (DHCP) addresses only. Ora dovresti essere in grado di specificare un indirizzo IP del server DNS.

Salva la connessione e dovresti essere a posto. Potrebbe essere necessario ripristinare la connessione selezionandola nel menu dell'indicatore dopo aver modificato le impostazioni.


1

Credo che se lo cambi sotto il gestore della rete stesso, i cambiamenti con persistono.

Per usare eth0 per esempio

Network Manager -> Cablato -> Auto eth0 -> Impostazioni ipv4.

Impostare il server DNS su 8.8.8.8 e applicare.


Ho avuto difficoltà a trovare qualcosa chiamato "gestore della rete". Esiste un "Sistema - Amministrazione - Strumenti di rete" ma questo non aiuta. Alla fine ho scoperto che avevo bisogno di "Sistema - Preferenze - Connessioni di rete".
Wim Coenen,

1
Nel pannello è presente un'icona del gestore di rete (quella che mostra lo stato della rete) su cui è possibile fare clic con il pulsante destro del mouse per modificare le connessioni.
Marcel Stimberg,

Questo non funziona
user568021

0

Utilizzando il terminale

È necessario modificare il /etc/resolv.conffile per impostare l'indirizzo IP del server dei nomi che deve essere interrogato dal resolver. È possibile definire fino a 3 indirizzi IP Internet del server dei nomi. Se sono presenti più server, la libreria del resolver li interroga nell'ordine elencato.

In primo luogo digitare

sudoedit /etc/resolv.conf

Aggiungi l'indirizzo IP del tuo server DNS preferito come segue:

nameserver <preferred-ip1>
nameserver <preferred-ip2>
nameserver <preferred-ip3>

tratto da: http://www.cyberciti.biz/faq/ubuntu-linux-configure-dns-nameserver-ip-address/


6
Se i server dei nomi sono impostati tramite DHCP, /etc/resolv.confverranno sovrascritti. Quindi questo approccio è appropriato solo per macchine con configurazioni di rete manuali. Tecnicamente, si potrebbe fare chattr +i /etc/resolv.confper evitare che il file venga modificato (ho fatto anni fa), ma il modo migliore per la maggior parte delle macchine sarebbe l'approccio di JRG nella sua risposta: askubuntu.com/a/90263/13398 .
Scott Severance,

@ScottSeverance Cosa non aveva il sistema X
Amith KK il

In tal caso, è probabilmente un server con rete configurata manualmente, nel qual caso la tua risposta è perfettamente appropriata. Ma la maggior parte delle macchine Ubuntu esegue X e può facilmente gestire l'altro approccio. Se una macchina non esegue X ma ha una GUI adatta installata, è possibile eseguire anche gli strumenti grafici su SSH ForwardX11=yes.
Scott Severance,

6
Se stai per provare a modificare manualmente il file /etc/resolv.conf, il modo corretto di farlo (quindi non viene sovrascritto) è installare il pacchetto "resolvconf" e quindi modificare / etc / resolvconf / resolv. conf.d / head o /etc/resolvconf/resolv.conf.d/tail.
Azendale,

0

Per i server senza testa in cui non è presente X e la gestione avviene tramite ssh o altro, è necessaria una soluzione da riga di comando. Se resolv.conf non viene sovrascritto, questo è il posto giusto per cambiare i nameserver.

Se resolv.conf non sovrascritto poi, sulla 14.04LTS almeno, i file di modifica sono:

  • /etc/resolvconf/resolv.conf.d/head
  • /etc/resolvconf/resolv.conf.d/tail

Consiglio vivamente di inserire stringhe di commenti in file come questi, in modo tale che compaiano nel file generato (/etc/resolve.conf) e che possiate trovarli in futuro. Inizio e finisco ogni file con un commento di una riga del modulo:

  • # ====== inizio /etc/resolveconf/resolv.d/tail ======
  • # ====== end /etc/resolveconf/resolv.d/tail ======

e mettere le direttive pertinenti tra loro.


0

Ho scoperto che aggiungendo la linea dns-nameserver ipal file interfacce, impostando le impostazioni ipv4 della connessione cablata solo su Impostazioni automatiche (DHCP) e inserendo l'IP del server DNS e il nome del dominio. Inoltre l'aggiunta dell'IP DNS locale alla sezione DNS statica del router DSL fa sì che NetworkManager includa questo indirizzo locale nel resolv.conffile che sovrascrive insieme ad altre informazioni recuperate dal router. Tutti insieme sembrano rendere persistente la risoluzione dei nomi DNS locali, a quanto pare un compito sorprendentemente difficile. La mia necessità di DNS locale è di montare un client Linux su una condivisione Samba usando mount.cifssu una rete servita da DHCP.


0

Se Network-Managerè stato arrestato ed /etc/resolvconf/resolv.conf.d/baseè stato configurato.

Forse resolvconf --enable-updatesè utile.


0

È possibile modificare le impostazioni DNS IPv4 in modo grafico come indicato qui

Ma se ti stai chiedendo come fare la stessa cosa usando la riga di comando, devi elencare i file nella /etc/NetworkManager/system-connectionsdirectory con il lscomando:

ls /etc/NetworkManager/system-connections

Deve esserci un file con il nome della tua connessione, il mio si chiama Wired Connection 1.

Quindi dobbiamo modificare il file e aggiungere server DNS al suo interno:

Sudo nano "/etc/NetworkManager/system-connections/Wired connection 1"

Aggiungi tutti i server DNS che desideri nella [ipv4]sezione e separali con punto ;e virgola e inserisci anche un ;alla fine dell'ultimo server DNS in questo modo:

[ipv4]
dns=1.1.1.1;8.8.8.8;9.9.9.9;

Puoi semplicemente eliminare questa riga se non vuoi assegnare alcun DNS.

Inoltre, è necessario aggiungere questa riga ignore-auto-dns=trueper ignorare i server DNS forniti da DHCP (come il server DNS impostato nella configurazione del router):

[ipv4]
dns=1.1.1.1;8.8.8.8;9.9.9.9;
ignore-auto-dns=true

Un piccolo contesto a questa risposta: stavo cercando di capire quale file viene modificato quando aggiungo un server DNS nelle impostazioni DNS della GUI, quindi stavo eseguendo questo comando per 16+ ore: sudo grep -rs "1.1.1.1" /che stava scansionando tutti i file sulla mia macchina virtuale Ubuntu ma non è mai finito anche dopo aver funzionato così a lungo, ma sapevo che era possibile che il file potesse esistere, /etc/NetworkManagerquindi ho eseguito di grepnuovo il puntamento verso quella directory e /etc/NetworkManager/system-connections/Wired connection 1:dns=1.1.1.1;ho trovato questo: quindi sono tornato qui per scrivere una risposta solo per scoprire che Lekensteyn ha già lo ha sottolineato nei commenti sulla risposta accettata .

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.