Rotina útil pra quem tem acesso à configuração do servidor DNS (bind) de seu provedor ou é o próprio administrador de tal. Aqui veremos como fazer para ter um subdomínio apontando de forma permanente para seu IP dinâmico ADSL. Enfim, vamos criar um dyndns ou no-ip da vida.
Esse artigo é a documentação de uma rotina que bolei há uns 2 anos, porém com as famosas migrações de servidor que a gente sempre enfrenta, acabei perdendo os arquivos de configuração e só agora resolvi (re)estudar a solução para fazer novamente. E lição aprendida, documentar para não perder novamente.
Acredito que todos saibam do que se trata DNS dinâmico, certo? Hmmm, não!? Então aí vão algumas sugestões de leitura:
Resumindo, existem sites que oferecem o serviço de DNS dinâmico onde você instala um software cliente na sua máquina (IP dinâmico, que muda toda vez que se conecta) que associa seu IP com um hostname, como por exemplo casa.homelinux.org. Legal né? Sim, mas eu queria mesmo era um domínio casa.acme.com, seria legal ter meu desktop associado com meu próprio domínio. Tais serviços possuem uma lista limitada e pré-definida de domínios que você pode usar para compor seu hostname.
Imagina só se eu tivesse grana sobrando, registraria o domínio berbert.com (Berbert é meu sobrenome) e quem quisesse me encontrar (minha máquina) pingaria pra fabio.berbert.com. ééééé!!! Eu chegaria num cliente e, precisando daquele tal arquivo diria: "acessa fabio.berbert.com aí".
Para acompanhamento do artigo vamos assumir o domínio fictício "acme.com", onde queremos como host dinâmico o "casa.acme.com" e nosso servidor/provedor roda bind9 como software DNS. Na máquina cliente (desktop) precisaremos somente do utilitário nsupdate, que no Debian faz parte do pacote dnsutils. Sendo assim:
# apt-get install dnsutils
Ah, como o objetivo é configurar DNS dinâmico, estou partindo do princípio de que seu servidor DNS já esteja configurado e em pleno funcionamento.
Se você estiver em uma rede esse comando só vai retornar o IP interno... Além do mais que estava tentando utilizar essa solução no meu notebook, que posso estar conectado na internet de várias formas (LAN, WIFI, BlueTooth, Modem), então seria interessante que o script "checasse" qual(is) interface(s) está(ão) conectada(s) e pegasse o IP EXTERNO dessa interface ou simplesmente a solução mais rápida que eu achei foi pegar o IP através de um site...
Claro que não vou entrar no mérito da questão de abrir portas para esse DNS dinâmico, pois de nada adianta eu estar na rede do meu cliente com meu notebook e o modem dele estiver com o FIREWALL bloqueando todo e qualquer tipo de acesso...
[5] Comentário enviado por fabio em 03/07/2007 - 15:57h
Se sua interface de conexão for diferente de ppp0, basta mudar o valor da variável INTERFACE no script.
Bacana sua linha de comando do whatismyip, funciona melhor que a minha do script local, porém o sistema fica dependendo do site em questão. Se o site cair, mudar de domínio ou acabar, vc terá que mudar seu script, enquanto que localmente o processo nunca vai mudar.
[6] Comentário enviado por slaypher em 03/07/2007 - 16:05h
Olá,
Parabéns pelo artigo, mas tenho uma questão que surgiu no final:
# adiciona 3 regras no canal início do canal INPUT
$IPT -I INPUT -p tcp --dport 3306 -j DROP
$IPT -I INPUT -p tcp -i lo --dport 3306 -j ACCEPT
$IPT -I INPUT -p tcp -s casa.acme.com --dport 3306 -j ACCEPT
Ao adicionar essas regras ela não irá bloquear inclusive as conexões locais, pois a primeira regra para bloquear qualquer conexão independente de onde veio, se foi local ou não.
[7] Comentário enviado por fabio em 03/07/2007 - 16:08h
Olá slaypher, no artigo tem citado isso, a princípio parece isso, mas o parâmetro "-I" insere a regra no início da fila do canal. Sendo assim a regra que libera pro localhost fica antes da regra que bloqueia tudo. Se eu tivesse usado p "-i" (minúsculo) ou o "-A", aí sim ia dar problema.
[8] Comentário enviado por viniciuscordeiro em 03/07/2007 - 16:10h
Fabio, mas aqui quando utilizo sua linha ele só me retorna o IP INTERNO da rede... Se o DNS casa.acme.com estiver apontando para 192.168.0.1 por exemplo, os outros computadores que estiverem na mesma rede irão te encontrar por esse domínio?
[12] Comentário enviado por pankdo em 04/07/2007 - 12:09h
Show de bola Fabio
mas tenho uma duvida
eu poderia fazer algo semelhante para atualizar o IP do próprio servidor?
e o seguinte tenho uma maquina como gateway da rede com
2 ADSLs com IP dinâmico
e um link com IP estático
cada um ligado em uma placa de rede diferente
isso forma um unico link com load-balance para fornecer acesso de internet a rede interna o qual tambem hospeda um bind9
eu preciso saber o IP das interfaces ADSL
e relacionar com um nome(DNS)
depois eu faria um outro load-balance do tipo servidor sujo (como a google faz)
para desafogar o meu unico link com IP estático
pois este gateway também hospeda um site
a sempre que temos que acessa-lo de fora da rede somos obrigados a usar o unico link com IP estático ou entrar no gateway descobrir os IPs dos ADSLs e acessar utilizando o IP direto no navegador o que e um grande problema pois nem todo mundo tem permissão para entrar no gateway(na realidade so eu ai eu entro e tenho que pagar o IP e mandar pro pessoal)
sera que esse meu problema tem solucao ???
[14] Comentário enviado por zapp em 17/07/2007 - 16:53h
Otimo Artigo....
tem uns erros por causa do formato de data de cada servidor... em casa esta UTC em no meu server de DNS esta BR mas corrigi isso e deu certo..... depois deu eu erro de permissao, mas tb arrumei...
conclusao tudo funcionando..... Perfeito..
[15] Comentário enviado por leoberbert em 23/07/2007 - 08:57h
Fabio....
No Slackware vc saberia me informar os pacotes necessários? Outra coisa, é realmente necessário ter uma interface pppoe? Pois estou debaixo de um router tb, mas creio que não seja..... Fico no aguardo!!!
[16] Comentário enviado por fabio em 23/07/2007 - 09:04h
Leo,
Só é necessário o comando nsupdate, pesquisa em que pacote ele se encontra no Slackware. Se está debaixo de um router, o único sentido de usar isso é se você redirecionar alguma porta do router (IP real) pra sua máquina interna, como por exemplo a do SSH.
[18] Comentário enviado por lucasamorim em 09/11/2007 - 18:16h
Olá,
Uso Velox Residencial com IP dinâmico. Meu desktop Debian está conectado à saída RJ45 do meu modem roteado speedstream 5200. A saída de ifconfig para mim é bem diferente da do artigo, o que eu devo mudar no procedimento? veja:
eth0 Link encap:Ethernet HWaddr 00:1A:4D:A2:8C:77
inet addr:192.168.254.2 Bcast:192.168.254.255 Mask:255.255.255.0
inet6 addr: fe80::21a:4dff:fea2:8c77/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:208387 errors:0 dropped:0 overruns:0 frame:0
TX packets:196515 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:207925971 (198.2 MiB) TX bytes:16364967 (15.6 MiB)
Interrupt:18 Base address:0xc000
[19] Comentário enviado por abelardo em 20/12/2007 - 10:14h
bom dia fabio, seguinte estou com um problema aqui na minha rede, ela ta muito lenta e existem alguns nomes que eu nao estou conseguindo resolver, como o do www.vivaolinux.com.br, nao estou conseguindo nem pingar nele, mas em outros sites estou entrando normal, apenas alguns sites que estao assim,
[20] Comentário enviado por onlline em 26/12/2007 - 16:04h
Oi boa tarde, Eu consegui ate configurar o bind mas a parte do NSUPDATE fla que enviou a atualização mas nada de mandar o update no servidor bind.. eu uso o Debian teste no 3.1 r5 e no 4.0r1 , gostaria de saber se alguem poderia me mandar as configurações de dns e do nsupdate, pra ver se eu consigo!
[21] Comentário enviado por onlline em 26/12/2007 - 16:14h
Eu consegui um cliente tipo NSUPDATE para WINDOWS XP muito bom ,,
o nome dele é (DynSite) ele não é free! mas no meu caso não consegui funcionar nem com o NSUPDATE e Nem com Ele!
[25] Comentário enviado por nardin em 13/07/2008 - 11:08h
Estou com uma dúvida.
Pra fazer essas configurações o modem prescisa ser bridge ou router?
Quando uso meu modem bridge eu consigo uma interface ppp0 como a sua, mas com o router fica a eth0 com um ip interno.
Se for pra usar o bridge como ficaria os arquivos de Registros de Recursos? Por exemplo, de uma olhada como está configurado o meu.
$TTL 43200
@ IN SOA rockstar.leonardocostaborges.com. root.leonardocostaborges.com. (
1 ; Serial
3600 ; Refresh
900 ; Retry
1209600 ; Expire
43200 ) ; Negative Cache TTL
;
@ IN NS rockstar.leonardocostaborges.com.
@ IN A 192.168.1.64
rockstar IN A 192.168.1.64
www IN CNAME rockstar
[26] Comentário enviado por jef.ferregato em 07/02/2010 - 18:33h
olá alguem pode me ajudar estou a dias tentando resolver isso e ainda não consegui, sou iniciante na comunidade Linux e por enquanto utilizo o Suse e o RedHat.
O quadro é o seguinte:
tenho um DSL PPoe (ip dinamico), um router D-link WBR 1310 (ele que disca e faz a autenticação), e uma rede com o range de ip de 192.168.0.100 a 192.168.0.199.
nesta rede está um servidor ftp/ssh/web, cujo o ip é 192.168.0.157
como o router não tem o o cliente ddns interno optei por instalar um cliente ddns no própio servidor, a instalação foi bem facil e a configuração está feita sobre a interface eth0, que é a placa onde recebe dhcp do router citado.
No entanto o proposito do meu ddns é que o ele atualize o ip publico para que eu tenha este acesso de fora, mas ele está atualizando o ip inteno (192.168.0.157) o que eu faço para ele atualizar o ip externo sendo que na interface tenho que colocar eth0?
se alguem puder me ajudar ficarei imensamente grato.
[29] Comentário enviado por Alfredo_Silveira em 03/06/2013 - 12:38h
Caro Fábio,
Eu poderia utilizar como clientes, neste caso, modems 3G que permitissem apontar para o meu servidor DDNS (FreeBSD 9.1)?
Estou precisando montar um servidor DDNS, mas ele irá coletar os IPs dinâmicos de modems 3G. Só que nestes modems posso configurar um domínio no qual ele se conecta.
[30] Comentário enviado por mpbabilio em 27/03/2015 - 11:48h
Bom Dia Fabio,
Muito bom o artigo. Me ajudou muito. só tenho duas observações a fazer.
1- Quem usa o apparmor e o Bind com chroot, tem que apontar o caminho do chroot no arquivo /etc/apparmor.d/usr.bin.named com permissão de leitura e escrita.
2- em se tratando de ips dinâmicos, o ttl de 1440 é um pouco alto ainda, estou trabalhando com 30 segundos.
ps: estou trabalhando em um script para verificar periodicamente o IP e só atualizar o DNS quando houver uma mudança efetiva do IP, assim que estiver pronto publico aqui.
[31] Comentário enviado por fabio em 27/03/2015 - 13:45h
[30] Comentário enviado por mpbabilio em 27/03/2015 - 11:48h
Bom Dia Fabio,
Muito bom o artigo. Me ajudou muito. só tenho duas observações a fazer.
1- Quem usa o apparmor e o Bind com chroot, tem que apontar o caminho do chroot no arquivo /etc/apparmor.d/usr.bin.named com permissão de leitura e escrita.
2- em se tratando de ips dinâmicos, o ttl de 1440 é um pouco alto ainda, estou trabalhando com 30 segundos.
ps: estou trabalhando em um script para verificar periodicamente o IP e só atualizar o DNS quando houver uma mudança efetiva do IP, assim que estiver pronto publico aqui.