Spanish B4X Como manejar NAT Reflexion en una API?

WhiteWizard

Member
Licensed User
Me ocurre un problema cuando mis Apps quieren enviar consultas a una API en NODE JS que esta corriendo en un Servidor dentro de la LAN donde esta conectado el Teléfono (por Wifi). Resulta que cuando la App trata de comunicarse con el DNS digamos "miempresa.duckdns.org" o incluso con la IP externa de la empresa, la API no recibe la conexión. Por lo que he leído es un problema de los Routers que usan estas empresas, estos routers no pueden manejar solicitudes desde su misma IP (NAT Reflexion). Si por ejemplo apago el WiFi y me conecto desde Internet de la empresa telefónica, funciona bien, lo mismo si cambio la IP en la app para que apunte al servidor local estando en Wifi (ej. 192.168.1.100) , el problema siempre ocurre cuando me conecto por WiFi en la misma LAN y trato de conectarme a la IP externa de la empresa.
A Alguien mas le paso?

Saludos
Alejandro
 

josejad

Expert
Licensed User
Longtime User
Hola:

Como indicas, es más un problema de la red que de la app. Si tienes acceso a los routers, quizás puedas crear una ruta DNS para que el dominio " miempresa.duckdns.org" o la ip pública apunte al servidor que quieres.

Si no, sólo se me ocurre que compruebes a qué wifi estás conectado, si es la de la empresa (y supongo que no la cambiarán a menudo), entonces en tu app indicas como servidor la IP interna, si no, accedes a la externa.

saludos,
 

WhiteWizard

Member
Licensed User
Gracias José, es lo que hago, tengo un proceso ServerSwitcher que cambia entre la dirección externa o interna del servidor, pero quería saber si hay otra solución, muy pocos routers tienen la posibilidad de activar el NAT Reflexion.
 

josejad

Expert
Licensed User
Longtime User
No soy muy bueno en estas cosas tampoco, pero recuerdo que tenía un router doméstico de la compañía que me daba internet, y tenía configurado un dominio como tú, digamos "myserver.duckdns.org".
No recuerdo bien cómo lo hice (rebuscando tutoriales y eso), pero creé una ruta en el router de forma que cuando desde casa llamaba al dominio, mi router lo redirigía a mi ip local.
Era algo así:
 

Descartex

Well-Known Member
Licensed User
Longtime User
pero creé una ruta en el router de forma que cuando desde casa llamaba al dominio, mi router lo redirigía a mi ip local.
Era algo así:
Es exactamente asi como se debería hacer, además, perfectamente explicado en el site que dices!
 

josejad

Expert
Licensed User
Longtime User
Gracias por confirmar. Si no me equivoco, además el dispositivo debe tener como servidor DNS el propio router.
 
Top