Nosotros - Artículos técnicos - Sistemas heredados y acceso remoto

Puede suceder que tengamos sistemas que fueron construidos hace muchos años, para trabajar en una red interna, es decir interna a un edificio, y que tienen grandes cantidades de código, digamos muchos miles de líneas.

Estamos hablando del tipo de sistemas, que deben instalarse en cada computadora, y ellos acceden a la base de datos por la red interna del edificio. Nosotros consideraremos esta situación en base a nuestro sistema SAU.

Es frecuente que una empresa cliente solicite la posibilidad de tener acceso al sistema desde cualquier lugar del mundo.

Lo ideal en estos casos sería tener nuestro sistema transcripto para funcionar en la web y ser accedido directamente con un navegador.

Pero muchas veces la gran cantidad de código de los sistemas heredados impide la rápida transcripción de los mismos, lo cual tambien incluye muchas veces un cambio de tecnología. En nuestro caso, la mencionada transcripción dió origen a un nuevo producto que comparte la misma base de datos denominado SAU Web, y escrito de nuevo totalmente en lenguaje Java. De manera que en caso de necesitarse, ambos sistemas: SAU y SAU Web pueden coexistir en la empresa.

Supongamos que nuestro sistema esta conformado por una base datos en el servidor, digamos SQL server y computadoras clientes que acceden a éste mediante un programa local instalado en cada una, por ejemplo Windows XP, o Windows Vista accediendo a este servidor por medio de nuestra aplicación SAU.

El programa SAU como lo mencionaramos, va instalado en cada una de las computadoras con Windows XP y Windows Vista, en función de la cantidad de usuarios que fuera a utilizar el sistema internamente al edificio.

A este punto podemos mencionar otra ventaja de tener nuestro sistema transcripto para la web, accedido desde un navegador, me refiero a no tener la necesidad de instalar el sistema en cada pc desde la que se desea usar, y por lo tanto, tampoco tener que hacer reinstalaciones cada vez que se cree una nueva versión.

Se plantean, al menos 2 soluciones posibles para la arquitectura mencionada, para pemitir el acceso al sistema SAU desde cualquier lugar del mundo (suponiendo no disponer de SAU Web):



1) Utilizando 'Escritorio remoto' de Windows.



2) Accediendo desde la aplicación instalada fuera de la empresa, directamente a la base de datos SQL Server



Análisis de la solución nro 1: Escritorio Remoto
Digamos que tenemos el servidor de base de datos en una computadora y 2 computadoras con nuestro sistema instalado en el edificio de la empresa cliente.

Supongamos que esta empresa necesita acceder al sistema desde fuera del edificio, desde otra ciudad, por medio de internet y lo va a realizar utilizando acceso remoto.

Supongamos que la computadora externa desde la cual se desea ingresar con acceso remoto es WXP4 de la imagen anterior, y se desea ingresar desde ella a WXP1 dentro de la empresa.

Lo primero que debemos hacer es configurar el router haciendo lo que se denomina port forwarding

Algunos conceptos de redes
Recordando algunos temas de redes, podemos mencionar que cada dispositivo en la interntet tiene una dirección IP.

Una dirección IP nos permite identificar en forma única a cualquier dispositivo en la internet. Podríamos decir que la IP para una computadora es como su nombre.

Una dirección IP tiene un formato como el siguiente XXX.XXX.XXX.XXX donde cada grupo de XXX tiene un valor decimal comprendido en el rango [0,255].

Las computadoras que están en la red interna de la empresa, pueden ser separadas de la red internet, por algo que se llama NAT (Network Address Translation). Las Computadoras detrás de NAT no tiene dirección IP que se vea directamente en Internet.

Existen algunas direcciones IP que son reservadas para redes internas, aqui exponemos un ejemplo de las mas comunes:

192.168.Y.Y



y



10.0.Y.Y



Con Y representando un número entre 0 y 255. Cuando una computadora envia datos a otra computadora, esta los envía, desde una dirección IP, hacia otra dirección IP, utilizando un determinado puerto. Para que mientras se envía y recibe información por medio de un programa de una computadora, tambien se puedan enviar y recibir datos de otros programas al mismo tiempo, sobre la misma computadora, se utilizan los puertos.

Esto hace posible analizar el correo electrónico mediante un programa de mail cliente, como Outlook, y al mismo tiempo navegar por la internet.

Esto es posible porque navegar por la internet usa el puerto 80 y el cliente de mail usa el puerto 110. Podríamos decir que el puerto es como un camino para los datos. Cuando un programa esta utilizando un puerto, ningún otro programa puede utilizarlo.

NAT toma una IP y la corta en muchas direcciones IP


Aquí la dirección IP externa es partida en 2 direcciones internas. La primera IP 'Internal IP1' es el gateway, y 'Internal IP2' es la dirección IP de la primera computadora. Debemos notar que el router tiene 2 direcciones IP. La 'Internal IP1' es el gateway para cada una de las computadoras internas de la red. Las computadoras sobre la red interna, solo pueden ver direcciones IP internas. Entonces las computadoras internas no pueden enviar datos a otra computadora fuera de la red interna. Cuando una computadora quiere enviar un dato a una computadora fuera de la red interna, esta se lo envía al gateway, y el router lo envía fuera a la computadora sobre internet.

Gateway=IP interna del router.



Lo mismo les pasa a las computadoras en internet, ellas no pueden ver las computadoras de la red interna. Lo único que pueden es ver y enviar datos a la external IP del router. El router luego deberá decidir que hacer con estos datos.

Existen algunos programas para los que NAT no fue diseñado para trabajar, estos son los programas para los cuales necesitamos configurar port forwarding.

Cuando una computadora en internet envía un dato a la 'External IP' del router, el router necesita conocer que hacer con este dato. Port forwarding le dice simplemente al router a cual computadora sobre la red interna enviar el dato.

Cuando ya se ha configurado el port forwarding del router, el router toma el dato de la 'External IP' y la información del número de puerto, y lo envía a la dirección IP interna configurada, y a ese puerto.



IMPORTANTE: Un puerto puede solo usarse por un programa al mismo tiempo. Y también que solo tenemos una IP externa del router.

Cuando una computadora interna esta usando por ejemplo el puerto 500, lo está usando sobre la dirección IP interna. Si se tiene configurada una regla para la computadora 1 y el puerto 500, la dirección IP externa y el puerto 500 esta también en uso. Esto significa que se puede usar el puerto 500 solo sobre una computadora de la red interna a la vez.



Solución nro1: Nuestro caso real
Según la imagen anterior, la idea es ingresar desde WXP4 mediante acceso remoto ha WXP1 con SAU.

Supongamos que la computadora interna WXP1 con SAU tenga la dirección IP interna 192.168.0.4, y sabemos que por defecto el puerto por el que produce la llamada escritorio remoto es el 3389. Entonces deberemos configurar nuestro router de la siguiente manera:


En este caso estamos diciendo que cuando la 'External IP' del router reciba un pedido por el puerto 3389, lo dirija a la computadora 192.168.0.4 (WXP1 con SAU).

De esta manera, escribiendo en WXP4 en su acceso remoto la 'External IP' del router, estaremos ingresando a la WXP1 con SAU, lo cual nos permitirá iniciar SAU como si estuvieramos sentados realmente delante de WXP1 con SAU.

Utilizar acceso remoto tiene la ventaja de que todo el procesamiento, se realiza en la máquina WXP1 con SAU localmente, y solo se transmite a WXP4 la imagen de los sucesos, lo cual es muy beneficioso desde el punto de vista de ancho de banda.

Incluso, si WXP1 con SAU necesitará utilizar la impresora desde dentro de SAU, puede configurarse el acceso remoto para que utilice la impresora ubicada en WXP4 .

Pero ¿qué sucedería, si necesitamos que otro usuario desde otra ciudad quiere acceder por medio de acceso remoto a WXP5? En este punto, el puerto 3389 esta utilizado, redireccionando a la computadora 192.168.0.4 (WXP1 con SAU) cuando se ingresa desde WXP4.

Supongamos que WXP2 con SAU está en 192.168.0.5, y que deseamos conectarnos mediante el acceso remoto desde WXP5.

Esta situación trae aparejados 3 cambios:



1) Cuando se produce la llamada desde WXP5 con acceso remoto, la IP que se coloca es la misma que en el caso anterior, pero para indicar que queremos que atienda otra computadora, deberemos cambiar el puerto por defecto que utiliza 'Acceso remoto' que es el 3389.

Supongamos que deseamos utilizar el puerto 3390. Para ello deberemos especificar en escritorio remoto de WXP5 la dirección IP más el puerto de la siguiente manera:



PPP.PPP.PPP.PPP:3390

Donde PPP.PPP.PPP.PPP es la 'External IP' del router.



2) Deberemos configurar esta regla en el router de la siguiente manera:


Asi estamos indicando que cuando se produzca un contacto con la 'External IP' del router solicitando acceso por el puerto 3390, esta solicitud será redireccionada hacia la computadora que tenga la IP 192.168.0.5 la cual es WXP2 con SAU.

3) Necesitamos que 'Acceso remoto' de la computadora 'WXP2 con SAU' atienda al puerto 3390, en lugar de atender al puerto 3389 que viende configurador por defecto. Para ello debemos hacer el siguiente cambio en 'WXP2 con SAU'



a) Inicie el Editor del Registro (Regedt32.exe).

b) Busque la siguiente clave del Registro: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp\PortNumber
En el menú Edición, haga clic en Modificar, Decimal, escriba el nuevo número de puerto 3390 y, después, haga clic en Aceptar.

c) Reinicie 'WXP2 con SAU' para que el equipo tome los cambios en el registro



Por cada computadora adicional externa a la empresa que desea acceder a SAU, se deberán realizar estos 3 cambios.

Un problema que presenta acceso remoto, es que cuando desde WXP4, se accesde a WXP1 con SAU, WXP1 con SAU queda inutilizada. Es decir que si se necesitan 10 accesos externos simultáneos, se necesitarán 10 computadoras internas a las cuales acceder.



Una posibilidad para resolver este problema, sería utilizar una sola computadora en la empresa, con suficiente memoria y capacidad de procesamiento, para atender a 10 máquinas virtuales.

Análisis de la solución nro 2: Accediendo desde la aplicación instalada fuera de la empresa, directamente a la base de datos SQL Server

En este caso la idea es tener instalada la aplicación SAU, en una computadora externa a la empresa, por ejemplo alguien que viaja y lo lleva instalado en la notebook.

Según nuestro primer esquema, éste sería el caso de WXP3 con SAU.

Desde el punto de vista de WXP3 con SAU, nada cambia al caso de que esta notebook estuviera funcionando internamente a la red de la empresa. El cambio más importante es que debería configurarse SAU desde su archivo de parámetros, para apunte a la 'External IP' del router.

Por defecto SQL Server atiende en el puerto 1433. Por lo tanto habría que configurar el router para que permita solicitudes hacia este puerto.

Supongamos que el SQL server estuviera instalado en la computadora cuya IP interna fuera:



192.168.0.2 entonces el router quedaría:


De esta manera, se puede acceder desde una computadora externa que tuviera el sistema SAU instalado, a la base de datos interna de la empresa.

Esto tiene la ventaja que no requiere una computadora interna a la empresa espejo por cada acceso externo como era el caso inicial de acceso remoto.

Pero si existen llamadas repetitivas a procesos de la base de datos, como en general la red externa tiene menor velocidad que la propia LAN de la empresa, la perfomance se vera disminuida con respecto a la performance obtenida con acceso remoto, y esta variación de performance cambiará en función de los distintos procesos que use el usuario desde SAU.

Una actualización de información de deba modificar unas pocas tablas con SAU isntalado internamente puede tardar, .25 seg y con SAU instalado en cualquier lugar del mundo utilizando internet, unas 3 veces este valor, es decir digamos .75 seg, lo cual es en general despreciable en su diferencia.

Por otro lado se han hecho pruebas de tiempo con procesos que trabajan con la base de datos que se llaman repetidamente desde el propio SAU, y que internamente pueden demorar hasta unos minutos (son solo 1 o 2 procesos solamente y de uso poco frecuente).

Se obtuvieron los siguientes resultados:






Conclusión:

Estas son 2 de muchas soluciones aplicables a sistemas internos LAN para obtener acceso a ellos desde fuera de la empresa, desde cualquier lugar del mundo, utilizando internet.

También existen productos comerciales para ayudar en estos problemas, pero no cabe duda que la solución óptima para el acceso a sistemas de información es el desarrollo de aplicaciones que puedan accederse desde el navegador, utilizando inicialmente solo html. Estas aplicaciones no requieren instalación, y realizan el procesamiento de datos en el servidor, minimizando el trafico de red, y enviando al navegador una imagen de la información procesada.


Cordiales saludos