¿Cómo funciona exactamente un programa remoto como Team Viewer?


34

Si utiliza Windows RDP o Remmina, normalmente utiliza la IP (pública) o el nombre de host adjunto del servidor para iniciar sesión. Me preguntaba cómo funciona un programa remoto como Team Viewer . Y también, ¿cómo sabe el programa cómo enrutar ese tráfico a través de Internet?


También tengo curiosidad por esto. : D
gumuruh

Respuestas:


25

TeamViewer, LogMeIn y cualquier otro programa que permita una zero configsesión de escritorio remoto utiliza un servidor de terceros.

Por ejemplo, LogMeIn es un programa similar a TeamViewer en el que puede iniciar sesión de forma remota en una computadora fuera de la red en la que se encuentra actualmente. Notará que no se requieren configuraciones externas para este tipo de sesión remota. Esto se debe al hecho de que el software que instaló en la máquina remota (el cliente LogMeIn) inicia una solicitud saliente a los servidores LogMeIn. Como este cliente inició la solicitud, no se requiere reenvío de puertos en el firewall.

En su computadora, fuera de la red de la computadora LogMeIn, puede acceder a esta computadora de forma remota a través del sitio web de LogMeIn. Este sitio web acepta la solicitud iniciada desde la computadora remota y mantiene viva la conexión para escuchar una solicitud de sesión remota.

Cuando ejecuta TeamViewer, se le asigna una ID en su servidor de intermediario. Realiza una conexión a una ID de Teamviewer, y TeamViewer pasa la conexión a través del túnel establecido por el cliente de TeamViewer al destino y luego se le solicita una contraseña y luego la conexión se establece después.


3
Pregunta extendida: ¿Existe alguna posibilidad de ejecutar un servidor de terceros y hacer que VNC (o cualquier otro cliente) funcione de la misma manera?
TheStoryCoder

2
Buena pregunta. De esta manera, estará en el camino para crear una nueva compañía TeamViewer ...
giuseppe

@TheStoryCoder suerte? Creo que primero debemos crear el protocolo de comunicación entre el servidor y el cliente, luego construir el servidor tcp. RDP es el protocolo predeterminado de Windows, pero supongo que no está diseñado para admitir esto. Sé que TeamViewer usa su propio protocolo. Realmente espero que alguien por ahí ya cree un proyecto de código abierto para ello :)
Altiano Gerung

@TheStoryCoder Una manera simple pero con menos seguridad: puede tener un servidor instalado OpenVpn (servidor A) y su PC (PC A) está conectada a Internet a través de ese servidor. Y tiene otra PC (PC B) que solo acepta conexiones entrantes o escritorio remoto (si es Windows) desde su servidor VPN. De esa manera puede conectarse a esa PC B desde su PC A que establece la conexión a través del servidor A.
Janaka R Rajapaksha

8

Teamviewer usa el puerto 80 para establecer una conexión con un servidor central. Si se realiza la conexión, obtienes una identificación única y el servidor sabe que estás en línea. Toda comunicación puede ocurrir a través del puerto 80 si otros puertos están bloqueados.

Teamviewer te permite conectarte directamente a una dirección IP. Debe configurar esto en las opciones, para permitir conexiones LAN entrantes. Esto funciona para redes locales, y probablemente también para redes WAN, pero luego debe hacer funcionar el reenvío de puertos, para que el puerto 80 se conecte a la computadora correcta detrás del enrutador / firewall. Eso dificulta las cosas para la mayoría de las personas y es inmanejable para la mayoría del resto, por lo que utilizamos el método de ID de Teamviewer.

No sé si esto significa que todo el tráfico pasa a través de los servidores de teamviewer, pero podría. (Y como registra todos los clics y pulsaciones de teclas, eso probablemente significa que podrían, en teoría, y dado que sabemos sobre PRISM, etc., probablemente también en realidad, conocer todos sus inicios de sesión y claves secretas).


3

Esto es lo que dice la compañía en su Declaración de seguridad :

Al establecer una sesión, TeamViewer determina el tipo óptimo de conexión. Después del apretón de manos a través de nuestros servidores maestros, se establece una conexión directa a través de UDP o TCP en el 70% de los casos (incluso detrás de puertas de enlace estándar, NAT y firewalls). El resto de las conexiones se enrutan a través de nuestra red de enrutadores altamente redundante a través de TCP o https-tunneling. ¡No tiene que abrir ningún puerto para trabajar con TeamViewer!

Como se describe más adelante en el párrafo "Cifrado y autenticación", ni siquiera nosotros, como operadores de los servidores de enrutamiento, podemos leer el tráfico de datos cifrados.

Asi que:

  • 1) como otros han sugerido, la conexión inicial de ambos clientes es iniciada por el cliente y pasa por el puerto 80, por lo que no tiene problemas con NAT o firewalls, puede pasar por un proxy web, etc. Después de esto, todo está configurado y ambos los clientes deben estar conectados entre sí, luego:
  • 2.1) probablemente utiliza perforaciones UPnP o NAT para poder hacer una conexión real entre los dos clientes, o
  • 2.2) si no es posible, enrutará el tráfico a través de sus servidores, lo que será más lento y podría ser espiado (sin embargo, afirman que los datos están encriptados de extremo a extremo, en ese caso eso no sería un problema)

¿Alguna solución de código abierto que conozcas?
Altiano Gerung

@AltianoGerung No conozco ninguno de código abierto que funcione sin abrir puertos como Teamviewer
golimar

0

La mayoría de las aplicaciones como TeamViewer enrutan las cosas a través de sus servidores si no hay una ruta directa disponible, por lo que se evita la necesidad de usar IP públicas y puertos abiertos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.