He leído todas las respuestas que puedo encontrar sobre cómo configurar dnsmasq como un servidor DNS local para desarrollo. Pero no puedo hacer que funcione para mi caso. La mayoría de ellas quieren que 127.0.0.1 sea resuelto para nombres en el dominio .dev.
En mi caso, tengo una máquina virtual de VirtualBox ejecutándose en Windows en mi MacBook Air. Este Windows ejecuta SQL Server Express. Está configurado con dos interfaces - un puente de red - para compartir la interfaz wifi externa y ser un par en mi red local cuando estoy en línea. También tengo configurada una red solo-anfitrión
en VirtualBox. La subred es 192.168.56.0/24 con mi Mac siendo .1 y la máquina virtual de Windows siendo .2.
dnsmasq ejecutándose en la MacBook soporta esto y desde la perspectiva de Windows hace todo perfectamente, en línea y fuera de línea. Usando su capacidad para asignar dominios completos una dirección, da .rab a 192.168.56.1 y .tig a 192.168.56.2
En la Mac misma estoy desarrollando una aplicación nodejs, que es un servidor web (por lo que necesita un nombre de dominio - digamos abc.rab - mi Mac se llama Rabbit) y para acceder a la base de datos de la máquina Windows (llamada abc.tig - la máquina Windows se llama Tigger). Aquí las cosas parecen no funcionar.
Escribí un pequeño programa nodejs para probar la búsqueda de DNS
'use strict';
const dns = require('dns');
dns.lookup('abc.tig',(err,add,family) =>{
console.log('direcciones:',add);
});
y no puede encontrar la dirección. Sin embargo, en la terminal esta búsqueda de DNS funciona
alan@rabbit:~/Documents$nslookup abc.tig
Servidor: 127.0.0.1
Dirección: 127.0.0.1#53
Nombre: abc.tig
Dirección: 192.168.56.2
alan@rabbit:~/Documents$
En un navegador web, abc.rab también me dice que no puede encontrar el nombre de dominio.
Como dije, había configurado dnsmasq para que se ejecutara en todas las interfaces. En las propiedades de red para mi interfaz Wi-Fi he configurado los servidores de nombres como 127.0.0.1 y 8.8.8.8
En /etc/resolver creé un archivo llamado literalmente 'whatever' (la respuesta que leí al respecto no dejaba claro si realmente tenía que llamarse así o era solo un ejemplo) con
nameserver 127.0.0.1
domain .
en él
Obviamente hay dos procesos de resolución de nombres en funcionamiento. El mDNSResponder y dnsmasq se muestran ambos ejecutándose en mi panel de actividad. Presumo que diferentes están siendo utilizados por la terminal y por mi aplicación
¿Qué estoy haciendo mal aquí? (escribir y probar esto, actualmente estoy en línea)
(PD Tengo una configuración similar funcionando en mi máquina de desarrollo en casa ejecutando Linux perfectamente, solo quiero poder desarrollar en movimiento).