Credo che se vuoi sovrascrivere il server dei nomi DNS devi semplicemente aggiungere una riga simile a questa nel tuo base
file sotto resolv.conf.d
.
Esempio
$ sudo vim /etc/resolvconf/resolv.conf.d/base
Quindi inserisci il tuo elenco di server dei nomi in questo modo:
nameserver 8.8.8.8
nameserver 8.8.4.4
Infine aggiorna resolvconf
:
$ sudo resolvconf -u
Se dai un'occhiata alla pagina man di resolvconf
descrive i vari file sotto /etc/resolvconf/resolv.conf.d/
.
/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.
/etc/resolvconf/resolv.conf.d/head
File to be prepended to the dynamically generated resolver
configuration file. Normally this is just a comment line.
/etc/resolvconf/resolv.conf.d/tail
File to be appended to the dynamically generated resolver
configuration file. To append nothing, make this an empty
file. This file is a good place to put a resolver options line
if one is needed, e.g.,
options inet6
Anche se c'è un avviso in cima al head
file:
$ 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
questo avviso è lì in modo che quando questi file vengono costruiti, l'avviso alla fine si farà strada nel resolv.conf
risultante file che questi file verranno utilizzati per creare. Quindi avresti potuto facilmente aggiungere il nameserver
righe descritte sopra per base
file, al head
anche il file.
Riferimenti
- Mantieni server dei nomi DNS per Ubuntu 14.04
- Come faccio ad aggiungere un server DNS tramite resolv.conf?
Anche io sono interessato a questa domanda e ho provato la soluzione proposta da @sim.
Per testarlo, metto
nameserver 8.8.8.8
in /etc/resolvconf/resolv.conf.d/base
e
nameserver 8.8.4.4
in /etc/resolvconf/resolv.conf.d/head
Quindi ho riavviato la rete con
sudo service network-manager restart
Il risultato è che /etc/resolv.conf
sembra
# 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 127.0.1.1
e nm-tool
afferma che i dnsserver sono
DNS: 208.67.222.222
DNS: 208.67.220.220
che sono quelli forniti dal mio router. D'altra parte scavare un indirizzo lo dice
;; Query time: 28 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)
Se ho ragione, concludo da tutto ciò che
- solo la parte "head" viene letta da resolvonf:la parte "base" è in qualche modo controllata da dnsmasq
- il dnsserver è effettivamente forzato a 8.8.4.4 indipendentemente dal server fornito da dhcp, MA si perde la memorizzazione nella cache fornita da dnsmasq, poiché la richiesta viene sempre inviata a 8.8.4.4
- dnsmasq utilizza ancora SOLO il dnsserver fornito da dhcp.
Tutto sommato, funziona ma non credo che sia il risultato desiderato richiesto. Una soluzione più ravvicinata penso sia la seguente. Modifica
sudo vim /etc/dhcp/dhclient.conf
quindi aggiungi
supersede domain-name-servers 8.8.8.8;
Il risultato è il seguente:resolv.conf contiene solo 127.0.0.1, il che significa che la cache dnsmasq è stata richiamata e nm-tool dice
DNS: 8.8.8.8
il che significa che se il nome cercato non è nella cache, allora viene richiesto su 8.8.8.8 e non sul server fornito da dhcp.
Un'altra opzione (forse migliore) è usare "prepend" invece di "supersede":in questo modo, se il nome non viene risolto da 8.8.8.8, allora la richiesta ricade sull'altro server. Infatti, nm-tool dice
DNS: 8.8.8.8
DNS: 208.67.222.222
DNS: 208.67.220.220
Ho scoperto che puoi cambiare i nameserver che dnsmasq
utilizza aggiungendo le seguenti righe a /etc/dnsmasq.conf
:
server=8.8.8.8
server=8.8.4.4
Non avevo un /etc/dnsmasq.conf
file, poiché è installato dal pacchetto dnsmasq, ma Ubuntu viene fornito solo con dnsmasq-base. Ho eseguito sudo apt-get install dnsmasq
, quindi modificato /etc/dnsmasq.conf
, quindi sudo service dnsmasq restart
e sudo service network-manager restart
.
Ho eseguito sudo tail -n 200 /var/log/syslog
per controllare il mio registro di sistema e verificare che dnsmasq
stava usando i nameserver che ho specificato:
Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.8.8#53
Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.4.4#53