Conectando-se a vários computadores via SSH por trás de apenas um IP público?

1

Eu tenho a seguinte situação. Eu me vejo cada vez mais usado (embora pago) como o "cara do computador" no bairro para "consertar" os "problemas" comuns. Sendo um hacker, pensei em fornecer como serviço à assistência remota de meus clientes via SSH / VNC. Conceitualmente, isso é ótimo, mas há alguns detalhes de implementação com os quais estou me debatendo.

  1. Determinar o endereço IP do roteador de cada cliente. Isso pode ser feito normalmente com o DNS dinâmico, mas eu pensei em escrever um pequeno programa que irá enviar o endereço IP atual do roteador para o meu servidor, para que eu possa manter o controle sobre as coisas. O DNS dinâmico é, obviamente, mais fácil, mas pode ficar complicado se eu estiver usando um serviço externo. Eu sou um pão-duro, então quanto menos eu tenho que pagar, melhor, e não seria ideal ter que configurar uma nova conta para o roteador de cada cliente. Aqui estão minhas opções para o DNS dinâmico:

    1. Eu poderia pagar mensalmente pela hospedagem de um servidor de nomes e criar uma hierarquia de domínio que faça sentido e implemente o DNS dinâmico.
    2. Eu poderia comprar um servidor de baixa especificação e hospedar o BIND e fazer tudo localmente, mas como acima.
    3. Eu poderia cobrar dos clientes por mês (!?!) por "taxas de hospedagem de DNS dinâmico" e usar os recursos para pagar por uma boa conta do DynDNS.org ou algo assim.
  2. Suportando vários computadores além do roteador. Para isso, também tenho opções:

    1. Implemente o OpenVPN sempre que possível e simplesmente use a VPN remota para acessar os computadores como se fossem máquinas locais na rede. (É assim que as VPNs funcionam bem? Eu essencialmente mostraria o roteador como apenas outro endereço IP e teria acesso total a todas as máquinas da rede, correto?)
    2. Implemente algum hack de conexão reversa para que eles se conectem a mim e depois me estabeleçam a conexão SSH com eles.
    3. O caminho do encaminhamento de porta. Isso envolve manter um banco de dados de cada cliente e o número da porta de cada cliente para o SSH no roteador. Yuck.
  3. Ser capaz de suportar laptops remotamente. Diga que meu cliente está em um café em outro estado e algo dá errado. Como muitas das soluções acima tratam de soluções baseadas em roteador, tudo sai pela janela. Não importa muito para ser capaz de fazer isso na frente, como é um caso de ponta, mas ainda assim.

Alguém pode recomendar a melhor maneira de 1. encontrar o endereço IP público de cada máquina, 2. estabelecer uma conexão com ele e 3. possivelmente fornecer serviço remoto remoto * se ele estiver "em roaming"?

    
por Naftuli Kay 18.07.2011 / 08:20

3 respostas

1

Muitos dos problemas podem ser ignorados ao usar o TeamViewer . O cliente só precisa iniciar o programa e informar a você o ID (estático) e a senha (temporária); o programa cuida de ignorar NATs e oferece área de trabalho remota e transferência de arquivos. Não há alternativa ao SSH, mas o TeamViewer aparentemente também permite a VPN na rede do cliente. (Não tenho certeza se isso funciona sem Admin / root.)

Para o DNS dinâmico, você pode reutilizar as ferramentas existentes "atualizador DynDNS", por exemplo, inadyn - elas podem ser apontadas para servidores arbitrários, e todas funcionam fazendo uma solicitação HTTP simples que você pode registrar .

Para "suportar vários computadores além de seu roteador", o IPv6 vem à mente - se apenas o seu ISP oferecesse suporte ... caso contrário, a VPN (você está certo sobre como eles funcionam) será mais confiável se um endereço interno for alterado ou um novo dispositivo está conectado.

    
por 18.07.2011 / 08:56
2

Você já olhou para os serviços baseados na web como logmein ou gotomypc? Eu uso logmein quando estou ajudando meu pai e acredito que eles têm um produto que pode atender às suas necessidades.

    
por 05.08.2011 / 17:32
1

Para o VNC do lado do "cliente" (que pode estar por trás de firewalls / roteadores etc), configurar um servidor com a sua capacidade de escuta é o que eu acho que você está procurando. Raymond cc fez um bom e bom artigo sobre como fazê-lo: link

Para o SSH, conexões revesas podem ser feitas como "nohup ssh -f-N-R 10000: localhost: 22 username @ your_side", o que tornará um ssh no seu_side: 10000 no cliente que você está tentando suportar. Isso exigirá um nome de usuário no seu final que você pode dar aos seus clientes, é claro. Mais detalhes podem ser lidos, por exemplo, no link

Ambos exigem que as pessoas que você está tentando apoiar façam algum trabalho de "inicialização" no final, mas isso geralmente é (na minha experiência) um grande problema.

    
por 05.08.2011 / 16:59