Si encuentras algún error en tu código o trabajo, recuerda probar siempre en un entorno de testing antes aplicar el código al trabajo final.
Solución:
Creo que si desea anular el servidor de nombres DNS, simplemente agregue una línea similar a esta en su base
archivar 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 actualizar resolvconf
:
$ sudo resolvconf -u
Si echa un vistazo a la página de manual 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 de la head
expediente:
$ 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 se abrirá camino en el resultado resolv.conf
archivo que estos archivos se utilizarán para hacer. Por lo tanto, podría haber agregado fácilmente el nameserver
líneas que se describen anteriormente para el base
archivo, a la head
archivo también.
Referencias
- Servidor de nombres persistente dns 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 @sim.
Para probarlo pongo
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 son
DNS: 208.67.222.222
DNS: 208.67.220.220
cuales son los proporcionados por mi router. 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
- resolvonf solo lee la parte “cabeza”: dnsmasq controla de alguna manera la parte “base”
- el dnsserver 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 utilizando SÓLO el servidor dns proporcionado por dhcp.
Con todo, funciona, pero no creo que sea el resultado deseado. Una solución más cercana, creo, es la siguiente. Editar
sudo vim /etc/dhcp/dhclient.conf
Luego añade
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
utiliza agregando las siguientes líneas a /etc/dnsmasq.conf
:
server=8.8.8.8
server=8.8.4.4
yo no tenía un /etc/dnsmasq.conf
Sin embargo, ya que está instalado por el paquete dnsmasq, pero Ubuntu solo viene con dnsmasq-base. corrí sudo apt-get install dnsmasq
luego editado /etc/dnsmasq.conf
luego sudo service dnsmasq restart
y sudo service network-manager restart
.
corrí sudo tail -n 200 /var/log/syslog
para comprobar 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
valoraciones y comentarios
Más adelante puedes encontrar las crónicas de otros creadores, tú además tienes la opción de insertar el tuyo si te apetece.