Domanda Come posso aggiungere un server DNS tramite resolv.conf?


È /etc/resolv.conf inutile in Ubuntu 12.04 LTS (Precisa Pangolin)?

Vedo che le informazioni del server DNS sono memorizzate Responsabile del network adesso. Il nmcli lo strumento della riga di comando può elencarlo per te.

Se voglio aggiungerne un'altra DNS server, lo aggiungerà a /etc/resolv.conf usando il resolvconf pacchetto di aiuto?


192
2018-05-03 00:00


origine


Penso che il comando di cui sopra dovrebbe essere nm-toolno nmcli. - Jesse Glick


risposte:


Se /etc/resolv.conf contiene nameserver 127.0.0.1 quindi aggiungere voci a /etc/resolvconf/resolv.conf.d/tail non farà davvero nulla di utile.

Se si utilizza NetworkManager, si dovrebbe invece aggiungere staticamente indirizzi nameserver tramite indicatore di rete: Modifica connessioni ... | Modifica ... | Impostazioni IPv4 | Ulteriori server DNS.

Se tu veramente voglio aggiungere più voci a /etc/resolv.conf, creare un /etc/resolvconf/resolv.conf.d/tail e aggiungili lì.

Come per ogni versione di Ubuntu, si consiglia di leggere le Note di rilascio di Ubuntu, disponibili qui:

Le sezioni Desktop e Common Infrastructure contengono un collegamento a


130
2018-05-03 00:21



@stgraber, si prega di commentare l'approccio alternativo che ho trovato e pubblicato di seguito. Come si confronta con l'aggiunta di un /etc/resolvconf/resolv.conf.d/tailfile o usando Network Manager? Grazie. - Randall Cook
@stgraber Cosa consiglia per Ubuntu Server? Ho notato dal tuo blog e dai commenti che Network-Manger sembra essere il modo migliore per gestirlo, ma fare un'installazione di network-manager sul mio sistema dovrebbe installare un sacco di cose che non mi servono (ad es. ). - Avery Chan
A che punto aggiungere voci a /etc/resolvconf/resolv.conf.d/head (come per il tuo blogpost)? - sup
@AveryChan, usa il "terzo approccio" suggerito da @ randallcook: aggiungi dns-nameservers alla tua sezione eth0 in /etc/network/interfaces. - mrm
/etc/resolvconf/update.d/libc sul server Ubuntu 14.04.1: # Set TRUNCATE_NAMESERVER_LIST_AFTER_LOOPBACK_ADDRESS=no  # to allow additional nameserver addresses to be listed in  # resolv.conf after an initial loopback address 127.* or ::1.  (mettilo dentro /etc/default/resolvconf, come linea 23 e 24 di /etc/resolvconf/update.d/libc mostrare. - immeëmosol


Ho trovato un altro approccio Qui ciò comporta l'aggiunta di una linea come quella di seguito a /etc/dhcp/dhclient.conf:

prepend domain-name-servers x.x.x.x, y.y.y.y;

Allo stesso modo, ho trovato un terzo approccio Qui che comporta l'aggiunta di linee a /etc/network/interfaces:

auto eth0
iface eth0 inet static
    . . .
    dns-nameservers 8.8.8.8 8.8.4.4

Aggiornamento: ecco il documentazione ufficiale per il terzo approccio.


128
2018-05-08 22:48



Ho votato per questo perché il third approach è di gran lunga il modo più semplice per farlo. - Billy Moon
@billy Non ho potuto ottenere il terzo metodo per funzionare .. solo il primo elencato qui, modificando il dclient.conf, ha funzionato per me. - Jeff Atwood
Nota: la modifica di dhclient.conf ha effetto solo se si usa dhclient (ed è usato sia da ifup che da NetworkManager!) La modifica di / etc / network / interfaces ha effetto solo se ifup è usato. La configurazione delle connessioni di NetworkManager utilizzando l'editor di connessioni di NetworkManager ha effetto solo se si utilizza NetworkManager. - jdthood
Se non sbaglio, il terzo approccio aggiunge un altro server dei nomi DOPO quelli restituiti da DHCP. Se vuoi che venga prima, allora una delle altre opzioni è più appropriata. ero solito /etc/resolvconf/resolv.conf.d/head (dopo aver superato il commento fuorviante "NON MODIFICARE") :) - starfry
@ Mr.Hyde, quelli non sono comandi da linea di comando, sono linee da aggiungere a / etc / network / interfaces. - Randall Cook


Sembra che tu stia parlando del pacchetto resolvconf.

Installa il resolvconf pacchetto.

Correre

cd /etc/resolvconf/resolv.conf.d
sudo cp -p head head.orig  #backup copy, always do this
sudo nano head

La parte superiore del file è un avvertimento spaventoso. Il file /etc/resolv.conf viene generato automaticamente dai contenuti di questo file; l'avviso è presente quindi verrà inserito in /etc/resolv.conf quando viene generato /etc/resolv.conf. Alla fine del file, aggiungi

nameserver <ip_of_nameserver>

stampa Ctrl  X e rispondi si per salvare il file. Per finire, rigenerare /etc/resolv.conf in modo che le modifiche vengano applicate in questo momento:

sudo resolvconf -u

Quindi controlla il contenuto di /etc/resolv.conf per vedere che la linea che hai aggiunto ora è lì. Inoltre, sarà ancora lì la prossima volta che verrà riavviato il sistema o verrà riavviato il servizio di rete, a seconda dell'evento che si verifica per primo.


85
2018-06-30 23:41



Le informazioni sull'avviso sul file sono esattamente ciò di cui avevo bisogno. Avevo l'impressione che non dovessi modificare il file! Grazie! - Xunnamius


Di seguito ti mostrerò il modo migliore che ho trovato da quando eseguo l'edizione di Ubuntu Server e uso ifup piuttosto che NetworkManager.

In realtà per me lo hanno reso più facile :) inserendo tutto nel file / etc / network / interfaces. Le stesse configurazioni che avresti scritto su resolv.conf ora possono trovarsi nello stesso file delle configurazioni della scheda di rete come nell'esempio seguente:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.1.2
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.1.255
        gateway 192.168.1.1
        dns-nameservers 75.75.75.75 75.75.76.76
        dns-search local

Spero che questo sia di aiuto e sia più facile come per me, ora possiamo creare indirizzi IP statici e aggiungere nomi server e dominio DNS in un unico file :)


29
2018-05-23 22:55



Grazie. Questo è diventato anche il mio metodo preferito. Una nota fuori tema: non è necessario specificare gli indirizzi "rete" e "broadcast" poiché vengono calcolati automaticamente da "indirizzo" e "maschera di rete". Tutto ciò di cui hai veramente bisogno sono "indirizzo", "maschera di rete" e "gateway". - Martijn Heemels
Questa è la risposta più pulita. Assicurati solo di scrivere correttamente le parole chiave dns- *. I "nameserver dns" errati erano il mio vero problema. - John McGehee


Il mio sta usando Ubuntu Server 12.04. Ho apportato le seguenti modifiche e riavviato il server (in genere questo può essere fatto solo abbassando l'interfaccia di rete, cioè, ifdown eth0o ifup eth0).

Nel file /etc/resolvconf/resolv.conf.d/base Ho aggiunto le seguenti voci:

nameserver 8.8.8.8
nameserver 8.8.4.4

Spero che quanto sopra aiuti!


16
2018-03-19 05:56





Puoi utilizzare NetworkManager come indicato nella risposta di Frank, ma se preferisci modificare manualmente /etc/resolv.conf, puoi farlo eliminandolo (in realtà è un link simbolico) e quindi creando un nuovo file semplice con il contenuto che desideri. Il resolvconf l'utilità scrive sempre nel file /run/resolvconf/resolv.conf.


11
2018-05-04 14:38





Nota: questa risposta riguardava una versione pre-merge piuttosto diversa della domanda, con un focus solo su un server dei nomi in sospeso.

Funziona prima del 12.04:

modificare /etc/dhcp3/dhclient.conf e aggiungi :
prepend domain-name-servers 127.0.0.1;

(In realtà, questa linea è già presente, tutto ciò che devi fare è non commentarlo.)


8
2018-03-06 20:26



Funziona se non si hanno indirizzi assegnati da DHCP? - Azendale
Se vuoi saperne di più sulla configurazione di dhclient puoi farlo a man dhclient.conf per accedere alla pagina man dhclient. (Questa non è una risposta alla domanda di Azendale.) - Christian Skjødt
Questa risposta è completamente sbagliata. Prima di tutto, la sottomissione di domande vuole aggiungere l'indirizzo di un server di controllo esterno, non l'indirizzo 127.0.0.1. Il configuratore di interfaccia per un'interfaccia esterna non è il posto dove aggiungere un indirizzo per un server dei nomi interno. In secondo luogo, il file è in / etc / dhcp, non in / etc / dhcp3. In terzo luogo, dal momento che Ubuntu 12.04 tali cose sono configurate usando resolvconf. - jdthood
Prima di tutto - la domanda originale è stata radicalmente cambiata dalla fusione dei moderatori, quindi la mia risposta ovviamente sembra strana. Il file dhcp3 era il luogo in cui ho risposto a questo 2011e anche se non è l'ideale, ha funzionato. Ho usato questa soluzione su più macchine. Ovviamente, cambierai l'indirizzo di loopback in quello che vuoi anteporre. Presumo che molte persone sappiano cos'è un loopback, anche se non hanno letto RFC6890. - belacqua
@ jdthood Perché non aggiungere la tua risposta? Personalmente, non avevo familiarità con il modo risolvido di fare bsd-ish resolvconf. Ho preferito l'approccio diretto a /etc/resolv.conf e non sono sicuro di quale sia il vantaggio del nuovo sistema Rube Goldberg. (Allo stesso modo con / etc / motd). - belacqua


resolvconf è inutile Sono su un server Linux e il mio indirizzo IP è statico e mio DNS i server sono statici. Io non ho bisogno resolvconfo Responsabile del network.

Mantenerlo semplice è la mia politica quando si lavora su un server. Minore è la complessità, più facile sarà gestire / correggere quando le cose si rompono.

Così ho fatto aptitude purge resolvconf e manualmente reso sicuro /etc/resolv.conf non è un link simbolico e ho appena creato un file statico. Nel caso in cui un programma cerchi di cambiare il file, l'ho fatto chattr +i (immutabile) a /etc/resolv.conf come precauzione.


6
2017-10-16 15:41



Poiché resolvconf fa parte del sistema di base, eliminandolo, si richiedono problemi in futuro, al momento dell'aggiornamento. - jdthood
Concordo sia con il commento sia con la risposta: considera quanti problemi ha causato e quante ore di supporto sono state dedicate alla risoluzione di questo "problema" e quanti addetti IT hanno dedicato del tempo alla ricerca di risposte. Semplice è meglio - Non ho bisogno che i miei server cambino il DNS in qualcosa che non voglio. - Mei


La maggior parte di questi presuppone che tu abbia un sistema pristine, ma la realtà è spesso tale che hai installato diversi client dhcp, disabilitato il gestore di rete in alcune versioni precedenti di Ubuntu, ecc. Potrebbe essere utile sapere quanto segue. Sto usando dnsmasq per un po ', ma lo ho disinstallato. Attualmente il mio sistema ha il seguente contenuto di /etc/resolv.conf (che è un collegamento simbolico a /run/resolvconf/resolv.conf sul mio sistema):

cat /etc/resolv.conf
# 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
nameserver 127.0.0.1

Non importa quante volte corro sudo resolvconf -uo sudo dpkg-reconfigure resolvconf, non ha aggiornato il nameserver a quelli che ho impostato nel NetworkManager. Era presente l'informazione che resolvconf utilizzava da NetworkManager:

cat /run/resolvconf/interface/NetworkManager  
nameserver 8.8.4.4
nameserver 8.8.8.8

Tuttavia, risulta che se ci sono più file in questa directory, questo file potrebbe non essere utilizzato affatto. Il colpevole era un file non rimosso con la disinstallazione di dnsmasq:

cat /run/resolvconf/interface/lo.dnsmasq                        
nameserver 127.0.0.1

Basta rimuovere questo file (e in esecuzione sudo resolvconf -u in seguito) risolto i miei problemi di DNS:

cat /etc/resolv.conf                        
# 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
nameserver 8.8.4.4
nameserver 8.8.8.8 

Spero che questo aiuti gli altri con il debug (le complesse interazioni tra tutti questi diversi strumenti di rete). Se usi resolvconf assicurati di correre ls /run/resolvconf/interfaces per vedere cosa c'è.


4
2017-12-27 12:54



Grazie, è stato molto utile. Ho provato prima le risposte votate più alte e nessuna sembrava fare il trucco. Non ho avuto alcun file aggiuntivo nel /run/resolvconf/interface/ dir, ma il mio NetworkManager file aveva bisogno di un po 'd'amore. La tua risposta mi ha aiutato a risolvere questo problema. - mason81


È possibile modificare la connessione "AUTO ETH0" o qualunque sia il nome che si utilizza per connettersi in NM. Puoi farlo cliccando col tasto destro su NM e selezionando "Modifica connessioni ...". Nella scheda IPv4 puoi selezionare "Solo indirizzi automatici (DHCP)" come "Metodo" e NM ti consentirà di impostare manualmente gli indirizzi del server dei nomi anche se gli indirizzi vengono consegnati tramite DHCP.


2
2018-05-04 14:29





Ho appena eliminato un collegamento in /etc/resolv.conf e ha creato un file regolare con gli indirizzi dei nameserver. Funziona, e non vedo alcun motivo per usare quella costruzione piuttosto strana che gli sviluppatori di Ubuntu hanno creato.


2
2018-03-19 06:34



Sì, non sono un fan di questo tipo di cambiamento che colpisce i server, aggiunge complessità e opacità. Questo è un comportamento fondamentale che non dovrebbe cambiare da versione a versione. - belacqua