Uso de DNSMasq para la resolución de nombres de host locales

Uso de DNSMasq para la resolución de nombres de host locales

Estoy trabajando para configurar una intranet en casa para mí y mis compañeros de cuarto. Mi idea es que podamos almacenar cosas como facturas de servicios públicos pasadas 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 ofrecen en el Pi. Dado que estoy haciendo este proyecto más para aprender sobre redes que para brindar un servicio a mi apartamento, pensé que sería genial si mi red pudiera proporcionar 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 señalarlo a oberon(su nombre de host) y ver las páginas web atendidas por el Pi.

Ahora sabía que no era la primera persona que quería hacer esto, así que comencé a buscar en Google. Esta pregunta, también sobre Unix y Linux, me ha ayudado enormemente:Cómo hacer que una máquina sea accesible desde la LAN usando su nombre de host. En este punto, probé todo lo que está 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 configuraran sus máquinas, lo cual no quiero que tengan que hacer. Intenté reservar una concesión 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. Esto me frustra un poco porque le dije a mi enrutador la IP del Piysu nombre de host, pero todavía no proporciona esta información a los clientes en mi LAN.

Como estos dos métodos no funcionaban, decidí instalarlos dnsmasqen el Pi. Parecía sencillo de configurar y me encantaría aprender a usar una nueva herramienta. Lo instalé y lo tengo funcionando bien (al parecer). Puedo digusar los apodos de Pi ( que nslookupconfiguré y ) y obtener los resultados correctos. Puedo hacer lo mismo con nombres de Internet como y obtener respuestas correctas porque configuré Google y como servidores de respaldo en . Mira esto:/etc/hostsoberonhomenetyahoo.com8.8.8.88.8.4.4/etc/dnsmasq.conf

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 SERVERis 127.0.0.1: oberonestá buscando su propia dirección IP sobre sí mismo. Esto es lo que esperaba ver. El resultado es el mismo si lo hago dig oberon @localhost. Debido a este resultado, creo que dnsmasqestá funcionando bien. Entonces, para llevarlo al siguiente nivel, quierotodoclientes en mi LAN para poder escribir oberonen su navegador y ser llevados a oberonla página de índice. Para esto sé que necesito configurar mi enrutador (disculpas si esto se desvía del territorio estrictamente Unix y Linux).

Tengo un Netgear WNR1000v2 con el que estoy bastante familiarizado. He configurado el reenvío de puertos para poder utilizar SSH en el Pi, y también he husmeado en otras configuraciones. Sé que antes de comenzar este proyecto, obtenía mis servidores DNS de mi ISP, pero ahora quiero usar esos servidores DNS principalmente, pero también 192.168.1.151como última verificación. Entonces cambié la configuración DNS de mi enrutador a la siguiente:

La nueva configuración DNS de mi enrutador. Créame cuando digo que las dos primeras entradas las proporciona mi ISP.

Entonces, con esta configuración, esperaba poder hacerlo nslookup oberonen mi escritorio (Windows) y obtener un resultado de 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 dnsflushingel adaptador de red en mi máquina con Windows no cambia nada.

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 casilla 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, así que esperaba verlo allí). Si pudiera hacer que mi enrutador le dijera a mi máquina Windows que lo use 192.168.1.151cuando realiza consultas de DNS, ¡estaría bien!

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

Respuesta1

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

Lo que sucederá es que se consultará el servidor principal. Si se agota el tiempo, que puede ser uno o dos segundos, se consultará al 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 servidor DNS de Internet.

Necesita su propio DNS de LAN como servidor DNS principal. Los demás serían servidores de respaldo adecuados, pero consideraría eliminarlos por completo.

También es de destacar que su DNS inverso (IP para buscar nombre) se resuelve en "hostname.lan", pero sus pruebas de resolución directa son solo con el nombre de host. También debería tener una resolución directa para hostname.lan configurada 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 tenga un nombre coincidente con ese registro de IP. No siempre es crítico y a veces solo hace que los archivos de registro se quejen, pero algunas cosas son más sensibles a esto que otras.

Además, no olvide eliminar cualquier archivo de hosts que haya instalado 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á usando, o simplemente usarlo como un servidor DNS sin reenvío que realiza la resolución del nombre completo por sí mismo, que es lo que he configurado).

No hace falta decir que, como especuló al principio, no está solo en esta configuración, casi todas las LAN corporativas razonablemente desarrolladas y muchas LAN domésticas sobredesarrolladas tendrán este tipo de configuración.

Respuesta2

Quizás un poco tarde, pero deshabilitar ipv6 en mi adaptador inalámbrico funcionó.

información relacionada