Área de Trabalho Remota (RDP) + Encapsulamento

0

Desculpe pela longa história, eu tentei ser cristalina.

* Um pouco de fundo *

Como parte de um projeto, precisamos ser capazes de acessar determinados computadores (daqui em diante chamados de clientes) usando o desktop remoto (RDP) de um servidor com um endereço IP válido. Esses clientes estão por trás do NAT (por exemplo, por trás de um DSL Mode + Router), portanto, eles não têm um endereço IP válido, mas o Modem + Router faz isso. Suponha que eles estejam todos rodando no Windows 7 Ultimate e que não haja firewalls, antivírus ou qualquer coisa que bloqueie o tráfego.

* Até agora *

A primeira e mais lógica coisa que vem à mente é usar a opção de encaminhamento de porta no modem. Mas, o cenário da vida real aqui é que esses clientes estão executando um aplicativo (que nós fornecemos) e precisamos que o aplicativo faça o encaminhamento de porta e não o modem, porque depois que implantamos o sistema, não saberemos o roteador modelo, configuração, etc. Além disso, não teremos acesso às configurações do modem. Então, suponha que essa opção não esteja disponível.

* opção viável para nós e, claro, o problema! *

Passando para a próxima opção, que está usando um túnel reverso (também conhecido como encaminhamento de porta remota), nós mudamos o aplicativo para criar 2 soquetes. On é usado para se comunicar com o servidor RDP no cliente e o outro para se conectar ao servidor (aquele com o IP válido) para fazer um túnel. No servidor, há outro aplicativo, que recebe todo o tráfego do cliente e o envia ao cliente de área de trabalho remota (por meio de outro soquete) e vice-versa. Então a arquitetura parece algo como:

|RDP SERVER|<->|Socket1|<->|Socket2|<->The Internet<->|Socket3|<->|Socket4|<->|RDP Client|
------------- Client side -----------               ------------- Server Side -----------  

O soquete 1 está na porta 17001 do cliente e está se comunicando com a porta 3389 do cliente (RDP Server)
Soquete 2 está na porta 17002 do cliente e é a comunicação com a porta 17002 do servidor
Soquete 3 está na porta 17002 do servidor e está se comunicando com a porta 17002 do cliente
Soquete 4 está na porta 17002 do servidor e está se comunicando com a porta 3389 do servidor (cliente RDP)

A partir daí, sempre que o usuário no servidor quiser fazer uma conexão remota com o cliente por trás do NAT, ele se conectará ao soquete 4 e todo o tráfego será redirecionado para o soquete 3, que por sua vez transferirá o tráfego para soe 2 e do soquete 2 ao soquete 1 e o contrário.

O problema é que, independentemente de como o cliente e o servidor estão conectados, mesmo quando o servidor e o cliente estão na mesma rede, um após o outro, depois que o RDP me pergunta a senha do cliente, ele faz um dos seguintes base:

  1. às vezes ele se conecta sem problemas e eu posso interagir com o computador
  2. às vezes pára por aí
  3. às vezes entra e logo antes de mostrar a tela do cliente, ele morre.

Eu verifiquei a conexão, mudei o modem, mudei o cliente e o servidor e ainda é o mesmo. Eu até tentei um servidor ssh no cliente ( freesshd ) e usei massa para porta remota para a frente e o resultado foram erros estranhos em massa que resultaram em conexão para soltar. Estou começando a tirar meu cabelo! Alguma idéia do que está acontecendo?

    
por Arashv 23.09.2013 / 21:28

0 respostas