Essa é uma dica para quem precisa dar suporte remoto a usuários com máquinas ocultas atrás de firewalls e redes com internet compartilhada.
O problema
Todo mundo que dá suporte remoto já passou por isso: queremos acesso via VNC, mas o computador do usuário está em uma rede local (compartilhando internet através de um roteador ou switch), e não se tem acesso ao roteador para criar uma rota para aquela máquina. Quando se trata de sistemas operacionais proprietários de empresas baseadas em Redmond, é comum se utilizar soluções como o LogMeIn, mas e quando o usuário utiliza
Linux ou Mac?
Entendendo melhor...
Quando utilizamos programas como o VNC para acesso remoto, o que fazemos na verdade é acessar um servidor do serviço de VNC que está rodando na máquina alvo. Ou seja, quem dá o suporte é o cliente, e quem recebe o suporte é o servidor. Então pedimos para o usuário instalar e executar o servidor de VNC, abrimos o cliente em nossa máquina e digitamos o endereço de internet da máquina do usuário. Uma vez estabelecida a conexão, o servidor envia ao cliente pacotes (geralmente compactados) com imagens da tela e posição atual do cursor, e recebe eventos de teclado e mouse.
Tudo lindo, certo? Bom, lindo até você colocar o cliente em uma rede local, acessando a rede por um firewall.
Esse é o jeito mais comum de se compartilhar internet: você tem um roteador (comprado no Mercado Livre por 80 reais), conecta a sua banda larga nele e "socializa" a mesma via cabo ou wireless pela sua casa. O seu fornecedor de banda larga te oferece um único (espero) endereço de internet, e esse endereço fica vinculado ao seu roteador. Todas as máquinas "locais" (conectadas à internet através do seu roteador) recebem endereços de internet válidos apenas para se comunicarem entre elas; para acessar a internet, se comunicam com o roteador, que "mascara" o endereço local com o que foi dado pelo fornecedor de banda larga.
O problema é que isso só funciona bem para tráfego "sainte", ou seja, requisições de acesso à internet que se originam na rede local. Quando chega uma requisição externa, o único endereço visível na internet é o do roteador (o tal fornecido), e o roteador não tem como saber qual máquina da rede deve receber aquela requisição - a menos que digamos isso explicitamente, alterando sua configuração interna.
Só que nem todo mundo tem permissão de acesso às configurações do roteador! Agora, como é que vamos acessar o nosso usuário, se não conseguimos acessar externamente o computador dele?
A solução
Para resolver essa encrenca, o segredo é inverter servidor e cliente.
"Hein???"
Tá, eu explico melhor. Em vez de o servidor estar configurado no usuário que precisa de suporte, configuramos ele na máquina que DARÁ o suporte! Dessa forma, é o usuário que se conecta em nossa máquina, ou seja, será tráfego SAINTE da rede dele. Tudo que precisamos garantir é que o usuário consiga acessar a nossa máquina (ou seja, a máquina que fornecerá suporte deverá ter um endereço válido na internet).
Uma vantagem importante nesse método para o usuário é que ele precisa EXPLICITAMENTE solicitar a conexão externa; programas como o VNC podem ser configurados para acessar sorrateiramente computadores de colegas de trabalho, sem que o usuário saiba; com o método descrito aqui, o usuário com certeza se sentirá mais seguro.
Existem algumas formas de se implementar essa solução, mas nessa dica eu quero demonstrar uma ferramenta bastante simples, porém multiplataforma (roda em Linux, Mac e Windows) e gratuita. Sendo assim...
O primeiro passo é instalar!
Apresentamos o revolucionário
Gitso!
Não, não é propaganda de televisão. O Gitso é um pequeno programa open source desenvolvido pela Google que implementa o modelo cliente-servidor que eu descrevi acima. O ponto mais forte do Gitso é a simplicidade: é um único executável tanto para o cliente como para o servidor, basta você dizer qual papel você exercerá naquele momento.
O Gitso está disponível no endereço
http://code.google.com/p/gitso. Há pacotes para Mac, Windows e diversas distribuições Linux. Eis aqui um passo-a-passo para o acesso remoto:
- Instale o programa nas duas máquinas (a do usuário com problemas e a sua). O Gitso funciona entre quaisquer das plataformas acima mencionadas, você pode estar em uma estação Linux e dar suporte a um Mac, por exemplo.
- Após as instalações, abra o Gitso na máquina que será usada para dar suporte, selecione a opção "Give support" e clique em "Start".
- Peça ao usuário com problemas para abrir o Gitso, selecionar "Get help", digitar na caixa ao lado o endereço de internet da máquina que dará suporte (que você deve fornecer a ele) e clicar em "Start".
- Pronto! Surgirá na sua tela uma janela de VNC, dando a você acesso ao computador remoto!
Um bom suporte a todos! :)