# Necesito nombre de dominio en una intranet implementando un servidor DNS con ESP8266



## egp (Jun 18, 2017)

Hola a todos los foristas.

Estoy desarrollando un control con el esp8266 que conecte como cliente solo intranet al router que el usuario tenga en su red y genera un servidor web para el control del dispositivo al que esta conactado, pudiendose controlar desde cualquier PC o celular con cualquier browser. El problema es que el DHCP del router cambia la ip todos los dias, obviamente por ser dinámica.
El esp8266 puede ofrecer tambien un servidor DNS y con el ofrecer un dominio para que el usuario no tenga que poner siempre la IP del dispositivo y además que esta cambia.
¿Existe alguna manera que el router incorpore además la ip como servidor DNS?
El router puede ser cualquiera, el que tenga el usuario.
Esta destinado a usuarios hogareños y no mucha gente sabe como configurarlo.

Se me ocurrio que el esp8266 intente conectar con una ip fija de numero alto como ser X.X.X.254, usualmente no tienen tantos clientes conectados a un router como para llegar a tener una máquina usando esa ip y tambien ofrecer el DNS para que en el browser ponga un dominio facil y no una IP. Obiamente va a tener que agregar tambien la ip en la lista de servidores DNS del router, de la pc o celular que use como control.

¿Alguien sabe de alguna otra solucion ?

Gracias.
Saludos desde Buenos Aires - Argentina.

PD. Este dispositivo es solo para intranet asi que no me comenten algun servidor de DNS gratuito o pago.


----------



## Scooter (Jun 18, 2017)

Usa IP fija en la intranet
Es lo mas lógico para no esta enredando todo el día.
Cierra el número de IPs que pueda dar el DHCP del router, eso se puede configurar.
Por ejemplo que solo de IPs entre la 100 y la 200 y el resto te quedan para poner tus cosas.
De cualquier modo como cuelgues de un router doméstico 100 clientes no va a ir, así que te sobra siti por todos los lados.
Además si quieres acceder desde el exterior para controlar el ESP desde cualquier lugar hay que configurar el NAT y que yo sepa solo va con IP conocida, es decir, fija.


----------



## Dr. Zoidberg (Jun 18, 2017)

egp dijo:


> Estoy desarrollando un control con el esp8266 que conecte como cliente solo intranet al router que el usuario tenga en su red y genera un servidor web para el control del dispositivo al que esta conactado, pudiendose controlar desde cualquier PC o celular con cualquier browser. El problema es que el DHCP del router cambia la ip todos los dias, obviamente por ser dinámica.
> ...
> El router puede ser cualquiera, el que tenga el usuario.
> *Esta destinado a usuarios hogareños y no mucha gente sabe como configurarlo.*


Lo que puse en rojo es el problema mas serio. Si el usuario no sabe configurar el router, y además este puede ser cualquiera de los miles que hay en el mercado, entonces va a ser imposible que soluciones tu problema.

La forma mas sencilla de zafar del problema es configurar el router para reservar una asignación fija de IP para tu aparatejo. Con eso no hay que reconfigurar el DHCP, pero el router debe soportar reservas de IP --> Problema por que el usuario generalmente no sabe ni como averiguarlo 

La forma siguiente es usar una IP fija, dentro del rango de IP fijas que puede gestionar el router (todos permiten establecer los extremos del rango). --> Problema por que el usuario generalmente no tiene NPI de lo que es una IP fija 



egp dijo:


> El esp8266 puede ofrecer tambien un servidor DNS y  con el ofrecer un dominio para que el usuario no tenga que poner siempre  la IP del dispositivo y además que esta cambia.
> ¿Existe alguna manera que el router incorpore además la ip como servidor DNS?


La otra es, quizás, usar un servidor DNS-embebido... lo que es un problema si la IP no es fija por que quien quiera buscar tu aparato por nombre, tiene que saber a quien preguntarle (los DNS no son broadcasts) y los routers establecen como DNS los que le informa el ISP (que además es lo correcto), asi que no va a saber como preguntarle a tu DNS-embebido.. por que no sabe ni que existe, tampoco sabe donde buscarlo (necesitás un DNS para encontrar otro DNS y el protocolo DNS no funciona de esa forma).



egp dijo:


> Se me ocurrio que el esp8266 intente conectar con una ip fija de numero alto como ser X.X.X.254, usualmente no tienen tantos clientes conectados a un router como para llegar a tener una máquina usando esa ip y tambien ofrecer el DNS para que en el browser ponga un dominio facil y no una IP.


A ver... los servidores DHCP entregan las IP de la forma que se les canta la gana y no en orden, así que no hay garantías de que no se le ocurra entregar la .254 o la que sea, y por supuesto que pueden haber colisiones de IP.



egp dijo:


> Obiamente va a tener que agregar tambien la ip en la lista de servidores  DNS del router, de la pc o celular que use como control.


Los DNS no funcionan así. Vos necesitás un DNS LOCAL que resuelva los nombre de tu dominio, y cuando no encuentre uno, dirija la búsqueda al siguiente servidor DNS en la cadena (el de tu ISP) y eso implica meter un servidor DNS completo, posiblemente con caché, que gestione los nombres de tu red. Eso es una buena idea por que los routers no traen DNS (no al menos los que yo conozco) pero exige mas configuración "especializada" que vos suponés - con razón - que el usuario hogareño no tiene idea de como usarlo.

La solución general a estos problemas es usar algun protocolo que le permita al equipo "anunciarse en la red" frente a pedidos de los clientes... pero no es del todo simple, sobre todo si no usás una aplicación específica sino un browser común.


----------



## Kebra (Jun 18, 2017)

¿Estas obligado a usar el módulo esp8266? Porque con una box GNU/Linux con 2 placas de red podés hacer virtualmente lo que se te ocurra. Como hay en las clínicas que tienen wifi abierto pero cuando querés navegar te pide usuario y pass en una página web. Cuestión de autenticar vía pam a cada usuario (por ponerte un ejemplo simple) y filtrar con un squid (por ponerte otro ejemplo ultra simple). Y esa box la podés administrar vía webmin o ssh. Además de la cantidad de ayuda que hay en la web para este proxy.

Con eso te olvidás de los DNS, dominio, etc.


----------



## Nuyel (Jun 19, 2017)

Cuidado con las IP x.x.x.0, x.x.x.1 y x.x.x.254, he visto diferentes router usar esas asignaciones, lo recomendable seria la x.x.x.1 pero aquí los de Telmex usan la 254 y la red de mi escuela usaba la 0.

Realmente esto de configuración automática es básicamente imposible, el DNS lo asignan al mismo tiempo que el DHCP entrega la dirección y tu dispositivo solo va a consultar ese DNS asignado, para que tu puedas dirigir el DNS tendrías que configurarlo en el router y eso es mucho problema.

Los router pueden reservar IP y generalmente el DHCP solo tiene un rango de 100 direcciones, pero según la configuración bien puede partir de cualquier punto, generalmente las +200 no las ocupan en los que he visto, lo otro para facilitar el no ingresar IP tiene que ver con las tablas DNS del router, una ves que lo configures él sabrá como resolver una dirección cualquiera y apuntar a tu IP asignada, no necesitas en todos los dispositivos.

Yo hice una aplicación para controlar un dispositivo en la red y para resolver la IP lo que hago es enviar un paquete UDP al broadcast (x.x.x.255), luego mi dispositivo responde y puedo identificar la IP verificando la identidad con el paquete que responde, luego ya el resto de la comunicación es con la IP directa, pero esto no sirve en un navegador web.


----------



## Dr. Zoidberg (Jun 19, 2017)

Nuyel dijo:


> Cuidado con las IP x.x.x.0, x.x.x.1 y x.x.x.254, he visto diferentes router usar esas asignaciones, lo recomendable seria la x.x.x.1 pero aquí los de Telmex usan la 254 *y la red de mi escuela usaba la 0.*


  
La dirección x.x.x.0 es la "dirección de red" y no puede haber ningun host con esa IP asignada, ya que se puede descartar o usar como broadcast según la *RFC1812*.


----------



## Scooter (Jun 19, 2017)

No se que complicación hay en restringir el rango del dhcp, aún no he visto un router que no lo permita hacer. Lo mismo hay pero no los he visto.
De paso en una IP fija será mas rápido que empezar a preguntar y buscar respuestas de los equipos.

La única ventaja es colgar varios esp configurados exactamente igual. Pero tampoco lo veo tan complicado que tengan un modo de ajuste de IP manual o bien que se haga desde el terminal local.


----------



## Dr. Zoidberg (Jun 19, 2017)

Scooter dijo:


> ...Pero tampoco *lo veo* tan complicado que tengan un modo de ajuste de IP manual o bien que se haga desde el terminal local.


Ese es el problema: *VOS no lo ves complicado*, pero no sabés que es lo que va a ver el usuario del aparato ese.
Ese es un problema típico de los desarrolladores... creer que todos tienen los mismos ojos que ellos


----------



## egp (Jun 20, 2017)

Gracias a todos.
Despues de hacer la consulta segui investigando y lei sobre mDNS que soluciona el problema. 
El módulo ESP8266 trae en el firmware de nodemcu un módulo de soft que contempla este protocolo.
Los celulares de Apple traen ese protocolo implementado en sus celulares y un servicio que se agrega con sus productos en la PC, se llama Bonjour (lei que han corregido los errores).
Lo instale en Windows 7 y pude conectarme con el servidor web ccorriendo en el ESP8266 sin necesidad de saber la IP que le asigno el router. Solo puse en la barra de direccion MIWEBSERVER.LOCAL. y abrio la página.
Incluso lo acepta el comando ping, devolviendo el numero de IP.
No se si la licencia permite entregar el soft para instalar en una PC, Supongo que no pero tal vez pueda poner el manual de usuario de donde bajarlo.

Microsoft lo esta desarrollando para windows y tal vez salga en alguna de las actualizaciones de Windows10.
El problema lo tengo con android que lei que tiene implementada la API para mDNS desde la version 4.1 pero una aplicacion para bajar de Store Play que solo es una app que te muestra los dispositivos conectados y los servicios que dan, pero no puedo acceder al ESP8266 con el nombre el dominio.

Saludos desde Buenos Aires - Argentina


----------

