Differences

This shows you the differences between two versions of the page.

Link to this comparison view

vnc-proxied-session-w-xmpp [2012/06/06 12:15] (current)
Line 1: Line 1:
 +===== Escenario =====
  
 +{{:​xmpp-vnc.png|}}\\
 +{{:​xmpp-vnc.vsd|source (.vsd)}}
 +
 +
 +===== Descripción del escenario =====
 +
 +  * **VNC server**: ordenador con un servidor VNC, además de un bot XMPP para publicar el recurso '​compartir pantalla'​ en internet. Este bot también es el encargado de establecer la conexión cliente-cliente entre el servidor VNC local y el puerto TCP#1 publicado por el bot del proxy TCP.
 +  * **Bot**: este es el bot del proxy TCP, encargado de publicar los puertos #1 y #2 TCP y unirlos por detrás, permitiendo conectar los sockets que provienen del VNC servidor y el VNC cliente.
 +  * **VNC client**: también dispone de su bot XMPP a través del cual lanza la solicitud de conexión con el servidor VNC, pero esto lo hace a través el bot del proxy TCP.
 +
 +Los dos elementos de VNC se encuentran detrás de una red con NAT, pero el bot TCP es un ordenador con todos los puertos visibles desde internet, o sea, que tiene una IP pública. Es importante notar que la seguridad de este último elemento se basa, en que:
 +  * los puertos que se abren para que se conecten los extremos VNC son aleatorios.
 +  * la información de los puertos viaja a través de la red XMPP que puede ir cifrada.
 +  * los sockets entre el VNC client y el proxy TCP sólo se pueden iniciar si la IP origen es aceptada por la ACL.
 +  * en caso de ser necesario se podrían cifrar de forma simple los sockets del proxy TCP.
 +
 +
 +===== Descripción de las conexiones =====
 +
 +{{:​esquema-xmpp-vnc.jpg|}}
 +
 +(1) VNC client manda un mensaje XMPP al Bot, este mensaje es una petición de conexión con la pantalla #X contiene los siguientes datos: JID_pantalla con identificador del recurso, IP origen que se va a conectar al player #X.\\
 +(2) El bot, al recibir la petición hace las siguientes tareas:
 +  * publica dos puertos aleatorio TCP (en modo escucha) - puerto #1 y #2, ambos conectados de forma cruzada, o sea, que lo que escucha uno se escribe en el otro y vice-versa.
 +  * El puerto #2 sólo permite conectarse a la IP indicada por el cliente VNC.
 +  * envia un mensaje XMPP al VNC Server, informando de: IP:Puerto donde debe conectarse el server.
 +(3) VNC Server, lanza dos conexiones TCP una hacia el servidor local de VNC y otra hacia la IP:Puerto que le ha comunicado el bot.\\
 +(4) Cuando estos dos enlaces han sido confirmados,​ se comunica al bot via XMPP que estas conexiones ya estan OK.\\
 +(5) El bot, informa al VNC Client via XMPP de la IP:Puerto#2 donde puede conectarse para conectar directamente contra el servidor VNC de la pantalla.\\
 +(6) El cliente VNC abre un socket TCP contra la IP:Puerto#2 y se comunica a través del proxy transparente TCP que ha creado el Bot.\\
 +
 +La idea de este tipo de enlaces se basa en los conceptos de DBUS-Tube de Telepathy y servidores TURN para NAT traversal.