Uso de DNSMasq para la resolución del nombre de host local


9

Estoy trabajando para configurar una intranet doméstica para mí y mis compañeros de cuarto. Mi idea es que podamos almacenar cosas como facturas de servicios públicos anteriores en un lugar que sea más accesible que un cajón en la cocina, etc. De todos modos, tengo Apache 2 ejecutándose en una Raspberry Pi, en mi LAN, y si uso su dirección IP, puedo acceder a las páginas que se sirven en el Pi. Como estoy haciendo este proyecto más para aprender sobre la creación de redes y proporcionar un servicio a mi departamento, pensé que sería genial si mi red pudiera proporcionar una resolución de nombre de host para mi LAN. Entonces, en lugar de apuntar mi navegador a 192.168.1.151la dirección IP del Pi, podría apuntarlo oberon(su nombre de host) y ver las páginas web que sirve el Pi.

Ahora sabía que no era la primera persona en querer hacer esto, así que comencé buscando en Google. Esta pregunta, también en Unix y Linux, me ha ayudado inmensamente: cómo hacer que una máquina sea accesible desde la LAN utilizando su nombre de host . En este punto, he intentado todo en la respuesta verificada. Pensé en usar el hostsarchivo, pero eso significaría que tendría que decirles a mis compañeros de cuarto que configuren sus máquinas, lo que no quiero que tengan que hacer. Traté de reservar un contrato de arrendamiento de DHCP para el Pi en mi enrutador (un NETGEAR WNR1000v2 (también conocido como N150)), y aunque la reserva funcionó, la resolución del nombre de host no funciona. Esto me frustra porque le dije a mi enrutador la IP del Pi y su nombre de host, pero aún no proporciona esta información a los clientes en mi LAN.

Con estos dos métodos que no funcionan, decidí instalar dnsmasqen Pi. Parecía simple de configurar y estaría encantado de aprender una nueva herramienta. Lo instalé y lo tengo funcionando bien (parece). Que pueda digo nslookupapodos del Pi (que yo pongo en /etc/hostsa oberony homenet) y obtener los resultados correctos. Puedo hacer lo mismo para nombres de Internet como yahoo.comy obtener respuestas correctas porque configuré Google 8.8.8.8y 8.8.4.4como servidores de respaldo /etc/dnsmasq.conf. Mira esto:

me@oberon~$ dig oberon

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> oberon
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10787
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;oberon.                                IN      A

;; ANSWER SECTION:
oberon.                 0       IN      A       192.168.1.151

;; Query time: 10 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Oct  6 18:59:18 2013
;; MSG SIZE  rcvd: 40

Tenga en cuenta que SERVERes 127.0.0.1: oberonestá buscando su propia dirección IP en sí mismo. Esto es lo que esperaba ver. La salida es la misma si lo hago dig oberon @localhost. Debido a este resultado, creo que dnsmasqestá funcionando bien. Entonces, para llevarlo al siguiente nivel, quiero que todos los clientes en mi LAN puedan escribir oberonen su navegador y acceder a oberonla página de índice. Por esto sé que necesito configurar mi enrutador (disculpas si esto se aleja estrictamente del territorio de Unix y Linux).

Tengo un Netgear WNR1000v2 con el que estoy bastante familiarizado. He configurado el reenvío de puertos para que pueda SSH en el Pi, y también he hurgado en otras configuraciones. Sé que antes de comenzar este proyecto, estaba obteniendo mis servidores DNS de mi ISP, pero ahora quiero usar esos servidores DNS principalmente, pero también los uso 192.168.1.151como último control. Así que cambié la configuración de DNS de mi enrutador a lo siguiente:

La nueva configuración de DNS de mi enrutador.  Confía en mí cuando digo que las dos primeras entradas son proporcionadas por mi ISP

Entonces, con esta configuración, esperaba poder hacerlo nslookup oberonen mi escritorio (Windows) y obtener un resultado 192.168.1.151. Pero esto no sucede. Esto es lo que sucede:

C:\Users\me>nslookup oberon
Server:  UnKnown
Address:  fe80::226:f2ff:fefa:bea

*** UnKnown can't find oberon: Non-existent domain

Restablecer o dnsflushingel adaptador de red en mi máquina Windows no cambia nada.

Ahora he aquí por qué me estoy arrancando el pelo:

C:\Users\me>nslookup oberon 192.168.1.151
Server:  oberon.lan
Address:  192.168.1.151

Name:    oberon
Address:  192.168.1.151

Claramente, dnsmasqestá funcionando bien. Si le digo a mi cuadro de Windows que use 192.168.1.151para resolver el nombre oberon, todo está bien (el .landominio era parte de la configuración de dnsmasq, por lo que esperaba verlo allí). Si pudiera hacer que mi enrutador le diga a mi máquina Windows que use 192.168.1.151cuando realiza consultas DNS, ¡sería bueno!

Entonces, me parece que el problema está en mi enrutador, pero no puedo entender qué hacer más allá de cambiar los servidores DNS para incluir 192.168.1.151como ya lo he hecho. ¿Me puede ayudar alguien? Intentaré proporcionar cualquier información adicional que desee.


Intente poner el pi como primer servidor DNS, ¿funciona entonces?
terdon

1
El enrutador es el lugar correcto para hacer esto. Si por alguna razón no logra que su enrutador sirva un nombre para el Pi, ejecute dnsmasq en el Pi y haga que el enrutador sirva al Pi como el servidor DNS funcionaría. Parece que su problema es configurar su enrutador correctamente.
Gilles 'SO- deja de ser malvado'

¿Está renovando la concesión de DHCP en el cliente después de actualizar la configuración de DNS en el enrutador? La configuración de DNS se envía en la concesión DHCP, por lo que debe obtener una nueva concesión para obtener la nueva configuración. Como solución alternativa, también puede buscar mDNS / zeroconf / avahi.
Patrick

Respuestas:


2

Su problema radica en su incomprensión de la forma en que se usan esos servidores DNS, no sé los detalles exactos del método que Windows usa para elegir qué servidor DNS consultar, pero apuesto a que es primario> secundario> terciario / siempre /. E incluso si no fuera así y fuera un round-robin, todavía va a consultar un servidor inútil 2 de las 3 veces.

Lo que sucederá es que se consultará al servidor primario. Si se agota el tiempo, que puede ser uno o dos segundos, se consultará el siguiente servidor. DNS no es un sistema de "consenso", si se consulta uno de los servidores remotos, eventualmente descubrirá el resultado de que su nombre de host NO existe con autoridad, desde su perspectiva como un servidor DNS de Internet.

Necesita su propia LAN dns como servidor DNS principal. Los otros harían servidores de respaldo adecuados, pero consideraría simplemente dejarlo por completo.

También es de notar que su DNS inverso (IP para buscar nombres) se resuelve en "hostname.lan", pero sus pruebas de resolución directa se realizan solo con el nombre de host. También debe tener una resolución de reenvío para hostname.lan configurado en algún lugar. Si bien puede haber muchas búsquedas directas de "nombre a dirección" para un host, existe la expectativa de que haya una búsqueda inversa de la IP a un nombre, que a su vez tiene un nombre coincidente con ese registro de IP. No siempre es crítico y solo hace que los archivos de registro se quejen a veces, pero algunas cosas son más sensibles a esto que otras.

Además, no se olvide de eliminar el conjunto de archivos de hosts que haya implementado una vez que todo funcione (no sé si eso es relevante para dnsmasq, nunca lo usé, tengo una configuración similar pero más complicada usando el nombre ISC-BIND) servidor, que puede configurar el reenvío a otros servidores como el que está utilizando, o simplemente usarlo como un servidor DNS sin reenvío que realiza la resolución de nombre completo por sí mismo, que es lo que he configurado).

No es necesario decir que, como especuló por primera vez, está muy lejos de estar solo al hacer esta configuración, casi todas las LAN corporativas razonablemente desarrolladas y una gran cantidad de LAN domésticas sobredesarrolladas tendrán este tipo de configuración en su lugar.


1
Gracias por tu ayuda iain! Entiendo lo que estás diciendo acerca de cómo DNS no es un sistema de consenso, por lo que configuré el Pi en el servidor DNS principal en mi enrutador. Luego renové el arrendamiento de DHCP en mi máquina Windows. Sin embargo, nslookup oberontodavía no funciona. Una cosa que no mencioné en el texto de mi publicación original fue que cuando nslookupfalla, dice que el servidor que usó era una fe80dirección IPv6, que sé que es una dirección de enlace local reservada. Pero no sé qué significa eso para DNS. ¿Mi cuadro de Windows se consulta a sí mismo? dnsflushNo cambia este comportamiento.
c.anna

Y por lo que vale, la resolución de nombre de host LAN tampoco funciona en mis dispositivos iOS. Todavía no los he mencionado porque tengo mucho más poder introspectivo con Windows, pero si mis problemas realmente surgieran estrictamente de Windows, no esperaría que estos dispositivos tengan el mismo problema.
c.anna

Además, para calmar sus preocupaciones sobre el .landominio, configuré dnsmasqpara expandir automáticamente los nombres de host simples para agregar .lan. Correr nslookup oberon.lan 192.168.1.151devuelve el resultado esperado deName: oberon.lan Address: 192.168.1.151
c.anna

Me pregunto si hay un "windowsism" en el trabajo o algo así, nombrar a sus hosts directamente bajo el dominio de nivel superior ('oberon.') Es un poco extraño, oberon.lan tiene mucho más sentido. Una cosa a tener en cuenta es que los sufijos de dominio y 'dominios de búsqueda' a menudo se agregan a un nombre para resolverlo, por ejemplo, "oberon" podría resolverse y encontrarse como "oberon.lan" si lan está en los dominios de búsqueda. Sin embargo, las consultas anteriores no parecen mostrar que este sea el caso, la excavación específicamente tiene el período de finalización en los nombres de host, ¡pero tenga muy en cuenta eso cuando realice la prueba!
iain

Hmm después de arreglar el dns primario, necesitará volver a dhcp windows (reiniciar el adaptador debería hacerlo), luego verifique que ipconfig /allse muestre el servidor dns correcto que se está utilizando, si es correcto, es posible que deba descargarlo. Pero no puedo pensar en otra cosa, debería funcionar.
sourcejedi

1

Tal vez un poco tarde, pero deshabilitar ipv6 en mi adaptador inalámbrico hizo el truco.


Voto a favor: Siempre es una buena idea. A menos que el sistema esté desnudo y lo requiera. Y hasta ahora (septiembre de 2017) hay muy poco equipo de usuario doméstico que cumpla con esa categoría, si es que tiene alguno.
SDsolar
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.