Creo que si desea anular el servidor de nombres DNS, simplemente agregue una línea similar a esta en su base
archivo bajo resolv.conf.d
.
Ejemplo
$ sudo vim /etc/resolvconf/resolv.conf.d/base
Luego ponga su lista de servidores de nombres así:
nameserver 8.8.8.8
nameserver 8.8.4.4
Finalmente actualice resolvconf
:
$ sudo resolvconf -u
Si echas un vistazo a la página man de resolvconf
describe los diversos archivos bajo /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
Aunque hay una advertencia en la parte superior del head
archivo:
$ 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
esta advertencia está ahí para que cuando se construyan estos archivos, la advertencia finalmente llegue al resolv.conf
resultante archivo que estos archivos se utilizarán para hacer. Así que fácilmente podrías haber agregado el nameserver
líneas que se describen arriba para el base
archivo, al head
archivo también.
Referencias
- Servidor de nombres dns persistente para ubuntu 14.04
- ¿Cómo agrego un servidor DNS a través de resolv.conf?
También estoy interesado en esta pregunta y probé la solución propuesta por @sim.
Para probarlo, puse
nameserver 8.8.8.8
en /etc/resolvconf/resolv.conf.d/base
y
nameserver 8.8.4.4
en /etc/resolvconf/resolv.conf.d/head
Luego reinicié la red con
sudo service network-manager restart
El resultado es que /etc/resolv.conf
parece
# 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
y nm-tool
establece que el dnsserver es
DNS: 208.67.222.222
DNS: 208.67.220.220
cuáles son los proporcionados por mi enrutador. Por otro lado, cavar una dirección dice que
;; Query time: 28 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)
Si no me equivoco, concluyo de todo esto que
- solo la parte "head" es leída por resolvonf:la parte "base" está controlada de alguna manera por dnsmasq
- el servidor dns en realidad está obligado a 8.8.4.4 independientemente del servidor proporcionado por dhcp, PERO pierde el almacenamiento en caché proporcionado por dnsmasq, ya que la solicitud siempre se envía a 8.8.4.4
- dnsmasq sigue usando SOLO el servidor dns proporcionado por dhcp.
En general, funciona, pero no creo que sea el resultado deseado. Creo que una solución más cercana es la siguiente. Editar
sudo vim /etc/dhcp/dhclient.conf
luego agrega
supersede domain-name-servers 8.8.8.8;
El resultado es el siguiente:resolv.conf contiene solo 127.0.0.1, lo que significa que se invoca el caché dnsmasq y la herramienta nm dice
DNS: 8.8.8.8
lo que significa que si el nombre buscado no está en el caché, entonces se solicita en 8.8.8.8 y no en el servidor provisto por dhcp.
Otra opción (quizás mejor) es usar "anteponer" en lugar de "reemplazar":de esta manera, si el nombre no se resuelve con 8.8.8.8, la solicitud vuelve al otro servidor. De hecho, nm-tool dice
DNS: 8.8.8.8
DNS: 208.67.222.222
DNS: 208.67.220.220
Descubrí que puedes cambiar los servidores de nombres que dnsmasq
usa agregando las siguientes líneas a /etc/dnsmasq.conf
:
server=8.8.8.8
server=8.8.4.4
No tenía un /etc/dnsmasq.conf
Sin embargo, ya que está instalado por el paquete dnsmasq, pero Ubuntu solo viene con dnsmasq-base. Ejecuté sudo apt-get install dnsmasq
, luego editado /etc/dnsmasq.conf
, luego sudo service dnsmasq restart
y sudo service network-manager restart
.
Ejecuté sudo tail -n 200 /var/log/syslog
para revisar mi syslog y verificar que dnsmasq
estaba usando los servidores de nombres que especifiqué:
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