¿Cómo puedo configurar un dominio "local" para que todos en mi red local puedan ver un sitio alojado localmente?

Quiero configurar MediaWiki en una de mis máquinas domésticas, y luego hacer que todas las solicitudes hechas en la red local para 'wiki.home' o 'wiki.local' apunten a esa casilla. Sé que esto se puede hacer editando cada archivo / etc / hosts individualmente, pero quiero algo más automatizado para que, por ejemplo, si un amigo o un miembro de la familia viene a mi casa, no necesitan jugar con el Hosts para ver el sitio.

¿Hay una manera simple de hacer esto? Tengo el wiki en funcionamiento, y he estado buscando en dnsmasq, pero no puedo averiguar cómo configurar el DNS correctamente. Ya que quiero una solución automatizada, siento que necesito cambiar la configuración de DNS en mi enrutador, pero si cambio la configuración de DNS allí, ¿cómo puedo todavía resolver los hosts externos?

Detalles de configuración

  • Enrutador: Netgear WNR2000v2. El router me da la opción de especificar manualmente los servidores DNS, que estoy asumiendo que tendré que señalar a mi caja de Ubuntu si quiero poner esto en marcha.

  • MediaWiki y dnsmasq host: Ejecuta Ubuntu 12.04. He tenido algunas dificultades con el config dnsmasq (principalmente debido a mi inexperiencia). Por ejemplo, no estoy seguro, pero creo que durante la instalación, Ubuntu modificó mi configuración de DNS para que /etc/resolv.conf tuviera 127.0.0.1 como único servidor DNS. En ese momento, podría resolver los anfitriones locales, pero nada más. He resuelto esto temporalmente modificando /etc/resolv.conf y añadiendo 192.168.1.1 como servidor de nombres secundario, pero la preocupación aquí es que 192.168.1.1 usará el cuadro de Ubuntu para DNS. ¿Estoy perdiendo algo obvio aquí?

  • Dnsmasq settings: descomentado las siguientes líneas:

     domain-needed bogus-priv local=/local/ domain=local 

Con el DNS estándar, se ejecuta un servidor DNS que es autoritario para el dominio local ( home. o local. , Aunque es mejor evitar este último – ver nota más abajo), pero también actúa como una resolución para todos los demás dominios.

Dnsmasq se puede utilizar para este propósito – tiene el modo recursivo habilitado por defecto y su configuración se ve bien; Todo lo que se necesita es decirle qué servidores de nombres usar para dominios no locales. Normalmente se leerían del archivo /etc/resolv.conf del sistema; Sin embargo, puesto que desea que el dominio local funcione también en el equipo servidor DNS, deberá crear una copia dedicada de resolv.conf que sólo sería utilizada por dnsmasq , mientras que el resolv.conf original apuntaría al nameserver 127.0.0.1 de nameserver 127.0.0.1 .

 # cp /etc/resolv.conf /etc/dnsmasq-resolv.conf # echo "nameserver 127.0.0.1" > /etc/resolv.conf # dnsmasq -r /etc/dnsmasq-resolv.conf 

Nota: Estas instrucciones son muy básicas y deben ser adaptadas a la distribución Linux en uso. En particular, revise las guías de Debian y Ubuntu en dnsmasq.

Después de esto, el enrutador necesita ser configurado para utilizar este equipo como servidor DNS; Todas las consultas DNS por equipos en su red entonces serían manejadas por dnsmasq .

(Los servidores DNS con todas las funciones, como bind9 , pueden realizar consultas recursivas por sí mismos, por ejemplo, la configuración de los servidores de nombres ascendentes se convierte en totalmente opcional, así es como funcionan los servidores de nombres de su ISP. Sin embargo, hospedar su propio dominio con bind9 es bastante complicado al principio Comparación con el dnsmasq simple.)


Nota: Si Avahi (aka Bonjour) está configurado en cualquier computadora de la red (lo que Ubuntu tiene, por defecto), lo mejor es evitarlo local. En DNS y elegir algo como el home. En cambio, como los nombres en forma de name .local ya están a cargo de Avahi.

(Aunque Avahi normalmente sólo responde a current-hostname .local , en realidad es posible publicar entradas adicionales como wiki.local , sin embargo, necesitarán direcciones IP adicionales que se añadirán debido a la forma en que funciona mDNS.Debido a esto, Usar Avahi en lugar de DNS centralizado no ofrece más ventajas, por lo que no estoy sugiriendo.)

Encontré el daemon Avahi como la forma más fácil de hacer esto. Nota: si está utilizando máquinas Windows para conectarse al dominio .local, debe asegurarse de que esas máquinas tengan iTunes u otro cliente Bonjour instalado en ellas.

Echa un vistazo a este enlace para más información: http://www.howtogeek.com/167190/how-and-why-to-assign-the-.local-domain-to-your-raspberry-pi/

Aunque ese enlace es específico de la frambuesa Pi, debería funcionar en las máquinas de Ubuntu de la misma manera. Para otras distribuciones de Linux que no utilicen apt-get , simplemente ajuste apt-get a su gestor de paquetes apropiado, por ejemplo yum para Fedora y CentOS)

Aquí están los comandos exactos que corrí para conseguir esto que va en mi Raspberry Pi media server:

sudo apt-get update && sudo apt-get upgrade sudo apt-get install avahi-daemon

A partir de ahí comienza automáticamente usando el nombre de host de su computadora más la extensión .local como su nombre de dominio. Así que si el nombre de host de su máquina es mediaserver , puede acceder a él en la red escribiendo mediaserver.local en la barra URL de cualquier máquina que tenga Bonjour / Avahi en él (es decir, todas las Macs, más máquinas Windows con iTunes instalado).

La resolución de nombres locales es una característica simple y ha sido parte de la mayoría de los routers que usé. También se implementa en el firmware DD-WRT. Netgear no se preocupa por esta característica que se solicita constantemente .

Por lo tanto, la respuesta que es mucho más simple que los demás publicados aquí – evitar el problema y cambiar su router Netgerat a algo que admite la resolución de nombres locales. O, si eso no es una opción, y siente la fuerza y ​​tiene el tiempo, flash DD-WRT en él.