La mayor parte de la información que veo en línea dice editar /etc/resolv.conf
, pero cualquier cambio que haga allí simplemente se anula.
$ 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
Parece que 127.0.1.1 es una instancia local de dnsmasq
. Los dnsmasq
documentos dicen editar /etc/resolv.conf
. Intenté colocar servidores de nombres personalizados /etc/resolv.conf.d/base
, pero los cambios no aparecieron /etc/resolv.conf
después de ejecutar sudo resolvconf -u
.
Para su información, no quiero cambiar el DNS por conexión, quiero establecer la configuración de DNS predeterminada para usar en todas las conexiones cuando no se especifique lo contrario.
ACTUALIZAR:
Yo mismo respondí esta pregunta: https://unix.stackexchange.com/a/163506/67024
Creo que es la mejor solución ya que:
- Funciona.
- Requiere la menor cantidad de cambios y
- Todavía funciona junto con el caché DNS de dnsmasq, en lugar de omitirlo.
Respuesta1
Creo que si desea anular el servidor de nombres DNS, simplemente agregue una línea similar a esta en su base
archivo en resolv.conf.d
.
Ejemplo
NOTA:Antes de comenzar, asegúrese de que esté instalado el siguiente paquete apt install resolvconf
.
$ sudo vim /etc/resolvconf/resolv.conf.d/base
Luego coloque 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, resolvconf
describe los distintos archivos en /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
archivo resultante para el cual se utilizarán estos archivos. Por lo tanto, también podría haber agregado fácilmente las nameserver
líneas que se describen anteriormente para el base
archivo head
.
Referencias
Respuesta2
También estoy interesado en esta pregunta y probé la solución propuesta por @sim.
Para probarlo puse
nameserver 8.8.8.8
/etc/resolvconf/resolv.conf.d/base
y en
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
afirma que el servidor DNS está
DNS: 208.67.222.222
DNS: 208.67.220.220
que son los que me proporciona mi router. Por otro lado, buscar una dirección indica que
;; Query time: 28 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)
Si estoy en lo cierto, de todo esto concluyo que
- resolvonf sólo lee la parte "principal": la parte "base" está controlada de alguna manera por dnsmasq
- el servidor dns en realidad se fuerza 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 todavía usa SÓLO el servidor dns proporcionado por dhcp.
En definitiva, 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 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 nm-tool 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 proporcionado por dhcp.
Otra opción (quizás mejor) es usar "anteponer" en lugar de "reemplazar": de esta manera, si el nombre no se resuelve en 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
Respuesta3
Descubrí que puedes cambiar los servidores de nombres que dnsmasq
utilizas agregando las siguientes líneas a /etc/dnsmasq.conf
:
server=8.8.8.8
server=8.8.4.4
Sin embargo , no tenía un /etc/dnsmasq.conf
archivo, ya que lo instala el paquete dnsmasq, pero Ubuntu solo viene con dnsmasq-base. Ejecuté sudo apt-get install dnsmasq
, luego edité /etc/dnsmasq.conf
, luego sudo service dnsmasq restart
y sudo service network-manager restart
.
Corrí sudo tail -n 200 /var/log/syslog
para verificar 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
Respuesta4
Buscar 'Conexión de red'
Abrelo
Luego seleccione WiFi o Ethernet, o lo que esté usando, y haga clic en editar. Obtendrás esto:
Seleccione ipv4 en pestañas
Seleccione direcciones solo en el método
Ingrese su nombre DNS a continuación y guárdelo
Ya terminaste