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
- Crear
/etc/NetworkManager/dnsmasq.d/hosts.conf
. - Pon líneas como
address=/whatever/1.2.3.4
en él. Verlos documentos (buscar--address
). Son posibles comodines:address/.whatever./1.2.3.4
. - Matar
dnsmasq
(bicho). - Reinícielo:
$ service network-manager restart
.
Respuesta4
dnsmasq debería utilizar automáticamente el /etc/hosts
archivo. Esto se puede desactivar mediante la -h
opción de línea de comando o no-hosts
la 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-hosts
especificado, debería poder usar la addn-hosts
opción para anularlo. Normalmente, esto se usaría para leer un archivo adicional en /etc/hosts
formato. Esto se puede utilizar para especificar datos de host adicionales que desea que proporcione DNS, pero que no desea en su /etc/hosts
archivo. Esto se puede utilizar para permitir que el administrador de paquetes y las herramientas relacionadas administren /etc/hosts
mientras se proporcionan datos de hosts adicionales en un archivo alternativo.