Acessando computadores remotos protegidos por NAT ou firewall com túnel SSH reverso direcionado por DNS dinâmico
Com esse artigo pretendo mostrar uma maneira prática de acessar computadores protegidos por uma firewall ou NAT. Isso é muito útil nos casos em que não é possível - ou não se tem o controle para - efetuar um direcionamento de portas para a máquina desejada. É apresentado ainda um script que, utilizando DNS dinâmico, permite estabelecer essa conexão de qualquer lugar.
Parte 2: Colocando a solução em prática
A teoria já explicada funciona direitinho com os comandos apresentados. Porém, na prática mesmo podem ocorrer alguns probleminhas:
1. Quem vai ficar iniciando a conexão reversa para você no servidor? Isso até que é possível, mas precisamos mesmo ficar importunando alguém para fazer isso?
2. Muitas operadoras e "provedores" de acesso à internet bloqueiam certas portas muito úteis para nós como a 25 (smtp), 110 (pop), 80 (web) e 22 (SSH). Como usar SSH desse jeito?
3. Quem der o comando para iniciar a conexão reversa no servidor precisa saber o endereço IP ou hostname do cliente. Como fazer para me conectar ao servidor de qualquer lugar e não apenas de um endereço pré-definido?
Muito bem... para responder essas perguntas e deixar toda essa tralha funcionando automaticamente no fim :P, vou explicar passo a passo o que deve ser feito na internet, no servidor e no cliente. Como uso Slackware Linux, os comandos apresentados para criação de usuários etc são os oferecidos por ele. Se você usar outra distro não creio ser difícil achar os equivalentes.
Há vários serviços de DNS dinâmico gratuitos na internet como no-ip e myDNS. No link a seguir você encontrará uma lista razoável:
Dynamic DNS Providers List
A maioria desses provedores oferece um software para atualização automática do seu IP nos registros de DNS. Dessa forma, se sua conexão cair ou o IP dela mudar, o hostname passará automaticamente a apontar para o novo IP.
A maneira exata de configurar o DNS dinâmico e instalar o software de atualização varia bastante de um serviço para outro, sendo necessário que você escolha um e siga as instruções para colocá-lo funcionando.
1. Quem vai ficar iniciando a conexão reversa para você no servidor? Isso até que é possível, mas precisamos mesmo ficar importunando alguém para fazer isso?
2. Muitas operadoras e "provedores" de acesso à internet bloqueiam certas portas muito úteis para nós como a 25 (smtp), 110 (pop), 80 (web) e 22 (SSH). Como usar SSH desse jeito?
3. Quem der o comando para iniciar a conexão reversa no servidor precisa saber o endereço IP ou hostname do cliente. Como fazer para me conectar ao servidor de qualquer lugar e não apenas de um endereço pré-definido?
Muito bem... para responder essas perguntas e deixar toda essa tralha funcionando automaticamente no fim :P, vou explicar passo a passo o que deve ser feito na internet, no servidor e no cliente. Como uso Slackware Linux, os comandos apresentados para criação de usuários etc são os oferecidos por ele. Se você usar outra distro não creio ser difícil achar os equivalentes.
Criação de um hostname em um serviço de DNS dinâmico
Para que o servidor saiba sempre como encontrar a máquina cliente, devemos criar um hostname em um provedor qualquer de DNS dinâmico. Basicamente um DNS dinâmico permite que você associe um hostname ao IP da máquina que você está usando. Assim, para efetuar conexões à essa máquina, não precisamos mais saber que IP ela está usando no momento, pois teremos um hostname associado a ele.Há vários serviços de DNS dinâmico gratuitos na internet como no-ip e myDNS. No link a seguir você encontrará uma lista razoável:
Dynamic DNS Providers List
A maioria desses provedores oferece um software para atualização automática do seu IP nos registros de DNS. Dessa forma, se sua conexão cair ou o IP dela mudar, o hostname passará automaticamente a apontar para o novo IP.
A maneira exata de configurar o DNS dinâmico e instalar o software de atualização varia bastante de um serviço para outro, sendo necessário que você escolha um e siga as instruções para colocá-lo funcionando.