Objetivos:
En esta tarea usted aplicará:
creación de hebras, comunicación entre procesos remotos, y diseño y
manejo de un protocolo de capa aplicación.
Introducción
Para aprovechar los beneficios de Internet en nuevas áreas del quehacer humano se hace necesario poder instalar servicios (servidores) en máquinas con direcciones de red privadas. Ejemplo de esto es la Internet de las Cosas (IoT por Internet of Things). En estos escenarios es común tener servicios para sensar estados, actuación o comunicación alojados en subredes con acceso a Internet a través de un servidor NAT. La presencia de un NAT impide el acceso directo a los servicios detrás de éste. En esta tarea usted desarrollará una solución básica para reflejar en Internet un servicio disponible al interior de una red privada.
Figura 1: El servidor de la red privada
es reflejado en Internet vía dos procesos a desarrollar en
esta tarea que corren en una máquina en Internet y otra en la subred privada
El lado derecho de la Figura 1
corresponde a la actividad de la red privada (al interior del NAT, no
mostrado). Allí corre algún servidor como los ejemplos mostrados en
clases. Para reflejar este servicio en Internet, para cada nuevo
cliente se establece una conexión desde el
proceso "retransmiter client"" al "proxy server"; a través de esta
conexión se traspasa
los datos del cliente al servidor reflejado y viceversa. La solución
básica parte estableciendo una conexión desde el proceso "subnet
retransmiter client" al "internet proxy server" que corre en Internet
(conexión 1 en Figura 1). Cuando
un cliente se conecta al proceso "proxy server" (conexión 2 en Figura
1), éste
informa a través de conexión 1 al proceso "retransmiter client" de tal
conexión. En respuesta, éste
establece la conexión 3 hacia el
servidor reflejado y la conexión 4 hacia el proxy server
. Se puede establecer así una conexión lógica desde el cliente en
Internet al servidor en la subred privada, ésta está representada por
la línea roja en Figura 1. De esta manera toda
petición futura que envíe el cliente llegará al servidor reflejado y
viceversa.
Sintaxis: ips <puerto_servicio_reflejado> <puerto_tunel>
src <IP_proxy_server> <puerto_tunel>
<IP_servidor_a_reflejar> <puerto_servicio_a_reflejar>
Puerto_servidor_reflejado: es el puerto donde clientes Internet se
conectan con fin de tomar contacto con el servidor que está en la
sunred privada.
Puerto_tunel: es aquel donde se conexta el cliente retransmisor. La
primera conexión a este puerto se mantiene activa y es usada por el
proxy para informar al retransmisor la llegada de un nuevo cliente.
IP_proxy_server: es la IP o nombre de la máquina donde corre el proceso "Internet Proxy Server".
Puerto_tunel: es el puerto donde el proxy server espera a un retransmisores.
IP_servidor_a_reflejar: es la IP o nombre de máquina donde corre el servidor a reflejar en Internet.
Puerto_servicio_a_reflejar: es el puerto del servicio a reflejar en Internet.
Considere 10 como un número máximo de clientes simultáneos para el servicio reflejado.