Comment fonctionne exactement un programme distant comme Team Viewer?

34

Si vous utilisez Windows RDP ou Remmina, vous utilisez normalement l'IP (public) ou le nom d'hôte attaché du serveur pour vous connecter. Je me demandais comment fonctionnait un programme distant comme Team Viewer ? Et aussi, comment le programme sait-il comment acheminer ce trafic sur Internet?

Rudolph
la source
je suis également curieux à ce sujet. : D
gumuruh

Réponses:

25

TeamViewer, LogMeIn et tout autre programme qui permet une zero configsession de bureau à distance utilise un serveur tiers.

Par exemple, LogMeIn est un programme similaire à TeamViewer où vous pouvez vous connecter à distance à un ordinateur en dehors du réseau sur lequel vous vous trouvez actuellement. Vous remarquerez qu'aucune configuration externe n'est requise pour ce type de session à distance. Cela est dû au fait que le logiciel que vous avez installé sur la machine distante (le client LogMeIn) lance une requête sortante vers les serveurs LogMeIn. Étant donné que ce client a lancé la demande, aucune redirection de port sur le pare-feu n'est requise.

Sur votre ordinateur, en dehors du réseau de l'ordinateur LogMeIn, vous pouvez accéder à cet ordinateur à distance via le site Web de LogMeIn. Ce site Web accepte la demande initiée de l'ordinateur distant et maintient la connexion active pour écouter une demande de session distante.

Lorsque vous exécutez TeamViewer, un ID vous est attribué sur leur serveur de courtage. Vous établissez une connexion à un ID Teamviewer et TeamViewer transmet la connexion via le tunnel établi du client TeamViewer à la destination et vous êtes ensuite invité à entrer un mot de passe, puis la connexion s'établit par la suite.

kobaltz
la source
3
Question étendue: existe-t-il une possibilité d'exécuter vous-même un tel serveur tiers et de faire fonctionner VNC (ou tout autre client) de la même manière?
TheStoryCoder
2
Bonne question. De cette façon, vous serez sur le chemin de la création d'une nouvelle société TeamViewer ...
giuseppe
@TheStoryCoder une chance? Je pense que nous devons d'abord créer le protocole de communication entre le serveur et le client, puis construire le serveur TCP. RDP est le protocole par défaut de Windows, mais je suppose qu'il n'est pas conçu pour le prendre en charge. Je sais que TeamViewer utilise son propre protocole. J'espère vraiment que quelqu'un créera déjà un projet
open source
@TheStoryCoder Une manière simple mais avec moins de sécurité: vous pouvez avoir un serveur installé OpenVpn (serveur A) et votre PC (PC A) est connecté à Internet via ce serveur. Et vous avez un autre PC (PC B) qui n'accepte que les connexions entrantes ou le bureau à distance (si Windows) de votre serveur VPN. De cette façon, vous pouvez vous connecter à ce PC B à partir de votre PC A qui établit une connexion via le serveur A.
Janaka R Rajapaksha
8

Teamviewer utilise le port 80 pour établir une connexion avec un serveur central. Si la connexion est établie, vous obtenez un identifiant unique et le serveur sait que vous êtes en ligne. Toutes les communications peuvent avoir lieu sur le port 80 si d'autres ports sont bloqués.

Teamviewer vous permet de vous connecter directement à une adresse IP. Vous devez définir cela dans les options, pour autoriser les connexions LAN entrantes. Cela fonctionne pour les réseaux locaux, et probablement aussi pour les réseaux WAN, mais vous devez ensuite faire fonctionner le transfert de port, pour que le port 80 se connecte au bon ordinateur derrière le routeur / pare-feu. Cela rend les choses difficiles pour la plupart des gens et ingérables pour la plupart des autres, nous utilisons donc la méthode ID Teamviewer.

Je ne sais pas si cela signifie que tout le trafic passe par les serveurs TeamViewer, mais c'est possible. (Et comme il enregistre tous les clics et pressions de touches, cela signifie probablement qu'ils pourraient - en théorie - et puisque nous connaissons PRISM, etc. probablement en réalité également - connaître toutes vos connexions et clés secrètes.)

SPRBRN
la source
3

Voici ce que l'entreprise dit dans sa déclaration de sécurité :

Lors de l'établissement d'une session, TeamViewer détermine le type de connexion optimal. Après la prise de contact via nos serveurs maîtres, une connexion directe via UDP ou TCP est établie dans 70% des cas (même derrière des passerelles, NAT et pare-feu standard). Les autres connexions sont acheminées via notre réseau de routeurs hautement redondants via TCP ou https-tunneling. Vous n'avez pas besoin d'ouvrir de ports pour travailler avec TeamViewer!

Comme décrit plus loin dans le paragraphe "Chiffrement et authentification", même nous, en tant qu'opérateurs des serveurs de routage, ne pouvons pas lire le trafic de données chiffré

Alors:

  • 1) comme d'autres l'ont suggéré, la connexion initiale des deux clients est initiée par le client et passe par le port 80, elle n'a donc aucun problème avec NAT ou pare-feu, peut passer par un proxy Web, etc. Après cela, tout est configuré et les deux les clients doivent être connectés entre eux, puis:
  • 2.1) utilise probablement UPnP ou la perforation NAT pour pouvoir établir une connexion réelle entre les deux clients, ou
  • 2.2) si cela n'est pas possible, il acheminera le trafic via leurs serveurs, ce qui sera plus lent et pourrait être espionné (mais ils déclarent que les données sont cryptées de bout en bout, dans ce cas, ce ne serait pas un problème)
Golimar
la source
une solution open source que vous connaissez peut-être?
Altiano Gerung
@AltianoGerung Je ne connais aucun logiciel
open source
0

La plupart des applications comme TeamViewer acheminent les choses via leurs serveurs s'il n'y a pas de chemin direct disponible, évitant ainsi la nécessité d'utiliser des adresses IP publiques et des ports ouverts.

deepy
la source