Come rendere permanente l'indirizzo del server dei nomi in /etc/resolv.conf?


14

Non riesco a conservare l'indirizzo del server dei nomi impostato tramite /etc/resolv.conf. Ogni volta che imposto il valore, il gestore della rete lo sovrascrive con il gateway predefinito al riavvio.

Come impostarlo nel modo giusto?

Preferirei un modo diverso dal cambiare il server dei nomi nel router.


Devi cambiarlo con il NetworkManager(come è indicato nella prima riga). Questo file viene rigenerato ad ogni avvio da NetworkManager. Dipende dalla tua Linux-distro (che non hai menzionato) come accedervi NetworkManager.
Rik,

Risposte:


13

Dipende. Si prega di leggere fino alla fine.

Se non hai installato il pacchetto resolvconf , allora è facile: dopo averlo modificato nel modo che preferisci, emetti il ​​comando

 sudo chattr +i /etc/resolv.conf

Il comando modifica gli attributi del file, rendendolo immutable(l'opzione + i).

Tuttavia, se hai installato il pacchetto resolvconf, il file /etc/resolv.conf potrebbe essere trasformato in un link simbolico,

 # file /etc/resolv.conf
 /etc/resolv.conf: symbolic link to `../run/resolvconf/resolv.conf'

che è un file su un file system virtuale, l'epitomia di una versione non permanente. La cosa divertente è che potresti non sapere che hai installato resolvconf, perché le versioni recenti di sistemi operativi simili a Debian sono preinstallate. Puoi stabilire se la tua distribuzione l'ha installata per te emettendo il comando:

 #whereis resolvconf
 resolvconf: /sbin/resolvconf /etc/resolvconf /lib/resolvconf /usr/share/man/man8/resolvconf.8.gz

Ancora più importante, puoi stabilire se il tuo /etc/resolv.confè stato trasformato in un link tramite il comando (file /etc/resolv.conf) sopra. Se la risposta è ASCII text, usa chattr, altrimenti ...

Se usi un IP statico, la cosa più semplice è aggiungere la seguente riga (o qualcosa del genere)

 dns-nameservers 8.8.4.4 8.8.8.8

alla stanza che definisce le proprietà dell'interfaccia statica in / etc / network / interfaces.

Se invece utilizzi un laptop che si connette continuamente a reti diverse, puoi seguire LawrenceCl'eccellente suggerimento. Ma se hai resolvconf sul tuo sistema, il modo corretto (e più semplice) per fornire un set fisso di DNS è usare i file in /etc/resolvconf/resolv.conf.d . In particolare, vengono utilizzati i seguenti file (vedere la pagina di Stephane Graber ):

base : utilizzato quando non è possibile trovare altri dati

head : utilizzato per l'intestazione di resolv.conf, può essere utilizzato per garantire che un server DNS sia sempre il primo nell'elenco

tail : qualsiasi voce in tail viene aggiunta alla fine del file resolv.conf risultante.

Quindi metti in testa i tuoi nameserver preferiti , come segue

  nameserver 8.8.8.8

e il gioco è fatto.


2
@dhiller Ultrasawblade ha cambiato il suo nome in LawrenceC, è quello qui sotto.
MariusMatutiae,

Post molto bello e interessante, vorrei che tu aggiungessi alcuni link di documentazione su questo argomento per gli utenti che vogliono saperne di più sull'argomento, Thx
Philippe Gachoud,

/etc/resolvconf/non esiste per impostazione predefinita su Ubuntu 18.04.
Dan Dascalescu,

9

Aggiungi una linea simile /etc/dhcp/dhclient.confall'utilizzo di un terminale root:

supersede domain-name-servers 74.122.198.48, 50.116.23.211;

Ciò provoca dhclient, il programma che emette una richiesta DHCP e apporta modifiche in base a ciò che la risposta ha detto, per sostituire le informazioni che ha ottenuto dal server DHCP con quanto sopra prima di apportare modifiche.

Quanto sopra sono due server DNS OpenNIC. Sostituire secondo necessità per qualsiasi server che si desidera utilizzare.

Dal momento che ciò accade ogni volta che ricevi informazioni di configurazione da DHCP, quindi usa dhclient -v eth0o qualunque interfaccia per aggiornarle e vedere la modifica.


1
Invece di sovrascrivere il DNS (di solito il router), si potrebbe aggiungere la linea prepend domain-name-servers 8.8.8.8per esempio. Questo userebbe il DNS dell'ISP quando disponibile.
Axel Latvala,

3

Sembra come indicato da @Rik che il motivo delle sostituzioni DNS al riavvio sia dovuto al gestore / utilità di rete impostato in questo modo. In Linux Mint, come da schermata, avevo il mio metodo IPv4 impostato solo su indirizzi automatici (DHCP). È quindi possibile immettere le impostazioni corrette in /etc/resolv.conf o nella sezione dei server DNS. Ricordo che in Ubuntu 13.04 i miei server dei nomi sono cambiati alcune volte per un lungo periodo di tempo, ma dopo che sono andato effettivamente a modificarli nella GUI, tutto sembrava stabile da lì in poi.

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


3

Ho avuto lo stesso problema, ma utilizzo un indirizzo IP statico. La correzione stava semplicemente aggiungendo il DNS in / etc / network / interfaces

iface eth0 inet static
    address [your ip>
    netmask [your netmask]
    network [your network]
    broadcast [your broadcast]
    gateway [your gateway]
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers [dns server1] [dns server2]
    dns-search [your domain]

Sì, questo lo risolve perché NetworkManager ignora le interfacce elencate in /etc/network/interfaces. Buona pesca!
Izzy,

1

Se hai usato wicd, fai clic destro sull'icona e fai clic su informazioni sulla connessione. Quando la finestra si apre, fai clic sulle proprietà di quella a cui sei connesso.

Controllare usa DNS statico e nella riga che indica il tipo di server DNS 1 nell'IP per il DNS di Google 8.8.8.8e nella riga per il tipo di server DNS 2 8.8.4.4quindi fare clic su "ok".

Se ricevi errori dalle impostazioni predefinite, puoi contattare il tuo ISP e menzionarlo. Di solito assegnano server DNS al modem quando ci si connette con loro.


0

Attaccare da chattr +io simile è una soluzione rapida, nella migliore delle ipotesi, e dovrebbe essere evitata ogni volta che è possibile (almeno a lungo termine - come detto, è una soluzione a breve termine fino a quando non si trova il tempo per la vera soluzione) . Come già sottolineato, questo è un lavoro per NetworkManager, che offre una CLI che possiamo usare per questo:

# trova quale interfaccia regolare
dispositivo nmcli
# l'output è simile a:
# CONNESSIONE STATO TIPO DI DISPOSITIVO
# enp0s3 ethernet connesso my-office
# lo loopback non gestito -
# Da ciò, abbiamo bisogno della CONNESSIONE.

# Ora aggiungi i nostri "domini di ricerca":
nmcli connection modifica my-office ipv4.dns-search example1.com
nmcli con mod my-office + ipv4.dns-search example2.com

# E i nostri server dei nomi:
nmcli con modifica my-office ipv4.dns 213.73.91.35
nmcli con modifica my-office + ipv4.dns 87.118.100.175
# nota il "+" nella seconda riga: aggiungine un altro,
# mentre la prima riga sovrascrive la voce esistente.
# avremmo potuto farlo con una sola chiamata:
nmcli con change my-office ipv4.dns "213.73.91.35 87.118.100.175"

# OK, quindi ora diciamo che ignora gli aggiornamenti dal server DHCP:
nmcli con modifica my-office ipv4.ignore-auto-dns sì

# e applica le modifiche alla nostra configurazione in esecuzione
nmcli con il mio ufficio

Se usi un indirizzo IP statico, puoi anche usare la soluzione dalla risposta di kanelbolle .


0

Incredibile quanto sia frustrante questo piccolo problema può ottenere, quando le soluzioni indicate per farlo funzionare non più sul Ubunutu 18.04.

Ciò che ha funzionato per me è stato semplicemente sovrascrivere il nameservervalore /etc/resolv.confsu ogni avvio. sudomodifica /etc/rc.locale aggiungi questa riga:

 sed -i "s/nameserver 127.0.0.53/nameserver 8.8.8.8/" /etc/resolv.confsudo /etc/rc.local
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.