resolv.conf se sobrescribe cuando se reinicia dnsmasq, rompiendo dnsmasq


9

Estoy ejecutando Debian Jessie y estoy tratando de configurar dnsmasq como un servidor DNS de almacenamiento en caché. Usé una guía para llegar a lo siguiente /etc/dnsmasq.conf:

listen-address=127.0.0.1
bind-interfaces
domain-needed
bogus-priv
no-hosts
dns-forward-max=150
cache-size=1000
neg-ttl=3600
resolv-file=/etc/resolv.dnsmasq
no-poll

Hacer sudo service dnsmasq restartfalla y no comenzará, diciéndome

Mar 26 17:13:01 user dnsmasq[26743]: dnsmasq: syntax check OK.
Mar 26 17:13:01 user dnsmasq[26746]: dnsmasq: only one resolv.conf file allowed in no-poll mode.

Ok, es extraño que una configuración sacada de una guía haya fallado. Simplemente eliminaré la no-pollopción para ver si funciona. Esta vez comienza bien, pero la resolución de DNS está fallando claramente. Archivos Relevantes:

/etc/resolv.conf:

nameserver 127.0.0.1

/etc/resolv.dnsmasq:

nameserver 8.8.8.8

/var/run/dnsmasq/resolv.conf:

nameserver 127.0.0.1

El tercer archivo parece ser el archivo resolv.conf en vivo de dnsmasq, porque agregarle una línea de servidor de nombres mientras dnsmasq ya se está ejecutando hace que la resolución DNS comience a funcionar de inmediato. Entonces parece que ignoró mi /etc/resolv.dnsmasq. También intenté agregar una línea de servidor de nombres a mi /etc/resolv.confy eliminar la resolv-filelínea /etc/dnsmasq.conf, pero se sobrescribe inmediatamente a lo que ves arriba al hacer sudo service dnsmasq restart.

¿Qué está pasando con dnsmasq y configuro dnsmasq como un servidor DNS de almacenamiento en caché?


1
Si solo quieres un servidor estático, ¿por qué no pones server=8.8.8.8tu configuración dnsmasq?
tripleee

Estoy pensando que no-pollbásicamente dice ignorar el resolv-file. Al inicio, toma el archivo que sea más nuevo, por lo que será /etc/resolv.confen su caso (porque se reescribe cuando algo cambia).
tripleee

Todavía no sé cuál sería la forma correcta de hacerlo si tuviera en mente más de un servidor DNS, pero como no lo hago, estaré feliz de que su comentario haya resuelto mi problema.
nullUser

Respuestas:


11

Parece que hay un error en el script de inicio dnsmasqque se utiliza resolvconfpara bloquear el solucionador local si la interfaz de bucle de retorno local no está explícitamente excepten el /etc/defaults/dnsmasqarchivo.

La respuesta corta es que puedes agregar ...

DNSMASQ_EXCEPT=lo

para /etc/defaults/dnsmasqresolver el problema

Para más información, vea esta pregunta ...

/raspberrypi/37439/proper-way-to-prevent-dnsmasq-from-overwriting-dns-server-list-supplied-by-dhcp


Esto me salvó la vida. Gracias.
Ryan Bobrowski,

3

bigjosh tiene razón, excepto que ha habido una actualización de dnsmasq, y ahora hay una opción al final de la /etc/default/dnsmasqcual puedes quitar el hash:

IGNORE_RESOLVCONF=yes

Así es como funciona con mi configuración compleja en Ubuntu 16.04.
Ikon

1
La manera de bigjosh funcionó para mí. A pesar de que /etc/defaults/dnsmasqtenía IGNORE_RESOLVECONF=yesinstrucciones para descomentarlo para resolver este problema, lo que no hizo.
andho 23/0718

2

No usar

resolv-file=/etc/resolv.dnsmasq

Ponga el servidor dns en dnsmasq.conf, como

server=/localnet/192.168.0.1 # change ip for your ip-server
server=8.8.8.8
server=8.8.4.4

Y agregar a dnsmasq.conf

no-resolv

1

Si lo que desea es un servidor DNS sólo de caché y nada más elegante que dnsmasq puede hacer, sería mejor instalar cualquiera lwresdo unboundy utilizando la configuración de valores por defecto que le da un servidor DNS de sólo caché. Luego simplemente configuras el /etc/resolv.conf"servidor de nombres 127.0.0.1" y listo.

Lo bueno es que estos dos paquetes no se meten con lo que hay en /etc/resolv.confdnsmasq y, por lo tanto, es una solución más limpia en mi humilde opinión. Por lo general, también puede eliminar el resolvconfpaquete para que no se pierda nada /etc/resolv.conf.

Para su información, dnsmasq se ha vuelto bastante complicado, demasiadas campanas y silbatos y ya solo está causando dolor a la mayoría de las personas. Viola KISS en mi libro.


Desafortunadamente, algunos paquetes dependen de dnsmasq-base, como network-managery libvirt-bin(si está haciendo KVM), por lo que no siempre es posible deshacerse de él por completo. En ese caso, puede eliminarlo /usr/sbin/dnsmaqy convertirlo en un enlace rígido /bin/truepara que siempre tenga éxito (para engañar al guión de inicio) Luego, chattr +i /usr/sbin/dnsmasqpara evitar que se actualice. He tenido que hacer esto en varias computadoras portátiles.
milli

+1 también se describe en philandstuff.com/2013/11/07/dnsmasq-resolvconf.html . Comportamiento realmente desagradable y sigue causando dolor incluso 5 años después de la publicación y el informe de error ...
user2480144
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.