Como exatamente um programa remoto como o Team Viewer funciona?

34

Se você usa o Windows RDP ou Remmina, normalmente usa o nome de host IP (público) ou anexado do servidor para fazer logon. Eu queria saber como funciona um programa remoto como o Team Viewer ? E também, como o programa sabe como direcionar esse tráfego pela Internet?

Rudolph
fonte
Também estou curioso sobre isso. : D
gumuruh

Respostas:

25

O TeamViewer, o LogMeIn e qualquer outro programa que permita uma zero configsessão de área de trabalho remota usam um servidor de terceiros.

Por exemplo, o LogMeIn é um programa semelhante ao TeamViewer, no qual você pode fazer login remotamente em um computador fora da rede em que você está atualmente. Você notará que não há configurações externas necessárias para esse tipo de sessão remota. Isso ocorre porque o software que você instalou na máquina remota (o cliente LogMeIn) inicia uma solicitação de saída para os servidores LogMeIn. Como esse cliente iniciou a solicitação, não é necessário encaminhamento de porta no Firewall.

No seu computador, fora da rede do computador LogMeIn, você pode acessá-lo remotamente através do site do LogMeIn. Este site aceita a solicitação iniciada do computador remoto e mantém a conexão ativa para ouvir uma solicitação de sessão remota.

Ao executar o TeamViewer, você recebe um ID no servidor do broker. Você faz uma conexão com um ID do Teamviewer, e o TeamViewer passa a conexão através do túnel estabelecido do cliente TeamViewer para o destino e, em seguida, é solicitada a senha e a conexão é estabelecida posteriormente.

kobaltz
fonte
3
Pergunta estendida: Existe alguma possibilidade de executar um servidor de terceiros e fazer com que o VNC (ou qualquer outro cliente) funcione da mesma maneira?
TheStoryCoder
2
Boa pergunta. Desta forma, você vai no caminho para criar uma nova empresa TeamViewer ...
Giuseppe
@TheStoryCoder tem sorte? Eu acho que precisamos criar o protocolo de comunicação primeiro entre servidor e cliente e depois construir o servidor tcp. RDP é o protocolo padrão do Windows, mas acho que não foi projetado para suportar isso. Eu sei que o TeamViewer usa seu próprio protocolo. Eu realmente espero que alguém por aí já crie um projeto de código-
fonte
@TheStoryCoder De uma maneira simples, mas com menos segurança: você pode ter um servidor OpenVpn instalado (servidor A) e seu PC (PC A) conectado à Internet através desse servidor. E você tem outro PC (PC B) apenas aceita conexões de entrada ou área de trabalho remota (se janelas) do seu servidor VPN. Dessa forma, você pode se conectar ao PC B a partir do seu PC A, que estabelece a conexão através do servidor A.
Janaka R Rajapaksha
8

O Teamviewer usa a porta 80 para fazer uma conexão com um servidor central. Se a conexão for estabelecida, você obtém um ID exclusivo e o servidor sabe que você está online. Toda a comunicação pode ocorrer pela porta 80 se outras portas estiverem bloqueadas.

O Teamviewer permite que você se conecte diretamente a um endereço IP. Você deve definir isso nas opções, para permitir conexões LAN recebidas. Isso funciona para redes locais, e provavelmente também para redes WAN, mas é necessário que o encaminhamento de portas funcione, para que a porta 80 se conecte ao computador certo atrás do roteador / firewall. Isso dificulta as coisas para a maioria das pessoas e é incontrolável para a maior parte do resto; portanto, usamos o método de ID do Teamviewer.

Não sei se isso significa que todo o tráfego passa pelos servidores do teamviewer, mas pode. (E como ele registra todos os cliques e pressionamentos de tecla, isso provavelmente significa que eles poderiam - em teoria - e como sabemos sobre o PRISM etc., provavelmente também na realidade - sobre todos os seus logins e chaves secretas.)

SPRBRN
fonte
3

É o que a empresa diz em sua Declaração de segurança :

Ao estabelecer uma sessão, o TeamViewer determina o tipo ideal de conexão. Após o handshake através de nossos servidores mestre, uma conexão direta via UDP ou TCP é estabelecida em 70% de todos os casos (mesmo atrás de gateways, NATs e firewalls padrão). O restante das conexões é roteado através de nossa rede de roteadores altamente redundante via TCP ou https-tunelamento. Você não precisa abrir nenhuma porta para trabalhar com o TeamViewer!

Conforme descrito posteriormente no parágrafo "Criptografia e autenticação", nem nós, como operadores dos servidores de roteamento, podemos ler o tráfego de dados criptografados

Tão:

  • 1) como outros sugeriram, a conexão inicial de ambos os clientes é iniciada pelo cliente e passa pela porta 80, por isso não tem problemas com NAT ou firewalls, pode passar por um proxy da web etc. Depois disso, tudo está configurado e ambos os clientes precisam estar conectados um ao outro, então:
  • 2.1) provavelmente usa perfuração UPnP ou NAT para poder fazer uma conexão real entre os dois clientes, ou
  • 2.2) se não for possível, ele encaminhará o tráfego através de seus servidores, o que será mais lento e poderá ser espionado (no entanto, eles afirmam que os dados são criptografados de ponta a ponta, nesse caso, isso não seria um problema)
golimar
fonte
alguma solução de código-fonte que você possa conhecer?
Altiano Gerung 27/07
@AltianoGerung Eu não sei qualquer queridos opensource que o trabalho, sem portas de abertura como Teamviewer
Golimar
0

A maioria dos aplicativos como o TeamViewer roteia as coisas através de seus servidores se não houver um caminho direto disponível, ignorando a necessidade de usar IPs públicos e portas abertas.

profundo
fonte