Configure dnsmasq de NetworkManager para usar / etc / hosts

22

He instalado DNSMASQ pero no estaba comenzando ya que el puerto 53 estaba ocupado.

Descubrí que ubuntu ya tenía el paquete dnsmasq y está funcionando.

Ahora el problema es ... Solo quiero poder resolver mis hosts en / etc / hosts a través de él

es decir: nslookup somehostonlan localhost para resolverse a cierta IP tomada del archivo / etc / hosts.

Pero esto no está sucediendo.

¿Por qué? Por cierto, como el servidor DNS de almacenamiento en caché está funcionando bien. Solo quiero que resuelva hosts del archivo / etc / hosts, eso es todo

bakytn
fuente

Respuestas:

22

Para acelerar Internet, Ubuntu 12.04 ha agregado un complemento a NetworkManager para iniciar dnsmasq, un servidor DNS local que almacena en caché las entradas DNS. El problema es que el complemento ha codificado la cadena --no-hosts.

Entonces, una solución es comentar la línea que carga el complemento en el archivo de configuración de NetworkManager y reiniciar NetworkManager:

sudo mv /etc/NetworkManager/NetworkManager.conf /etc/NetworkManager/NetworkManager.conf.bak
sudo bash -c 'cat /etc/NetworkManager/NetworkManager.conf.bak | sed -e "s/^\(dns=dnsmasq\)$/#\1/" > /etc/NetworkManager/NetworkManager.conf'
sudo restart network-manager

Otra solución es envolver dnsmasq para filtrar los argumentos no deseados:

sudo mv /usr/sbin/dnsmasq /usr/sbin/dnsmasq.bin
sudo bash -c 'cat > /usr/sbin/dnsmasq' << EOF
#!/bin/sh
dnsmasq=/usr/sbin/dnsmasq.bin

exec $dnsmasq `echo $@ | sed -e s/--no-hosts//`
EOF

sudo chmod 755 /usr/sbin/dnsmasq

Marque el error como que le afecta.

Otra solución sin parchear archivos del sistema

cat /etc/NetworkManager/dnsmasq.d/hosts.conf 

addn-hosts=/etc/hosts
kbenoit
fuente
7

Este error todavía me afectó incluso ahora (Ubuntu 14.04).

Finalmente encontré una solución que, simplemente agregue esta línea 'addn-hosts = / etc / hosts' al archivo de configuración dnsmasq del paquete Newworkmanager.

echo 'addn-hosts=/etc/hosts' > /etc/NetworkManager/dnsmasq.d/etc-hosts
service network-manager restart

La idea es que estamos agregando / etc / hosts como un archivo de host adicional.

Incluso si pudiera encontrar una solución, la opción codificada '--no-hosts' en el archivo binario / usr / sbin / NetworkManager me decepciona.

harish2704
fuente
7

A agosto de 2015, las otras respuestas están desactualizadas.

Respuesta simple

  1. Crear /etc/NetworkManager/dnsmasq.d/hosts.conf.
  2. Pon líneas como address=/whatever/1.2.3.4esta. Ver los documentos (buscar --address). Los comodines son posibles: address/.whatever./1.2.3.4.
  3. Matar dnsmasq( error ).
  4. Reiniciarlo: $ service network-manager restart.
mightyiam
fuente
1

dnsmasq debería usar automáticamente el /etc/hostsarchivo. Esto puede deshabilitarse mediante la -hopción de línea de comando o la no-hostsopción de configuración. No esperaría que ninguno se establezca en la configuración predeterminada.

Intente forzar a dnsmasq a recargar su archivo de hosts. (Los cambios en el archivo de configuración requieren un reinicio). Cualquiera de estos comandos debería funcionar.

service dnsmasq reload

kill -HUP $(pidof dnsmasq)

Si está trabajando con un sistema que ha no-hostsespecificado, debería poder usar la addn-hostsopción para anularlo. Normalmente, esto se usaría para leer un archivo adicional en /etc/hostsformato. Esto se puede usar para especificar datos de host adicionales que desea que proporcione DNS, pero no desea en su /etc/hostsarchivo. Esto se puede utilizar para permitir que el administrador de paquetes y las herramientas relacionadas administren /etc/hostsmientras se proporcionan datos de hosts adicionales en un archivo alternativo.

BillThor
fuente
/etc/dnsmasq.conf tiene todas las opciones comentadas. Recargar no ayuda
bakytn 01 de
No se lo que hice. parece estar funcionando ahora
bakytn 01 de
3
¿Por qué responderías esto si realmente no sabes la respuesta? El hecho de que "no espere que ninguno de los dos esté configurado en la configuración predeterminada" no lo hace así, ya que de hecho está configurado y codificado en dnsmasq en NetworkManger.
Justin Buser
dnsmasq debe reiniciarse para cargar los cambios en los archivos de configuración
txwikinger
@txwikinger Muchos archivos de opciones se vuelven a leer cuando dnsmasqreciben una HUPseñal. Esto incluye los archivos /etc/hostsy /etc/ethers. Los tiempos de reinicio son lo suficientemente rápidos, que será raro que los clientes no reciban una respuesta.
BillThor