dnsmasq no funciona para apuntar direcciones locales a 127.0.0.1


4

Me gustaría obtener .localdirecciones (como test.local) para señalar, 127.0.0.1pero no funciona. Estoy en la última versión de Ubuntu. En /etc/NetworkManager/NetworkManager.conf lo comenté y dns=dnsmasqluego lo hice sudo service network-manager restart.

Luego instalé dnsmasq y agregué un address=/local/127.0.0.1archivo a /etc/dnsmasq.d/mycustomfile y luego lo hice sudo service dnsmasq restart. Aparte de lo que he mencionado, no hice otros cambios.

Pero cuando visito test.local no se resuelve en 127.0.0.1, hacer un ping de esa dirección .local tampoco tiene éxito. Tal vez el contenido de /etc/resolv.confsea ​​relevante, es solo el valor predeterminado que no lo cambié:

# 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

Este es el resultado cuando ejecuto dnsmasq no como un demonio:

$ 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 se está ejecutando, /etc/resolv.conf se actualiza automáticamente (y vuelve a la entrada anterior cuando se detiene dnsmasq):

# 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 seguir haciendo un ping a localhost no funciona.

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

Respuestas:


6

local parece 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 -- trabajos.

rand'Chris: Gracias por intentar mejorar una respuesta en Super User . Pero, aunque muchas personas creen que está bien corregir errores en las publicaciones de otras personas y agregar pequeñas aclaraciones, su edición sugerida es tan sustancial que (en mi humilde opinión) debería publicarse como una respuesta separada. Está bien repetir (alguna) información de una respuesta anterior siempre que agregue algo de valor. (Por supuesto, debe identificar la respuesta que está construyendo, vinculándola y citando el nombre del autor). También puede consultar esta otra edición rechazada .
Scott

7

Parece que dnsmasq está comenzando correctamente. Debe probar si dnsmasq funciona correctamente con nslookup test.local 127.0.0.1.

Para asegurarse de que el sistema esté usando dnsmasq, debe actualizar /etc/resolv.confpara usar nameserver 127.0.0.1como primera opción.

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


He actualizado mi pregunta con información basada en su respuesta, le agradecería que le eche un vistazo.
user779159

Además, el /etc/dnsmasq.confarchivo original se deja como estaba originalmente, con todo comentado. ¿Hay cosas que necesito comentar a partir de ahí? (Es un archivo grande de más de 600 líneas). Lo único que descomenté fue la última línea conf-dir=/etc/dnsmasq.dporque mi archivo de configuración personalizado está en ese directorio.
user779159

Su dnsmasq está respondiendo correctamente. La conf-dirdirectiva carga todos los archivos dentro del directorio, por lo que puede organizarse en diferentes archivos, no necesariamente necesarios en su caso. Puede mantener el dnsmasq.conf original como está y poner su configuración en un archivo personalizado en /etc/dnsmasq.d, como ya lo ha hecho. No necesita sudo para ejecutar nslookup. Vuelva a probar con nslookup test.local, utilizará la configuración de DNS a partir de /etc/resolv.confeste momento.
denisvm

1

Probablemente el avahi-daemon está usando el dominio "local". Ver:

https://unix.stackexchange.com/questions/352237/avahi-daemon-and-local-domain-issues


¡Bienvenido a Super User! Gracias por tu aporte. Proporcionar el enlace para referencia es útil, pero también debe incluir la información esencial en la publicación. Por favor, editar su respuesta por lo que contiene esa información. También es posible que desee realizar el recorrido y leer la página Cómo responder , para familiarizarse mejor con este sitio.
robinCTS

0

Si lo que quiere solo implica apuntar hacia atrás en su propia máquina, y no tratar de usar dnsmasq para controlar la resolución dns de otras computadoras, entonces lo que quiere es agregar algunas entradas /etc/hosts. Le recomendé que deshaga todos sus cambios en dnsmasq y su configuración y asegúrese de que /etc/hoststenga 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 apuntará a usted mismo (en realidad, apuntará al servidor dnsmasq que se ejecuta en 127.0.1.1, LUEGO a localhost). Incluso puede agregar entradas para otras computadoras en su red para que le parezca, en esta máquina, que las computadoras pueden ser referenciadas como computer1.local computer2.localetc.

192.168.1.31 computer1.local
192.168.1.32 computer2.local

Si parece que no puede deshacer sus cambios con dnsmasq, puede agregar esas entradas adicionales después localhost, pero no elimine ni cambie la localhostentrada en sí. Así como esto:

127.0.0.1 localhost mycomputername mycomputername.local anothername.local

Por cierto: la forma correcta de modificar resolv.conf en el escritorio de Ubuntu es con el administrador de red en su barra de tareas. La forma correcta en el servidor Ubuntu es agregar dns-nameserverentradas en su dispositivo de red /etc/network/interfacesy reiniciar o hacer ifdown eth0 && ifup eth0. Como la advertencia en los /etc/resolv.confestados, no la modifique directamente, se escribe dinámicamente en función de la /etc/network/interfacesconfiguración.


3
/etc/hostsno permite comodines, tendría que actualizarlo para cada nuevo .localdominio, por eso la gente usa dnsmasq incluso para la resolución local.
Dmitri
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.