Come posso impostare il mio DNS quando resolv.conf viene sovrascritto?
La maggior parte delle informazioni che vedo online dice di modificare /etc/resolv.conf
, ma ogni modifica che faccio lì viene sovrascritta.
$ 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.1.1
Sembra che 127.0.1.1 sia un'istanza locale di dnsmasq
. I documenti di dnsmasq
dicono di modificare /etc/resolv.conf
. Ho provato a mettere i nameserver personalizzati in /etc/resolv.conf.d/base
, ma le modifiche non sono apparse in /etc/resolv.conf
dopo aver eseguito sudo resolvconf -u
.
Per tua informazione, non voglio cambiare i DNS su una base per connessione, voglio impostare le impostazioni DNS predefinite da utilizzare per tutte le connessioni quando non diversamente specificato.
AGGIORNAMENTO:
Ho risposto io stesso a questa domanda: https://unix.stackexchange.com/a/163506/67024
Penso che sia la soluzione migliore dal momento che:
- Funziona.
- Richiede il minor numero di modifiche e
- Funziona ancora in combinazione con la cache DNS di dnsmasq, piuttosto che bypassarla.
Credo che se vuoi sovrascrivere il nameserver DNS devi semplicemente aggiungere una linea simile a questa nel tuo file
base
sottoresolv.conf.d
.Esempio
Poi mettete la vostra lista di nameserver in questo modo:
Infine aggiornare
resolvconf
:Se dai un'occhiata alla pagina man di
resolvconf
, descrive i vari file sotto/etc/resolvconf/resolv.conf.d/
.Anche se c'è un avvertimento in cima al file
head
:questo avvertimento è lì in modo che quando questi file sono costruiti, l'avvertimento alla fine si farà strada nel file
resolv.conf
risultante che questi file saranno usati per fare. Quindi avresti potuto facilmente aggiungere le lineenameserver
che sono descritte sopra per il filebase
, anche al filehead
.Riferimenti
Sono anche interessato a questa domanda e ho provato la soluzione proposta da @sim.
Per testarla, ho messo
in
/etc/resolvconf/resolv.conf.d/base
ein
/etc/resolvconf/resolv.conf.d/head
.Poi ho riavviato la rete con
Il risultato è che
/etc/resolv.conf
appare comee
nm-tool
afferma che i dnsserver sonoche sono quelli forniti dal mio router. D'altra parte scavare un indirizzo dice che
Se ho ragione, concludo da tutto questo che
Tutto sommato, funziona ma non credo che sia il risultato voluto richiesto. Una soluzione più vicina penso sia la seguente. Modifica
poi aggiungi
Il risultato è il seguente: resolv.conf contiene solo 127.0.0.1, il che significa che dnsmasq cache è invocato e nm-tool dice
il che significa che se il nome cercato non è nella cache, allora viene richiesto all'8.8.8.8 e non al server fornito da dhcp.
Un'altra opzione (forse migliore) è usare "prepend" invece di "supersede": in questo modo, se il nome non è risolto da 8.8.8.8, allora la richiesta ricade sull'altro server. Infatti, nm-tool dice
Prova ad aggiungere
dns-nameservers XXX.XXX.XXX.X
nel tuo file/etc/networking/interfaces
.