respuesta sencilla

respuesta sencilla

Instalé DNSMASQ pero no se iniciaba porque el puerto 53 estaba ocupado.

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

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

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

pero esto no está sucediendo.

¿Por qué? Por cierto, como servidor DNS de almacenamiento en caché, funciona bien. Sólo quiero que resuelva los hosts desde el archivo /etc/hosts, eso es todo.

Respuesta1

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 ajustar 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

Por favor marqueel bichocomo si te afectara.

Otra solución sin parchear archivos del sistema

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

addn-hosts=/etc/hosts

Respuesta2

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

Finalmente encontré una solución que simplemente agrega 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 agreguemos /etc/hosts como un archivo host adicional.

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

Respuesta3

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

respuesta sencilla

  1. Crear /etc/NetworkManager/dnsmasq.d/hosts.conf.
  2. Pon líneas como address=/whatever/1.2.3.4en él. Verlos documentos (buscar --address). Son posibles comodines: address/.whatever./1.2.3.4.
  3. Matar dnsmasq(bicho).
  4. Reinícielo: $ service network-manager restart.

Respuesta4

dnsmasq debería utilizar automáticamente el /etc/hostsarchivo. Esto se puede desactivar mediante la -hopción de línea de comando o no-hostsla opción de configuración. No esperaría que ninguno de los dos estuviera configurado 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 lo 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 utilizar para especificar datos de host adicionales que desea que proporcione DNS, pero que 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.

información relacionada