Dnsmasq no funciona para señalar direcciones .local a 127.0.0.1

Me gustaría que las direcciones locales (como test.local) apunten a 127.0.0.1 pero no funciona. Estoy en la última Ubuntu. En /etc/NetworkManager/NetworkManager.conf comenté dns=dnsmasq luego sudo service network-manager restart .

Entonces instalé dnsmasq y agregué una address=/local/127.0.0.1 a /etc/dnsmasq.d/mycustomfile entonces sudo service dnsmasq restart . Aparte de lo que he mencionado no he hecho otros cambios.

Pero cuando visite test.local no resuelve a 127.0.0.1, hacer un ping de esa dirección .local tampoco es exitosa. Tal vez el contenido de /etc/resolv.conf sea ​​relevante, es sólo el valor predeterminado. No lo /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 222.11.22.36 nameserver 222.11.22.37 

Esta es la salida cuando ejecuto dnsmasq no como un daemon:

 $ sudo dnsmasq --no-daemon dnsmasq: started, version 2.68 cachesize 150 dnsmasq: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth dnsmasq: reading /etc/resolv.conf dnsmasq: using nameserver 222.11.22.37#53 dnsmasq: using nameserver 222.11.22.36#53 dnsmasq: read /etc/hosts - 9 addresses 

Cuando dnsmasq está ejecutando el /etc/resolv.conf se actualiza automáticamente (y vuelve a la entrada anterior cuando dnsmasq se detiene):

 # 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.0.1 

Y esto:

 $ sudo nslookup test.local 127.0.0.1 Server: 127.0.0.1 Address: 127.0.0.1#53 Name: test.local Address: 127.0.0.1 

Pero todavía hacer un ping a localhost no funciona.

¿Qué debo hacer para que dnsmasq trabaje para resolver direcciones .local?

local parecen ser algún tipo de palabra clave reservada, al menos en Ubuntu:

  • address=/local/127.0.0.1 – no funciona.
  • address=/loc/127.0.0.1 – funciona.

Parece que dnsmasq se está iniciando correctamente. Debe probar si dnsmasq está trabajando correctamente con nslookup test.local 127.0.0.1 .

Para asegurarse de que el sistema está utilizando dnsmasq, debe actualizar el /etc/resolv.conf para usar el nameserver 127.0.0.1 como primera opción.

También puede usar una configuración de resolución de contenedor en dnsmasq con --resolv-file=/etc/resolv.conf.dnsmasq .

Si lo que quieres solo implica apuntar a tu propia máquina y no intentar usar dnsmasq para controlar la resolución de dns de otros ordenadores, entonces lo que quieres es simplemente añadir algunas entradas en /etc/hosts . Le recomiendo que deshaga todos sus cambios en dnsmasq y sus configuraciones y asegúrese de que /etc/hosts tenga lo siguiente en la parte superior:

 127.0.0.1 localhost 127.0.1.1 mycomputername mycomputername.local anothername.local 

Después de esto, hacer ping a mycomputername.local se apuntará a usted mismo (en realidad, apuntará a dnsmasq servidor que se ejecuta en 127.0.1.1, ENTONCES a localhost). Incluso puede agregar entradas para otros equipos en su red para que le aparezca, en esta máquina, que las computadoras pueden ser referenciadas como computer1.local computer2.local etc.

 192.168.1.31 computer1.local 192.168.1.32 computer2.local 

Si no puede deshacer los cambios con dnsmasq, puede agregar las entradas adicionales después de localhost , pero no elimine o cambie la entrada localhost sí. Así como esto:

 127.0.0.1 localhost mycomputername mycomputername.local anothername.local 

BTW: la forma correcta de modificar resolv.conf en el escritorio de Ubuntu es con el administrador de red en la barra de tareas. La forma correcta en el servidor de Ubuntu es añadir entradas dns-nameserver bajo su dispositivo de red en /etc/network/interfaces y reiniciar o hacer ifdown eth0 && ifup eth0 . Como la advertencia en los estados /etc/resolv.conf , no lo modifique directamente, se escriba dinámicamente en base a la configuración de /etc/network/interfaces .