Tutorial DDNS over NAT

Publicado por Andre F em 23/05/2007

[ Hits: 23.841 ]

 


Tutorial DDNS over NAT



Decidi escrever esse tutorial devido a minha necessidade de acessar meu PC via ssh (putty) sem precisar antes verificar qual é meu ip externo. Minha conexão com a internet é ADSL (Speedy Light), minha distro é o Fedora Core 6 e meu modem está como NAT (roteado).

Existe uma solução free DDNS para Windows e Linux da winco (www.winco.com.br) que funciona muito bem, porém no site do desenvolvedor só existe informações de configuração para pessoas que possuam um IP fixo que pode estar atrás de um NAT ou não, ou não possuam um IP fixo e não estão atrás de um NAT (usando discadores do provedor).

O problema é que para pessoas que não possuem um IP fixo, mas que podem estar atrás de um NAT (meu caso). Existe um tutorial muito bom que tenta corrigir essa deficiência, mas está desatualizado. Bom, vamos por a mão na massa:

1) Faça seu cadastro no link:
Você irá criar um domínio com senha para que você sempre o acesse ao invés de decorar seu ip externo. Ex: "http://nome_do_dominio.ddns.com.br".

2) Siga os passos 1 e 2 do tutorial:
OBS: Caso esse link não esteja mais disponível, clique aqui (Tutorial_DDNS_Over_NAT.doc);

3) Daqui para frente você deverá seguir como usuário "root". Como dito no terceiro passo do tutorial, apague todo o conteúdo do arquivo (como descrito no tutorial), porém insira as seguintes linhas:

#!/bin/bash
unset LANG
rm -fvr /tmp/index* 1> /dev/null &&
cd /tmp && wget www.whatismyip.com 2> /dev/null && cat index.html | grep "<TITLE>" | grep "WhatIsMyIP.com" | awk '{print $3}' | awk -F '<' '{print $1}'

Obs: O tutorial diz para fazer basicamente a mesma coisa, porém tive que fazer algumas alterações na última linha de comando para que o programa funcionasse perfeitamente. É necessário ter instalado o "awk" para que o programa funcione. Caso esteja usando o Fedora 6 faça o seguinte para instalar o awk:

a) Digite o comando abaixo como usuário "root" (necessário estar conectado com a internet):

# rpm -ivh ftp://ftp.pbone.net/mirror/\
download.fedora.redhat.com/pub/fedora/linux/core/\
updates/6/i386/gawk-3.1.5-14.fc6.i386.rpm


ou:

b) Faça o download do programa no endereço:
e em seguida instale-o com o comando:

# yum -y localinstall gawk-3.1.5-14.fc6.i386.rpm

4) Como usuário "root" abra o editor de texto (no meu caso usei o VI) e insira as seguintes linhas no final do arquivo "/etc/crontab":

*/1 * * * * root /usr/local/sbin/ddns.sh
0,30 * * * * root /usr/local/sbin/ddns-refresh.sh

Pronto, você não precisa mais ficar verificando qual é seu IP externo toda vez que quiser acessar seu computador fora de casa. Basta acessar seu domínio particular e você estará conectado ao seu PC. Se você quer uma versão do programa já com todas essas alterações feitas, clique aqui (ddns-dinnat-linux-1.0.tar.gz). Nesse arquivo eu já fiz todas as alterações necessárias. Quaisquer dúvidas postem, ok?

Autor: André Ferreira Guimarães Junior
Analista de Qualidade de Software
e-mail: andrefgj@yahoo.com.br

Referências:
Outras dicas deste autor

Instalando DBDesigner4 no Fedora 7

Instalando Java plugin 6 no Google Chrome usando Linux (Ubuntu 10.04)

Leitura recomendada

Brute Force em senhas de roteadores e painéis utilizando Python

Introdução a ponteiros na linguagem C

Medidor de energia e bateria no Linux

Criando um firewall no Linux

Personalizando o Fluxbox

  

Comentários
[1] Comentário enviado por xfabi0x em 27/05/2007 - 20:54h

André,
Cansei de tentar fazer isso com o ddclient+dyndns.

To com problemas que a winconnection não habilitou o meu dominio ainda, mais tá tudo funcionado só falta eles aceitarem minha autenticação.. enviei um e-mail p\ eles.. Demorou p\ o teu dominio funcionar ?

Valeu a dica :D

[2] Comentário enviado por andrefgj em 28/05/2007 - 00:43h

Fabio,

Fiz uns testes aqui e comprovei que realmente agora quando se cria um novo domínio pelo site, o primeiro logon deve ser feito usando o ddns/client para windows. Caso você não tenha acesso à alguma máquina com o windows instalado use esse domínio que criei para testes:

Domínio: ddnsteste2.ddns.com.br

Senha de Confirmação: bc55514f6e

Veja se consegue com esse. Positivos ou negativos os resultados, poste-os aqui, ok?

André Ferreira

[3] Comentário enviado por xfabi0x em 28/05/2007 - 11:18h

André,

Valeu pela dica, vou instalar o ddns/client for Windows, ai quando chegar em casa eu testo meu dominio e esse seu de testes :D

Abraços


[4] Comentário enviado por xfabi0x em 30/05/2007 - 10:53h

Funcinou, mais o suporte dos caras é um lixo.

Mandei e-mail a mais de uma semana e nada..

Abraço

[5] Comentário enviado por andrefgj em 22/09/2007 - 01:28h

Atualizando o post:

A página do qual o script descrito no passo 3 requisita o IP atual mudou de layout. Portanto, o script deve ser alterado para a seguinte forma:

#!/bin/bash
unset LANG
rm -fvr /tmp/index* 1> /dev/null &&
cd /tmp && wget www.vermiip.es/o-meu-ip 2> /dev/null && cat index.html | grep "Endere" | awk '{print $3}' | awk -F '<' '{print $1}'

André Ferreira

[6] Comentário enviado por iswael em 05/03/2008 - 21:13h

Instalei o ddns no slackware, ja usava o ddns no windows porém não funcionou no linux, ja fiz tudo com esta no tutorial, porém não funciona, você me dizer se o problema é com distribuição do linux slackware?

[7] Comentário enviado por andrefgj em 23/03/2008 - 21:26h

Use o seguinte código no passo 3:

#!/bin/bash
unset LANG
rm -fvr /tmp/index* 1> /dev/null &&
cd /tmp && wget www.vermiip.es/o-meu-ip 2> /dev/null && cat index.html | grep "Endere" | awk '{print $3}' | awk -F '<' '{print $1}'

PS: Esse código só deve ter 3 linhas não existe quebra de linha após a terceira linha.

Abs,
André

[8] Comentário enviado por andrali em 04/06/2008 - 16:52h

André parabéns fiz aqui e deu certo...

Luiz Itan
msn: suportt1@hotmail.com

[9] Comentário enviado por jr.jorro em 23/03/2009 - 10:15h

Quem não lê os comentários não vai conseguir, pq o script GETIP tá desatualizado.

Aqui funciona muito bem :D

Moises Augusto
jr.jorro@gmail.com

[10] Comentário enviado por genivalos em 13/08/2009 - 22:19h

André,

Tenho linux centos e fiz o procedimento acima com as devidas correções do getip, conforme os comentarios.
Porém não consegui instalar o gawk, deu o seguinte erro: public key for gawk-3.1.5-14.fc6.i386.rpm is not installed.

Mas estou conseguindo pingar o meu ddns.

Outra dúvida: consigo acessar um serviço Voip neste mesmo servidor com esse ddns??

muito obrigado...

genival

[11] Comentário enviado por andrefgj em 14/08/2009 - 09:17h

Provavelmente você precisaria importar a public key desse repo, mas vamos tentar uma solução diferente pq o arquivo que coloquei no tutorial era para fedora. Tenta rodar esse aqui:

# rpm -ivh --nosignature ftp://ftp.muug.mb.ca/mirror/centos/5.3/os/i386/CentOS/gawk-3.1.5-14.el5.i386.rpm

Acho que você consegue pingar o seu endereço ddns pq quem responde nesse caso é o servidor ddns, não a sua máquina (não tenho certeza)

Se o serviço Voip estiver instalado e rodando na máquina onde o cliente ddns estiver instalado acredito que não há problema. Mesmo pq o ddns só tem a função de redirecionar as requisições feitas para o seu endereço ddns para o seu ip atual.

Tenta isso e posta ai se funcionou ou não.

Abs!

[12] Comentário enviado por genivalos em 18/08/2009 - 13:06h

Andre,

Dentro do diretorio (/usr/local/sbin) digitei o comando acima e veio a mensagem: "gawk-3.1.5-14.el5.i386.rpm is already installed".

Será que funcionou???? Preciso rodar o comando: yum -y localinstall gawk-3.1.5-14.el5.i386.rpm????

Desculpe, não conheço muito de linux... Vou pesquisando e configurando.

Muito obrigado,

Genival.

[13] Comentário enviado por andrefgj em 18/08/2009 - 13:54h

Sim, pela mensagem que você disse já está instalado. Não é necessário tentar instalá-lo novamente, você só precisa continuar os demais passos do tutorial e pronto.

Não esqueça que você precisa configurar seu roteador para liberar acesso as portas que se deseja. Por exemplo:

Supondo que na sua maquina linux você tenha uma aplicação voip que usa a porta "9999" (só para efeito de explicação) e o ip da sua maquina linux é "192.168.0.100". Você precisa dizer para o seu roteador que tudo que chegar na porta "9999" deve ser redirecionado para o ip "192.168.0.100" (faça uma busca no google por portfoward)

Espero ter ajudado, qualquer coisa posta ai.

Abs.

[14] Comentário enviado por genivalos em 19/08/2009 - 11:09h

André,

Muito obrigado pela sua ajuda. O meu ddns está funcionando corretamente.

Quanto ao redirecionamento das portas eu já havia configurado e está ok.

Agora consigo registrar um ramal externo no meu servidor VOIP. Este ramal utliliza o
protocolo IAX (proprietário do Asterisk) e está funcionando corretamente (chamada/voz, etc).

Agora estou pesquisando quanto ao registro de um ramal SIP, pois este protocolo tem
grandes problemas com NAT (porta de sinalizaçao 5060 e portas relacionadas à mídia
(10000 a 20000 no meu caso). Já liberei e redirecionei estas portas, porém o ramal não
se autentica.

Valeu, o seu tutorial é muito bom mesmo... parabéns.

Att...

Genival.

[15] Comentário enviado por ardemiranda em 01/10/2009 - 16:39h

So fiz a alteração para o site http://meuip.datahouse.com.br/">http://meuip.datahouse.com.br/ ao invez do http://www.whatismyip.com/ porque ele tirara o ip do title


#!/bin/bash
unset LANG

rm -fvr /tmp/index* 1> /dev/null && cd /tmp && wget http://meuip.datahouse.com.br 2> /dev/null && cat index.html | grep "<title>" | grep "Meu ip - Qual é o Meu IP?" | awk '{print $9}' | awk -F '<' '{print $1}'

[16] Comentário enviado por rauhmaru em 27/07/2012 - 10:46h

w3m -dump http://www.whatismyip.com | sed -n 's/Your\ IP\ Address\ Is: //p'



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts