Come faccio a includere le righe in resolv.conf che non si perderanno al riavvio?

149

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. Non posso usare un IP statico per questi, quindi usare / etc / network / interfaces per aiutarmi è un punto fermo.

# 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.

Qualsiasi aiuto è molto apprezzato.

    
posta Sam 28.06.2012 - 15:54

16 risposte

121

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 oppure (se hai indirizzi IP statici) avere qualcosa di simile a quanto segue 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 dì a resolvconf di rigenerare resolv.conf .

sudo resolvconf -u
    
risposta data tgm4883 28.06.2012 - 17:35
33

Penso che la risposta sia controllare il /etc/dhcp/dhclient.conf , cioè non richiedere dns-nameservers dal tuo client dhcp .

Quindi aggiorna il /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 poi esegui /etc/init.d/networking restart (anche se questo script è deprecato funziona ancora).

    
risposta data Jamin 26.11.2012 - 02:58
18

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.

Prima

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

Aggiungi questa riga 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

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

Terzo

Riavvia la tua rete usando questo comando:

/etc/init.d/networking restart

In 16.04:

sudo ifdown -a
sudo ifup -a
    
risposta data astrajingga 20.06.2013 - 03:50
7

Guarda la pagina man di resolvconf . Puoi forzare l'inclusione di determinate impostazioni DNS creando ad es. % Co_de%:

  /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 quello che vuoi.

    
risposta data roadmr 04.09.2012 - 16:26
4

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

  • Non sto utilizzando resolvconf , solo /etc/resolv.conf .
  • Usare chattr +i per bloccare resolv.conf sembra troppo hacky. Ho bisogno che Puppet sia libero di apportare modifiche quando necessario.
  • AFAIK, la modifica di /etc/network/interfaces non impedisce la sovrascrittura di resolv.conf ; 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 file resolv.conf .

La soluzione migliore che ho trovato sovrascrive il comportamento predefinito di dhclient usando i suoi hook documentati.

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

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

Quindi rendi il file eseguibile:

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

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

Questo ha funzionato per me su Ubuntu 12.04.

    
risposta data richardkmiller 05.03.2015 - 23:12
4

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

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

/etc/resolvconf/resolv.conf.d/

Qui vai per il file head . Qualsiasi cosa tu metta, verrà scritta all'inizio 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
    
risposta data Juan Javier Triff Cabanas 17.10.2016 - 15:59
2

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

[email protected]: ~ # 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
    
risposta data HVNSweeting 23.10.2012 - 12:43
2

Questa potrebbe essere una 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 in /etc/network/interfaces e riavviato il networking. Non si sono mostrati in /etc/resolv.conf .

  • Li ho inseriti in /etc/resolv.conf esplicitamente, ma ovviamente sono stati sovrascritti. Si sono mostrati in /run/resolvconf/interface/eth0.inet , ma non sono mai arrivati a /etc/resolv.conf .

  • Ho provato a configurare resolvconf per gli aggiornamenti dinamici. Nessuna modifica.

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

In disperazione ho modificato /run/resolvconf/interface/lo.named , cancellato l'unica riga in esso ( nameserver 127.0.0.1 ) e riavviata: ifdown eth0 && ifup eth0 .

/etc/resolv.conf ha quindi incluso per la prima volta i miei server dei nomi ISP! Ho eseguito service network-manager restart per vedere se era stabile e /etc/resolv.conf include ancora i miei server dei nomi ISP. Riavviato per essere sicuro ed è ancora lì ma /run/resolvconf/interface/lo.named è stato reimpostato su: 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.

    
risposta data user297954 26.06.2014 - 07:18
1

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 vuoi che sia % Co_de%:

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

$ ifconfig
  :
  :

em2:  <this was the one which was connected>

2.Abbonare 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. Utilizza il tuo editor disponibile preferito per aggiungere una riga search rn.yourcompany.com yourcompany.com intnet.yourcompany.com con i domini aggiuntivi da cercare:

Domain

Salva, disconnetti e riaccedi. NetworkManager ora dovrebbe avere la riga in DOMAIN="yourcompany.com intnet.yourcompany.com" :

search rn.yourcompany.com yourcompany.com intnet.yourcompany.com
    
risposta data CBI 29.08.2014 - 16:54
1

Aggiungi voci in /etc/resolvconf/resolv.conf.d/head

echo 'search puppetmaster.com' | sudo tee -a /etc/resolvconf/resolv.conf.d/head
echo 'nameserver 192.168.1.XXX' | sudo tee -a /etc/resolvconf/resolv.conf.d/head

ed esegui il seguente comando

sudo resolvconf -u
    
risposta data siz 17.05.2016 - 15:22
0

aggiungi sull'ultima riga es:

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 il precedente

sudo chattr -i /etc/resolv.conf

Per ulteriori

man chattr
    
risposta data tanmay.01 23.02.2013 - 18:42
0

traduzione in 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.

link

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

sudo resolvconf –disable-updates

dopo:

sudo resolvconf -a eth0 # or your network Interfas

quindi modifica manualmente /run/resolvconf/resolv.conf

aggiunta di 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.

link

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 di 2 server DNS. saludos P.D. no olvidar reiniciar:

sudo /etc/init.d/networking restart
    
risposta data enlinea777 04.09.2012 - 16:16
0

Se stai utilizzando DHCP, modifica /etc/dhcp/dhclient.conf per aggiungere altri server DNS:

prepend domain-name-servers 12.34.56.78, 12.34.56.79;

Il client DHCP sovrascrive dns-nameservers in etc/network/interfaces e penso anche in /etc/resolvconf/resolv.conf.d/base .

Questo ha funzionato per me sul server Ubuntu 14.04.3.

Vedi i Wiki Debian NetworkConfiguration per i dettagli.

    
risposta data Kevin S. Miller 14.10.2015 - 15:38
0

Ho trovato questa la soluzione più semplice. Se si hanno i file resolv.conf e resolvconf, si passeranno l'un l'altro. È necessario rimuovere il file resolv.conf che viene sovrascritto ogni volta che si riavvia. Metti il server dei nomi 8.8.8.8 8.8.4.4 nella parte inferiore del file resolvconf e poi esegui il comando sudo rm /etc/resolv.conf per sbarazzarsi del file. Quindi fai un riavvio e tutto funzionerà.

    
risposta data Irv 19.10.2016 - 14:09
-1

Basta inserire un

dns-search google.com && dns-nameservers (sample: 8.8.8.8)

comando sulla configurazione /etc/network/interfaces . quindi riavvia la rete.

dovrebbe funzionare.

    
risposta data tesar 06.02.2015 - 10:15
-2

Questa configurazione è dichiarata in /etc/default/bind9

RESOLVCONF=no|yes

no = non applicare la condizione in init.d bind9

yes o altro valore = override resolv.conf

Questo problema si verifica quando installi bind9 e non ti interessa controllare tutti i conf.

    
risposta data user147967 09.04.2013 - 11:40

Leggi altre domande sui tag