Ir al contenido
  1. Posts/

mDNS en homelab: por qué .local va bien para cuatro cosas y no sustituye a un DNS decente

·2079 palabras·10 mins

Hay tecnologías que funcionan tan bien en una demo corta que te hacen pensar que ya has resuelto un problema entero. mDNS es una de ellas. Conectas un dispositivo, aparece con su nombre, abres equipo.local y durante un momento todo parece civilizado. Luego pasa una semana, metes un par de VLANs, pruebas desde otro sistema operativo, intentas usar el mismo nombre desde VPN o desde otra subred, y descubres que el invento no estaba roto. Simplemente estaba resolviendo un problema mucho más pequeño del que tú querías arreglar.

Yo no tengo nada en contra de mDNS. Al contrario. Me parece una idea muy buena para lo que es. Descubrimiento local, cero configuración o casi, impresoras, NAS, cacharros de red, algún servidor pequeño y la comodidad de no tener que recordar IPs para tareas rápidas. El problema aparece cuando la gente lo convierte en sustituto mental de DNS. Ahí empiezan los malentendidos.

Mi postura es bastante clara. mDNS sirve bien para descubrimiento local. No sirve bien como base seria de nomenclatura para un homelab que ya tiene varios servicios, varias subredes o acceso remoto. Si usas .local para todo porque te da pereza montar un DNS normal, tarde o temprano pagarás esa pereza en forma de comportamientos raros.

qué es mDNS en cristiano y por qué parece magia
#

Multicast DNS, o mDNS, permite que un equipo resuelva nombres dentro de la red local sin depender de un servidor DNS unicast tradicional. En vez de preguntarle a un DNS central, el cliente lanza una consulta multicast en la red local y el equipo que tiene ese nombre responde. Apple lo popularizó mucho con Bonjour. En Linux lo habitual es encontrárselo a través de Avahi. En la práctica, la experiencia para el usuario suele ser ese clásico algo.local que responde solo.

La propia RFC 6762 lo plantea justo así. Resolver nombres en el enlace local cuando no tienes infraestructura DNS tradicional, o cuando simplemente no quieres depender de ella para ciertas tareas. Y para eso funciona muy bien.

Lo importante de esa frase es “en el enlace local”. Esa parte es la que la gente suele olvidar en cuanto ve dos dispositivos resolviendo nombres y se emociona. mDNS no nació para reemplazar el DNS de toda tu casa. Nació para darte descubrimiento local cómodo y sin apenas administración.

por qué me gusta de verdad
#

Primero, lo obvio. Es práctico. Muy práctico.

Con un Mac, un Linux con Avahi o muchos dispositivos modernos, puedes enchufar algo a la red y empezar a verlo sin tocar un panel DNS, sin crear registros A y sin abrir la interfaz del router para acordarte de qué IP le cayó por DHCP. En redes domésticas sencillas, eso tiene muchísimo valor.

También me gusta porque reduce la dependencia de la memoria humana, que suele ser una infraestructura flojita. Cuando quiero acceder rápido a un equipo temporal, una impresora o un servicio muy local, poder tirar de nombre en vez de IP es más cómodo. No es una revolución. Es simplemente más agradable.

Y luego está la parte social del asunto. mDNS hace que muchos cacharros de red parezcan más listos de lo que realmente son. Se descubren entre sí, anuncian servicios, encuentran impresoras o shares. Para un entorno pequeño y poco segmentado, es una pequeña maravilla.

el problema no es mDNS, es pedirle un trabajo que no es suyo
#

Donde se tuerce la historia es cuando mDNS empieza a usarse como atajo para no montar un DNS local decente. Ahí las costuras se ven rápido.

Por diseño, mDNS funciona en el enlace local. Eso significa que no cruza alegremente routers ni subredes. En cuanto empiezas a separar red principal, red de laboratorio, WiFi de invitados, VLAN de IoT o acceso remoto por VPN, lo normal es que .local deje de comportarse como tú esperabas. No porque el protocolo te odie. Porque no está pensado para eso.

Yo esto lo he visto muchas veces en pequeño. Un equipo resuelve bien desde el portátil. Otro no. El móvil encuentra una cosa y el PC con Linux no. Una app descubre el servicio, otra no. Desde fuera de casa ni hablamos. El resultado es bastante engañoso, porque a ratos parece que todo funciona y a ratos parece paranormal.

Lo que pasa en realidad es más aburrido. Estás mezclando descubrimiento local con necesidades reales de resolución de nombres más allá del enlace local.

una pista muy útil en macOS
#

Esta salida de scutil --dns en macOS me gusta porque enseña bien el papel real de .local en el sistema. No es una invención mía ni una superstición de foro. El sistema trata .local como dominio mDNS.

Resolver mDNS activo para el dominio local en macOS

Eso está muy bien mientras el problema sea local. En cuanto quieres que ese mismo nombre se comporte como si fuera un registro DNS serio en todo tu homelab, empiezan las discusiones con la realidad.

la trampa clásica del dominio .local
#

Aquí voy a ser bastante directo. Usar .local como nombre general de tu homelab me parece una mala idea casi siempre.

No porque sea imposible hacer cosas alrededor. No porque vaya a explotar nada. Sino porque mDNS ya asocia .local a su propio comportamiento y muchos sistemas lo tratan de manera especial. Si además intentas reutilizarlo como si fuera tu dominio DNS privado con registros centralizados, acabas creando una zona gris bastante cutre.

Wikipedia lo resume bien al explicar el conflicto clásico. Por defecto, mDNS resuelve hostnames terminados en .local. Si tú también pretendes resolver .local desde un DNS unicast tradicional, aparecen solapes y resultados difíciles de predecir.

Mi recomendación aquí es simple. Para DNS local serio, usa otro dominio interno razonable o un subdominio real que controles. Reserva .local para lo que realmente es. Zeroconf local, descubrimiento local y poco más.

dónde sí me parece útil
#

Para que esto no suene a cruzada personal, aquí van los casos donde sí me parece una opción estupenda.

dispositivos de red sencillos
#

Impresoras, NAS, algún mini PC temporal, una Raspberry Pi montada para un servicio puntual, algún equipo de pruebas. En ese escenario, dispositivo.local me parece cómodo y hasta elegante.

laboratorios pequeños y poco segmentados
#

Si tienes una sola subred doméstica y cuatro cacharros bien avenidos, mDNS te ahorra trabajo. No veo por qué complicarlo antes de tiempo.

descubrimiento de servicios
#

La combinación de mDNS con DNS-SD es justo donde más sentido le veo. Encontrar servicios sin ir cargando registros manuales es una ventaja muy real.

dónde deja de compensar rápido
#

Aquí es donde me pongo menos simpático con el protocolo, aunque en realidad el enfado debería ir dirigido a la expectativa.

varias VLANs
#

En cuanto segmentas red, mDNS deja de ser transparente. Hay formas de reenviar o reflejar tráfico multicast entre segmentos, sí. Pero en ese punto ya estás haciendo trabajo extra para conservar una ilusión de sencillez que quizá no merecía tanto esfuerzo.

acceso remoto por VPN
#

Si usas algo como Tailscale, WireGuard o una VPN clásica para entrar desde fuera, lo normal es que quieras nombres estables y previsibles. mDNS no es la herramienta ideal para eso. Para acceso remoto me fío mucho más de un DNS local bien montado o de un esquema con nombres públicos internos y controlados.

servicios que quieres tratar como infraestructura seria
#

Un panel de monitorización, un reverse proxy, un servidor de backups, un gestor de contraseñas, un servicio crítico de casa. Todo eso, para mí, debería tener registros DNS claros. No depender de si el multicast está feliz ese día.

lo que hago yo en la práctica
#

Mi enfoque es bastante menos romántico y me funciona mejor.

Uso mDNS para comodidad local cuando me viene bien. Nada más. Si un equipo anuncia su nombre en local y puedo entrar rápido, perfecto. Si no, tampoco me cambia la vida. La capa de verdad la monto con DNS local bien definido.

Eso significa nombres estables en el resolver que toque, IPs o reservas claras, y la tranquilidad de saber que un servicio importante no deja de resolver porque hoy estoy entrando desde otra subred o desde una VPN. Cuando un nombre importa, no lo dejo en manos del azar amable del multicast.

Creo que mucha gente llega a esto después de un pequeño sufrimiento. Primero se enamora de .local, luego amplía el homelab, luego le mete más red y al final acaba montando DNS de verdad. Yo, sinceramente, recomiendo ahorrarse la fase sentimental si ya sabes que tu red va a crecer.

mDNS frente a DNS local de verdad
#

No son enemigos. Cumplen cosas distintas.

mDNS te da descubrimiento local automático con cero esfuerzo o casi. DNS local te da control, previsibilidad y alcance más allá del enlace local. Cuando intentas que uno haga el trabajo del otro, es cuando llegan los comportamientos raros.

Si estás montando algo como Pi-hole + Unbound: DNS y ad-blocking en tu red o DNS local con AdGuard Home, ya estás jugando otra liga. Ahí lo que buscas no es que un dispositivo aparezca simpático en la red. Lo que buscas es que los nombres de tu infraestructura resuelvan siempre donde deben resolver.

Yo me quedo con ambos, pero cada uno en su sitio. mDNS para descubrimiento cómodo. DNS local para todo lo que importa.

síntomas de que estás abusando de mDNS
#

Aquí hay varias señales bastante reconocibles.

  • Un nombre funciona en un equipo y en otro no
  • Desde VPN no resuelve nada de lo que esperabas
  • Te descubres reiniciando Avahi, Bonjour o la WiFi para ver si reaparece un host
  • Tienes dudas reales sobre si ese nombre lo resuelve multicast o un DNS tradicional
  • Has montado excepciones raras para que .local haga cosas fuera del enlace local

Si te ves reflejado en dos o tres de esas, yo no seguiría insistiendo. Me pondría serio con DNS y dejaría a mDNS hacer de actor secundario, que es donde mejor rinde.

lo que me parece más sensato en un homelab que ya no es mini
#

Si tu homelab ya tiene varios servicios, varias redes o cierta vocación de permanencia, mi recomendación es esta.

  • Mantén un DNS local centralizado
  • Usa reservas DHCP o IPs claras para los servicios importantes
  • Escoge un dominio interno que no choque con .local
  • Deja mDNS para descubrimiento de conveniencia
  • No construyas automatizaciones importantes sobre nombres que solo existen por multicast

No hace falta ponerse dogmático. Hace falta evitar confundir comodidad con arquitectura. Son cosas distintas.

dónde mDNS sigue teniendo un encanto especial
#

Aun con todo lo anterior, le tengo cariño. Hay algo muy agradable en ver que un equipo aparece y responde sin tocar nada. En un mundo donde casi toda la infraestructura tiende a volverse más burocrática, mDNS conserva una especie de magia vieja de red local bien avenida.

Solo que esa magia tiene un perímetro muy claro. Dentro de ese perímetro, fenomenal. Fuera, ya es otra historia.

Creo que este es uno de esos casos donde conviene respetar el diseño original de la herramienta. La RFC habla de operar en ausencia de un DNS convencional en el enlace local. No habla de convertirse en la base universal de nombres de tu laboratorio segmentado, con acceso remoto, reverse proxies y servicios que quieres tratar como si fueran producción. Si le pides eso, el problema no es que mDNS falle. El problema es que le has asignado un trabajo que no aceptó.

mi conclusión
#

mDNS merece la pena. Pero merece la pena por lo que es, no por lo que algunos querrían que fuese.

Para descubrir equipos en red local, para resolver nombres rápidos en una subred pequeña y para ahorrarte alguna visita innecesaria al panel DHCP, me parece estupendo. Para sustituir un DNS local bien montado, me parece una trampa. Cómoda al principio, pesada después.

Yo hoy lo tengo bastante claro. Si un nombre importa de verdad, lo quiero en DNS. Si un nombre es solo comodidad local y me viene bien que aparezca solo, encantado con mDNS. Cuando separas esas dos ideas, la red se vuelve mucho menos misteriosa y bastante más estable.

Y se agradece. Bastante cuesta ya pelearse con switches, VLANs y cacharros con firmware creativo como para añadir además una novela romántica con .local.

referencias
#