Domanda Come includo le righe in resolv.conf che non si perderanno al riavvio?


Sono finalmente migrato alla 12.04 dal 7.10. Ho un'ultima parte da completare ma sono perplesso. Sto usando Puppet su ogni server, e in passato ho incluso un indirizzo nameserver e un nome di dominio di ricerca per il puppetmaster in resolv.conf.

search puppetmaster.com
nameserver 192.168.1.XXX

In 12.04 resolv.conf viene sovrascritto al riavvio. Budud Bud B Bud Bud Bud B B B B Budud Bud Bud Bud B B B B Bud B B Bud B B Bud B B Bud B B Bud B B Bud B B B B B B B B B B B B Budud B Bud Bud Bud B Bud B B Bud B Bud B B Bud B B Bud B B Bud B B Bud B B Bud B B B B B B B B B B B B B B B B B B B B B

# 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

C'è un modo per ottenere resolvconf per gestire questo in testa, coda o base? Se c'è, ci sono degli esempi che posso usare per modificare il mio server.

Ogni aiuto è molto apprezzato.


148
2018-06-28 13:54


origine




risposte:


Probabilmente è meglio che il tuo server DNS sia in grado di risolvere "puppet" nell'indirizzo giusto e che il tuo server DHCP distribuisca l'indirizzo del server dei nomi DNS e l'elenco di ricerca o altro (se hai indirizzi IP statici) per avere qualcosa come il seguente in / etc / network / interfaces.

iface eth0 inet static
    address 192.168.3.3
    netmask 255.255.255.0
    gateway 192.168.3.1
    dns-search example.com
    dns-nameservers 192.168.3.45 192.168.8.10

Ma se si vuole farlo tramite i file di configurazione resolvconf, si vorrà modificare /etc/resolvconf/resolv.conf.d/base. In quel file, inserisci le tue informazioni come faresti in resolv.conf.

nameserver 192.168.1.XXX

Quindi dire a resolvconf di rigenerare resolv.conf.

sudo resolvconf -u

120
2018-06-28 15:35



Sebbene questa risposta abbia voti e la prima parte sia più o meno corretta, la seconda parte della risposta è errata. (1) Do non metti una riga "cerca" in /etc/resolvconf/resolv.conf.d/head. Se si inserisce una linea di "ricerca", questa riga verrà ignorata se resolvconf include una riga di "ricerca" nella parte dinamica del file resolv.conf. Il risolutore glibc ignora tutto tranne l'ultima riga "search" o "domain". Vedi resolv.conf (5). (2) Se la configurazione resolvconf è stata modificata, non è necessario riavviare il processo resolvconf, ma solo eseguire un aggiornamento, "resolvconf -u". - jdthood
Ho rimosso la linea. L'altra opzione sarebbe quella di usare la coda invece della testa. - tgm4883
base, testa o coda (a partire da 12.04) vengono tutti riscritti proprio come resolv.conf, quindi posso confermare che il commento @jdthood è vero. Quindi, la risposta completa direbbe - non modificare nessuno dei file resolv.conf, e basta eseguire: sudo /etc/init.d/networking restart Di fatto, ciò scriverà le modifiche dell'interfaccia a resolv.conf. - tishma
@tishma: Ciao. Innanzitutto, per evitare qualsiasi fraintendimento: nulla scrive sui file di base, di testa o di coda. Niente scrive su nessun file in /etc/resolvconf/resolv.conf.d/ in fase di esecuzione. Questi file vengono letti da resolvconf che assembla il loro contenuto nel file che scrive --- /run/resolvconf/resolv.conf --- a cui punta il link /etc/resolv.conf. In secondo luogo, riguardo a cosa fare dopo dns- * le opzioni in / etc / network / interfaces sono cambiate. Fare non eseguire "/etc/init.d/networking restart"; che ora è deprecato. Invece se scollega l'interfaccia in questione e se lo riattiva di nuovo. - jdthood
Nel 14.04 questa risposta non ha fatto nulla per me. - Jay Sullivan


Penso che la risposta sia tua /etc/dhcp/dhclient.conf, cioè non richiedere dns-nameservers dal tuo DHCP cliente.

Quindi aggiorna il tuo /etc/network/interfaces

auto eth0
iface eth0 inet dhcp
dns-search google.com
dns-nameservers dnsserverip

Quindi il tuo resolv.conf verrà configurato automaticamente nel modo desiderato.

Aggiungi al dns-search e quindi eseguire a /etc/init.d/networking restart  (anche se questo script è deprecato funziona ancora).


32
2017-11-26 01:58



regole dhclient su qualsiasi impostazione resolvconf, quindi questa dovrebbe essere la risposta migliore. - Alex R
/etc/init.d/networking restart non ha funzionato sulla mia macchina, ma sudo ifdown -a e poi sudo ifup -a fatto. (Inoltre, mi ci è voluto un po 'per capire che dovevo sostituire dnsserverip con qualcosa di simile 8.8.8.8; Mi sento un po 'sciocco.) - Jason Gross
provare systemctl restart networking.service - Pavel Sayekat


Questo è probabilmente causato dalla configurazione DHCP quando hai installato Ubuntu per la prima volta. Prova questa procedura in 3 passaggi per gestire questo problema di configurazione automatica.

Primo

Modifica la configurazione dell'interfaccia, che si trova in: /etc/network/interfaces

Aggiungi questa riga qui sotto iface lo inet loopback:

dns-nameservers yourdns youraltdns

Come esempio per Google DNS, potresti voler usare questo:

dns-nameservers 8.8.8.8 8.8.4.4

Secondo

Modifica il tuo file di configurazione DHCP, situato in:

/etc/dhcp/dhclient.conf

Segna la sintassi come commento usando # su ogni linea o semplicemente rimuovere ogni richiesta nome-server. In 16.04, potrebbe non essere richiesto di apportare modifiche qui.

Terzo

Riavvia il tuo networking usando questo comando:

/etc/init.d/networking restart

Nel 16.04:

sudo ifdown -a
sudo ifup -a

18
2018-06-20 01:50



/etc/init.d/networking restart non ha funzionato sulla mia macchina, ma sudo ifdown -a e poi sudo ifup -a fatto. - Jason Gross
Questo è semplice e funziona anche se è un po 'hacky! Il problema con cose come Ubuntu sta avendo 1000 modi per fare una cosa! - Willa O Ng'wana
E poi puoi verificarlo /etc/resolv.conf contiene quelle 2 nuove voci DNS sulle prime linee utili. - ROMANIA_engineer


Per favore guarda resolvconfla pagina man di Puoi forzare l'inclusione di determinate impostazioni DNS creando ad es. /etc/resolvconf/resolv.conf.d/base:

  /etc/resolvconf/resolv.conf.d/base
          File containing basic resolver information.  The lines  in  this
          file  are  included in the resolver configuration file even when
          no interfaces are configured.

Ci sono altri file speciali (testa e coda), questi possono aiutarti a ottenere ciò che desideri.


7
2017-09-04 14:26



È possibile aggiungere linee a /etc/resolvconf/resolv.conf.d/base, ma poiché ogni server dei nomi è accessibile tramite un'interfaccia ed è accessibile solo quando l'interfaccia è attiva, è meglio associare le informazioni sul server dei nomi con tale interfaccia. Se l'interfaccia è configurata con ifup, ciò significa: inserire le informazioni nelle righe "dns-search" e "dns-nameservers" nelle stanze / etc / network / interfaces. Se l'interfaccia è configurata tramite DHCP, significa: configurare il server DHCP per fornire nomi di ricerca e indirizzi nameserver ai client. Ecc. Utilizzare il file "base" solo come modifica temporanea o come ultima risorsa. - jdthood


Per me, le risposte di cui sopra erano inadeguate per i seguenti motivi:

  • Non sto usando resolvconf, semplicemente /etc/resolv.conf.
  • utilizzando chattr +i bloccare resolv.conf sembra troppo hacky. Ho bisogno che Puppet sia libero di apportare modifiche quando necessario.
  • AFAIK, editing /etc/network/interfaces non impedisce resolv.conf da essere sovrascritto; semplicemente specifica i server dei nomi che dovrebbero essere scritti. Per me, specificare il nome dei server non era il punto. Sto provando a impostare options timeout:1 e options attempts:1 nel mio resolv.conf file.

Il soluzione migliore Ho trovato sovrascrive il comportamento predefinito di dhclient usando i suoi ganci documentati.

Crea un nuovo file su /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate con i seguenti contenuti:

#!/bin/sh
make_resolv_conf() {
    :
}

Quindi rendere il file eseguibile:

chmod +x /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate

Ora quando dhclient viene eseguito - al riavvio o quando si esegue manualmente sudo ifdown -a ; sudo ifup -a - carica questo script nodnsupdate. Questo script sovrascrive una funzione interna chiamata make_resolv_conf() che normalmente sovrascriverebbe resolv.conf e invece non fa nulla.

Questo ha funzionato per me su Ubuntu 12.04.


4
2018-03-05 22:12



Funziona bene su Debian 8. Soluzione elegante! - Artur Bodera
solo per completezza: manpage dhclient-script contiene le informazioni sullo script di configurazione di rete del client DHCP menzionato una risposta sopra. - hecke
Questo non ha funzionato il 16.04, ho aggiunto anche cose a /etc/network/interfaces.d, senza alcun effetto, aggiunto un override vuoto di make_resolv_conf raccomandato qui, nessun effetto .... ma non ha modificato / etc / dhcp / dhclient.conf - ho davvero bisogno di modificare un file di configurazione statico per risolvere questo problema? - silverjam


Come molte altre risposte affermano, questo ha a che fare con resolvconf essere installato nel tuo sistema.

Quindi il modo migliore per tenere qualcosa in resolv.conf che non si perderà al riavvio è includerlo nei file di configurazione resolvconf presenti in:

/etc/resolvconf/resolv.conf.d/

In là vai per il head file. Qualunque cosa tu metta, sarà scritto nella parte superiore di /etc/resolv.conf

Quindi tutto andrà a qualcosa di simile:

# echo nameserver 8.8.8.8 >> /etc/resolvconf/resolv.conf.d/head
# resolvconf --enable-updates
# resolvconf -u

3
2017-10-17 13:59





aggiungi il tuo server dei nomi al file /etc/resolvconf/resolv.conf.d/head. Il file contiene il messaggio che hai ricevuto:

quel file dovrebbe apparire così dopo aver aggiunto 8.8.8.8

root@hvnatvcc: ~ # cat /etc/resolvconf/resolv.conf.d/head 
# 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.8.8

2
2017-10-23 10:43



L'aggiunta di righe a /etc/resolvconf/resolv.conf.d/head è una soluzione scadente, persino peggiore dell'aggiunta di righe a /etc/resolvconf/resolv.conf.d/base. La soluzione corretta per le interfacce configurate usando ifup è quella di aggiungere linee "dns-search" e "dns-nameservers" alle stanze in / etc / network / interfaces. Vedi anche i miei commenti sulle altre risposte. - jdthood
È l'unica cosa che ha funzionato per me ... ed è difficile capire perché nessuna delle soluzioni "corrette" funzioni. - silverjam


Potrebbe trattarsi di qualche strana stranezza nella mia macchina, ma qualcun altro potrebbe avere lo stesso caso d'angolo.

Ho provato numerosi modi per ottenere i miei server dei nomi ISP inclusi in /etc/resolv.conf senza successo:

  • Li ho inclusi /etc/network/interfaces e riavviato il networking. Non si sono presentati /etc/resolv.conf.

  • Li ho messi dentro /etc/resolv.conf esplicitamente, ma ovviamente sono stati sovrascritti. Si sono fatti vedere /run/resolvconf/interface/eth0.inet, ma non ce l'ha mai fatta /etc/resolv.conf.

  • Ho provato a configurare resolvconf per gli aggiornamenti dinamici. Nessun cambiamento.

Finalmente ho letto da qualche parte che se compare la macchina locale (127.0.0.1) /etc/resolv.conf nessun altro server dei nomi non è incluso.

Disperato, ho modificato /run/resolvconf/interface/lo.named, cancellato l'unica linea in esso (nameserver 127.0.0.1) e riavviato: ifdown eth0 && ifup eth0.

/etc/resolv.conf ha quindi incluso per la prima volta i miei server dei nomi ISP! ho corso service network-manager restart per vedere se era stabile e /etc/resolv.conf include ancora i miei server dei nomi ISP. Riavviato solo per essere sicuro ed è ancora lì ma  /run/resolvconf/interface/lo.named ho ripristinato a: nameserver 127.0.0.1.

Il riavvio curioso della rete funziona ancora: /etc/resolv.conf contiene ancora i miei server dei nomi ISP. Non posso spiegare questo (qualcuno può?) Ma questo potrebbe aiutare qualcuno bloccato nello stesso punto.


2
2018-06-26 05:18



Questo è probabilmente causato da dnsmasq. Puoi semplicemente rimuoverlo usando apt-get remove dnsmasq o aggiornare la configurazione in /etc/dnsmasq.conf. - Tombart


Le altre soluzioni non hanno funzionato per me sul mio sistema Fedora 20. Il mio problema particolare era che la riga "cerca" in /etc/resolv.conf veniva sovrascritta. Ecco cosa lo ha risolto. (Ciò presuppone che NetworkManager stia producendo la linea search rn.yourcompany.com  e tu vuoi che sia search rn.yourcompany.com yourcompany.com intnet.yourcompany.com:

1.Usare il comando "ifconfig" per scoprire quale interfaccia è di interesse:

$ ifconfig
  :
  :

em2:  <this was the one which was connected>

2. Accedere alla root e passare alla directory dei dispositivi di rete di configurazione del sistema:

$ sudo su -[sudo] 
password for youruser:
# cd /etc/sysconfig/networking/devices`
  1. Usa il tuo editor disponibile preferito per aggiungere un Domain linea con i domini aggiuntivi da cercare:

DOMAIN="yourcompany.com intnet.yourcompany.com"

Salva, esci e riaccedi. NetworkManager ora dovrebbe avere la linea in entrata \etc\resolve.conf:

search rn.yourcompany.com yourcompany.com intnet.yourcompany.com

1
2017-08-29 14:54



Non piovere sulla tua parata, ma questo è Ask Ubuntu, quindi Fedora è fuori tema. - Flimm


aggiungere sull'ultima riga ad esempio:

nameserver 8.8.8.8

Apri un terminale e digita

sudo chattr +i /etc/resolv.conf

il + i si preoccupa che il file non venga resettato su un avvio.

Per annullare quanto sopra

sudo chattr -i /etc/resolv.conf

Per più

man chattr

0
2018-02-23 17:42





Traduzione inglese:

Il mio risolto. "solo 12.4"

Ho notato che se si aggiunge il server dei nomi dns nelle interfacce che non prendono il server di risoluzione dei nomi Grazie all'aiuto trovato qui ho risolto il problema.

http://manpages.ubuntu.com/manpages/lucid/man8/resolvconf.8.html

Per fare in modo che resolv.conf non cambi quando si modifica manualmente, fare ciò nel terminale:

sudo resolvconf –disable-updates

dopo:

sudo resolvconf -a eth0 # or your network Interfas

quindi modificare manualmente /run/resolvconf/resolv.conf

aggiungendo un massimo di due server DNS. Grazie Post scriptum non dimenticare di riavviare:

sudo /etc/init.d/networking restart

Testo originale:

solo ubuntu 12.4

Mi solucion

Ha visto que si agregas los dns-nameserver en interfacce esta no toma los server de resolucion de nombres

Gracias a la ayuda encontrada in questa pagina ha resuelto el problema.

http://manpages.ubuntu.com/manpages/lucid/man8/resolvconf.8.html

Para hacer que resolv.conf no cambie cuando la editamos manualmente hacemos esto en la terminal:

sudo resolvconf –disable-updates

despues:

sudo resolvconf -a eth0 # o tu interfas de red

luego editamos manualmente /run/resolvconf/resolv.conf

agregando un maximo de 2 server DNS. saludos P.D. no olvidar reiniciar:

sudo /etc/init.d/networking restart

0
2017-09-04 14:16



Questo è molto non il modo giusto per risolvere il problema. - jdthood
@ jdthood come qualcuno che sta guardando questo può elaborare perché questo non è il modo giusto? Mi sembra logico, ma non ne so nulla. - ErikPerik