Linux slogan
Visite também: BR-Linux.org · Dicas-L · SoftwareLivre.org · UnderLinux

Linux banner
Linux banner


» Screenshot
Linux: Debian, Fluxbox
Por ToniLink


Artigo

Acessando computadores remotos protegidos por NAT ou firewall com túnel SSH reverso direcionado por DNS dinâmico
Linux user
chffelix
21/11/2008
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.
Por: Cláudio Henrique Fortes Félix | Blog: http://www.helpo.com.br
[ Hits: 38202 ]
Conceito: 9.6   5 voto(s)5 voto(s)5 voto(s)5 voto(s)5 voto(s) + quero dar nota ao artigo

Conclusão

Pronto!

Se tudo correu bem, o servidor tentará se conectar ao cliente apontado pelo DNS dinâmico de 1 em 1 minuto. Como a chave pública do usuário tunnel está cadastrada na máquina cliente, a conexão deve ser estabelecida automaticamente, deixando o túnel pronto para você se conectar ao servidor remoto. Podemos verificar se a conexão foi efetuada listando os sockets ocupados máquina cliente (supondo a porta 9000):

$ socklist | grep 9000

Note que, para ter acesso ao servidor, você deve ter sua própria chave pública cadastrada para o usuário que você deseja assumir nele. Suponho que você já saiba fazer isso para uma conexão SSH direta, então não vou entrar em detalhes. Para efetuar a conexão, basta então rodar o ssh para a porta especificada do localhost, que é a ponta "de cá" do túnel, porém usando o usuário "do lado de lá".

Para esclarecer, digamos que tenho um usuário "claudio" no servidor, para o qual já cadastrei minha chave pública, e que a porta definida para conexão seja a 9000. Assim, para efetuar a conexão pelo cliente, basta executar o seguinte comando:

$ ssh -p9000 claudio@localhost

Se você quiser acessar o mesmo servidor a partir de outra máquina cliente, você deve repetir o procedimento de configuração do cliente para essa outra máquina, e então alterar o DNS dinâmico para que o hostname apontado por ele corresponda ao IP do novo cliente.

Espero que este artigo ajude a outros que também tenham esbarrado nesse problema incômodo e cada vez mais frequente. :)

Referências:
<< Página anterior    




Páginas do artigo

Outros artigos deste autor

Leitura recomendada

Comentários
[1] Comentário enviado por andre.vmatos em 21/11/2008 - 16:50h:

Hhmmm. Muito boa a dica. Suponho que vc deve ter aprendido isso no artigo do GdH. Se sim, acredito que seria justo colocar os creditos. De qualquer forma, muito bom e muito completo mesmo seu artigo. Parabéns.


[2] Comentário enviado por walber em 21/11/2008 - 17:23h:

Parabêns muito bom o artigo.


[3] Comentário enviado por leandrobs1984 em 21/11/2008 - 17:31h:

Bom artigo,parabéns pela iniciativa..


[4] Comentário enviado por removido em 21/11/2008 - 18:40h:

Rapaz, só o título merece 10!!!
Dei uma bela lida e só tenho a dizer:

excelente!!!!!!!!!!!


;-))


[5] Comentário enviado por chffelix em 21/11/2008 - 19:14h:

Inicialmente, gostaria de agradecer o incentivo de todos. É um imenso prazer poder contribuir para essa comunidade maravilhosa, na qual a troca de conhecimento é feita de forma tão natural e visando o bem comum.

Gostaria apenas de responder o questionamento do nosso colega andre.vmatos, sobre os supostos créditos "devidos" ao GdH. Vocês devem ter reparado que coloquei três referências ao final do meu artigo. Pois bem, a primeira delas foi a principal, que eu realmente usei como base para minha solução em 2006, quando enfrentamos esse problema na prática. Reparem inclusive que meu script se parece com o dele, guardando minhas adaptações específicas. As referências seguintes servem apenas como outras fontes que os interessados podem pesquisar para comparar e realmente entender o que está sendo feito. Em nenhum momento sequer soube da existência desse artigo do GdH, tendo-o visto pela primeira vez agora com esse comentário.

Resumindo, não vou adicionar o crédito pois realmente não é devido. Apesar de desconfiar que o comentário não teve essa intenção, achei bastante deselegante a suposição, pois lança dúvidas sobre um trabalho autêntico e que comecei a escrever desde outubro de 2007, quando então se tinha muito menos material sobre o assunto.

Bom, é isso aí. Espero que a informação seja útil e obrigado a todos novamente pela atenção e incentivo.

Abraços,

Cláudio


[6] Comentário enviado por osirix em 21/11/2008 - 19:26h:

legal o artigo ..^^

eu tenho uma situaçao no qual tenho um link com ip dinamico ..

e uso um script que roda a cada 1 hora e dedura o ip e status basico do meu servidor e manda pra uma conta ftp que tenho ..

que posso visualizar as informaçoes via html mesmo ..^^

e ai entro no meu servidor via ssh pela porta que configurei no meu sshd 1214 .. ^^

mais dica foi muito boa tbm ..^^


[7] Comentário enviado por robsonbraga em 22/11/2008 - 10:36h:

Bacana, muito bom, o tema é bom e interessante, eu ja me aventurei por ai e com certeza sofri um pouco no começo.

Show


[8] Comentário enviado por wagner_guitar em 22/11/2008 - 11:05h:

Desculpe a minha ignorancia mais na parte do comando >>
$ ssh -R 9000:localhost:22 usuario@cliente
o usuario (usuario@) é o nome do host ou o ip ,e sobre o cliente tenho a mesma duvida...

tipo tenho um host cujo nome do usuario seja Brasil@... , e o ip dele seja 200.200.200.200 onde ficaria o Brasil e onde ficaria o 200.200.200.200 no comando $ ssh -R 9000:localhost:22 usuario@cliente
?????
Desde ja agradeco....






[9] Comentário enviado por chffelix em 22/11/2008 - 12:11h:

Olá Wagner, sem problema, estamos aqui pra aprender mesmo :)

Nesse comando que você está em dúvida, "usuario" é o nome do usuário existente na máquina cliente (aquela em que você vai estar logado), sendo este responsável apenas por "atender" o pedido de criação do tunel. Já "cliente" seria o hostname ou IP do cliente, novamente, da máquina onde você está. Esse comando aí deve ser executado no servidor, que é a máquina remota que você deseja acessar. Por isso tem todo esse esquema para esse comando ser executado automaticamente, pois você não vai estar lá pra fazer isso, certo?

Para adaptar o negócio ao seu exemplo, você deve considerar outra máquina. Por exemplo.. você está logado na máquina 200.200.200.200, mas você quer acessar a 100.100.100.100. Então, nessa última você rodaria:

ssh -R 9000:localhost:22 brasil@200.200.200.200

Uma vez estabelecida a conexão (a pessoa em 100.100.100.100 teria que saber a senha de brasil ou ter sua chave pública cadastrada para ele), você pode então se conectar ao servidor. Digamos que o usuário que você deseja acessar em 100.100.100.100 seja wagner. Assim, estando em 200.200.200.200, você deverá executar esse comando:

ssh -p9000 wagner@localhost

Pronto! Você vai cair no shell de 100.100.100.100, com usuário wagner.

Espero que tenha ficado mais claro!

[]s!
Claudio


[10] Comentário enviado por wagner_guitar em 22/11/2008 - 13:59h:

Nao muito,desculpe
tipo tanto "usuario" quanto "cliente" vao ser da maquina remota??
mas eu nao tenho acesso nenhum a maquina remota.

o meu problema é o seguinte : sou cliente de uma rede wireless ( radio),gostaria de acessar o roteador da minha rede para abrir algumas portas, é que gostaria de baixar uns torrents, mas acho q as portas estao fechadas, ai so consigo baixar a 1.,3kbps no maximo. Mas nao sei o login do roteador . Gostaria de resolver isso , se vc souber como eu posso fazer isso gostaria q me ajudasse...


Agradeco a paciencia...


[11] Comentário enviado por chffelix em 22/11/2008 - 17:03h:

Wagner, o que descrevi no artigo é apenas para o caso de querer acessar uma máquina remota que está numa rede sem acesso de fora pra dentro. Se você quer apenas se logar no roteador da sua rede e você não tem acesso a ele esse procedimento infelizmente não vai lhe ajudar. Para fazer o que você quer, vai ter que conseguir a senha do roteador e fazer um direcionamento de portas nele mesmo, do lado WAN para o IP da sua máquina no lado LAN.

Abraço,
Cláudio


[12] Comentário enviado por m4tri_x em 26/11/2008 - 10:15h:

Parabéns pelo artigo.
Achei bem interessante.

:)


[13] Comentário enviado por fernando_peace em 01/07/2009 - 18:00h:

blz , valew meu velho conseguir estabelecer acesso no meu serv.
......
......
Otimo artigo



Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.