Configurar dnsmasq para una red local

18

Yo y un pequeño grupo de desarrolladores acabamos de mudarnos a una nueva oficina, y me gustaría configurar dnsmasq en nuestro servidor de desarrollo, por lo que cuando implementamos aplicaciones web allí, no tenemos que editar nuestros propios archivos de host. Tenemos un enrutador en 192.168.3.1 al que no tenemos acceso. Pensé que instalaría un servidor DNS en el cuadro de desarrollo, y todos registramos su IP como un servidor DNS secundario. Lamentablemente estoy luchando para que esto funcione.

El nombre del servidor de desarrollo es devbox, su IP es 192.168.3.99 y ejecuta el último servidor Ubuntu (Karmic)

Mi computadora ejecuta Ubuntu Desktop (Karmic)

Lo que me gustaría lograr

Digamos que tengo tres sitios web, sitio web1, sitio web2, sitio web3, que se ejecutan en el cuadro de desarrollo. Me gustaría acceder a ellos por las URL:

http://website1.devbox
http://website2.devbox
http://website3.devbox

Así que configuré Apache en el cuadro de desarrollo, instalé dnsmasq y puse las siguientes líneas en su archivo de hosts:

192.168.3.99 website1.devbox
192.168.3.99 website2.devbox
192.168.3.99 website3.devbox

y edité mi propio archivo resolv.conf para incluir el cuadro de desarrollo como servidor de nombres:

nameserver 192.168.3.99 

Está funcionando bien, puedo acceder a los sitios. El problema es que no escala bien. Me gustaría que todos los dominios que terminan con .devbox se envíen al cuadro de desarrollo, y esto es con lo que estoy luchando.

He intentado poner

192.168.3.99 devbox

en el archivo hosts y editando la línea en dnsmasq.conf:

# Add local-only domains here, queries in these domains are answered
# from /etc/hosts or DHCP only.
local=/devbox/

Pero no puedo hacerlo funcionar. Si intento cualquier URL que no esté explícitamente presente en el archivo de hosts de la caja de desarrollo, la búsqueda de DNS falla.

¿Es la directiva local para otra cosa? ¿Estoy mirando el lugar equivocado?

K. Norbert
fuente

Respuestas:

14

Consulte la documentación de Dnsmasq , especialmente el dnsmasq página de manual y el archivo de configuración de ejemplo . La palabra clave local le dice a DNSmasq que realice esas búsquedas de dominio con datos locales. Esto afecta las solicitudes enviadas a DNSmasq para foo.localnet y bar.localnet , por ejemplo. No creo que esto sea lo que quieres.

# Add local-only domains here, queries in these domains are answered
# from /etc/hosts or DHCP only.
local=/localnet/

Para forzar que las búsquedas de host / subdominio se resuelvan en una dirección específica, probablemente desee usar la palabra clave de dirección . El segundo ejemplo a continuación debería permitir que web1.devbox y web2.devbox y web73872.devbox se resuelvan en la dirección especificada.

# Add domains which you want to force to an IP address here.
# The example below send any host in doubleclick.net to a local
# webserver.
address=/doubleclick.net/127.0.0.1

# for your example
address=/devbox/192.168.3.99

Yo uso DNSmasq en casa para manejar cosas DNS simples para mi LAN; en ese caso, las palabras clave de dominio local y asociado y expand-hosts son apropiadas. El servidor DNSmasq es mi servidor de nombres principal, por lo que todas las solicitudes pasan por él; cualquier dirección no local se devuelve al servidor de nombres del ISP. Puede considerar esa configuración si es posible.

quijote curandero
fuente
una respuesta a otra pregunta indica que address=/.devbox/192.168.3.99podría ser una sintaxis más adecuada para sus propósitos.
quack quijote
Gee, debería haber leído las partes que pegué desde la configuración, era obvio que no es lo que necesito. La directiva de direcciones resolvió el problema, ¡gracias!
K. Norbert
Utilicé lo anterior con un giro: el servidor web / dns / dhcp tiene una interfaz inalámbrica en modo Adhoc. Aunque al capturar paquetes puedo ver la solicitud y la respuesta de mDNS, no puedo acceder al servidor por su nombre. Como si el contenido de la respuesta nunca se registrara. ¿Algunas ideas?
George