DNS Dinâmico: criando seu próprio DDNS no cPanel – Parte 3: atualizadores.

Graças à modificação feita por Ethanpil no script cPanel original (parte 2 deste texto), os métodos que vou explicar  a seguir são compatíveis com a atualização de serviços como dyndns e no-ip. Ou seja: você pode usá-los também, com pequenas modificações, para atualizar seu IP dinâmico oferecido por esses serviços.

É interessante consultar também: DNS Dinâmico: Como ter no seu site a funcionalidade de whatismyip, check.dyndns ou icanhazip

Windows – arquivo batch híbrido com javascript

Uso

Edite as variáveis na zona javascript

E faça uma edição correspondente na zona batch

Salve o script com a extensão .cmd em uma máquina Windows qualquer que esteja na mesma rede cujo IP externo você quer atribuir ao host. Crie uma tarefa agendada que o execute a cada x minutos.  Se não for detectada nenhuma mudança no IP, o script que se conecta ao cPanel nem será chamado.

Testado apenas no Windows 8.1 x64. Não requer permissão de administrador para rodar.

Esse script não tem nenhuma checagem contra problemas de conectividade.

 

Windows – Powershell

 

 

Uso

  • Edite as variáveis no início do script
  • Salve como, por exemplo, ddns_updater.ps1
  • Use um batch como o seguinte para executá-lo, adaptando o caminho para o arquivo de acordo com sua situação:

  •  Crie uma tarefa agendada que execute esse batch a cada x minutos.  Se não for detectada nenhuma mudança no IP, o script que se conecta ao cPanel nem será chamado.

Testado apenas no Windows 8.1 x64. Não requer permissão de administrador para rodar.

Esse script não tem nenhuma checagem contra problemas de conectividade.

O arquivo batch intermediário é necessário porque, como o Windows é alvo de abusos e o Powershell é poderoso, a MS decidiu bloquear a execução de scripts Powershell por default. Aparentemente é possível agendar uma tarefa para rodar o script diretamente, mas ainda preciso confirmar isso.

 

Outro dia eu expandirei este texto com exemplos de:

 

  • Arduino
  • DD-WRT/OpenWRT

 

1 comentário

Clique aqui para comentar.
OBS: Os links "Responder" não aparecem nesta página, mas aparecerão na próxima.Por favor use-os se estiver respondendo a um comentário.

DNS Dinâmico: Como ter no seu site a funcionalidade de whatismyip, check.dyndns ou icanhazip.

Eu coloquei “whatismyip” no título mais para fins de compreensão imediata da finalidade. Eu não pretendo duplicar a funcionalidade desse serviço específico porque ela cresceu além das necessidades do DNS dinâmico. O script a seguir duplica exatamente a funcionalidade e resposta de icanhazip.com e pode facilmente duplicar a resposta de check.dyndns.com com o mero acréscimo de algumas palavras.

A finalidade é não depender de terceiros. Se você tem um site, por que não usá-lo? Com o bônus de não ter nenhuma surpresa futura com o dono do domínio avacalhando tudo (direito dele) e obrigando você a mudar seus scripts, como aconteceu com whatismyip.com.

O script é decepcionante simples:

Basta salvar isso como, por exemplo, “meuip.php” no seu site e rodá-lo de qualquer lugar. O resultado é idêntico ao de icanhazip.com.

Há quem acredite que  o conteúdo da variável REMOTE_ADDR pode ser falsificado pelo usuário e induzir uma vulnerabilidade no script, e que por isso você deveria ao menos checar se o valor recebido é mesmo um valor IP, como neste exemplo:

 

Mas segundo o que é explicado aqui e pelo usuário Achernar aqui, essa preocupação não se justifica, porque REMOTE_ADDR é preenchida pelo servidor www (apache, por exemplo) com o valor na camada de rede, que só pode ser um IP mesmo. Ao contrário de outras variáveis como aquela que identifica o seu browser (HTTP_USER_AGENT) e que podem ter na realidade qualquer texto que o usuário remoto queira.

Então você pode usar o primeiro script sem medo.

 


Clique aqui para comentar.

Como descobrir qual é o seu IP externo e o que danado é isso?

Este texto é auxiliar da série de textos sobre DNS dinâmico.

O seu modem é sempre o primeiro a saber qual o seu IP externo e seria perfeito se existisse um mecanismo padronizado para que ele avisasse quando obtivesse um IP. Infelizmente esse mecanismo não existe e o meio mais “simples” de saber qual o seu IP externo acaba sendo, contra-intuitivamente, perguntar a terceiros!

Você pode nem saber o que é um IP externo mas cada site que você acessa sabe qual é o seu, porque essa informação é indispensável e faz parte do protocolo de conexão. Sendo assim, como a maioria dos meus leitores deve saber, há muito tempo sites vem oferecendo uma gambiarra para contornar essa deficiência dos protocolos de conexão à internet: basta abrir a página deles que eles respondem com o seu endereço IP. Entre eles estão:

  • http://whatismyip.com/ – Eu suponho que seja o mais conhecido de todos, mas as constantes mudanças no código fonte dificultam seu uso em projetos de automação e o constante entulhamento da interface dificulta até perguntar a alguém pelo telefone que número está aparecendo;
  • http://www.ipchicken.com/ – Faz DNS reverso automático, mostrando a você o nome DNS da sua conexão. Útil quando você quer saber se a linha é GVT ou Velox ou se é IP fixo ou dinâmico.
  • http://icanhazip.com/ – Serviço oferecido por Major Hayden. Embora esteja entre os mais feios, é o mais prático. A resposta é unicamente o endereço IP em texto puro, sem formatação. Perfeito para uso em automação. Neste outro texto explico como ter a mesma funcionalidade no seu site;
  • http://checkip.dyndns.com/

Mas o que danado é IP externo?

Como este texto foi criado primariamente para dar suporte aos meus textos sobre DNS dinâmico eu imagino que a maioria dos leitores não precise ser lembrado do que é isso. Porém muita gente pode cair aqui via Google, então aí vai uma explicação sucinta, que eu posso ou não expandir depois (não tenho tempo agora):

Uma das primeiras coisas a confundir os novatos é que cada dispositivo conectado à internet através de um roteador (que pode ser o modem) tem dois endereços IP:

  • O interno, que só vale dentro de sua própria rede e é você quem determina. Se você estiver de qualquer forma conectado a uma rede, você tem um endereço IP interno, mesmo que seja “inventado” pelo SO (endereços de auto configuração);
  • O externo, que é o IP atribuído pelo provedor de acesso à sua conexão e na maioria das conexões ADSL muda toda vez que você desconecta e reconecta. Esse endereço somente existe quando você está conectado à internet E geralmente só é importante se você deseja que alguém inicie uma conexão com você a partir da internet.

Como explicado acima, o IP externo não é uma informação “óbvia”, depende de você estar conectado ou não à internet e geralmente muda com freqüência. Não é algo que possa simplesmente ser memorizado. Se alguém pergunta a você “qual o seu IP externo?” geralmente está esperando que você verifique ou tenha verificado isso recentemente pelos meios indicados acima ou similares.

 

2 comentários
  • Sidmar

    Jefferson, acompanho seu blog desde os tempos do portal (hoje “http://ryan.com.br/dvd_portal.htm”) e adoro muito tanto o que escreve como a forma como escreve.
    Nunca achei necessário intervir antes pois a grande maioria dos temas são novidade ou fora da minha área de atuação mas neste caso acho que tenho algumas informações que podem, ou não, ser interessantes.
    Você pode editar este comentário a vontade, retirando o que não for pertinente, que não vou ficar incomodado. Muito pelo contrário, vou me sentir orgulhoso se passar pelo seu “filtro” pessoal.
    Com relação ao tema endereço IP não seria mais “correto” utilizar os termos público/privado ao invés de externo/interno?
    Em ambos os casos são endereços IP (um número de 32 bits) mas o que difere sua função seria a possibilidade dos endereços públicos serem roteáveis pelos equipamentos da Internet enquanto os privados não, embora todos eles são roteáveis de maneira geral mas os endereços privados são bloqueados pelos equipamentos da rede mundial.
    Você ainda me surpreendeu ao utilizar os termos externo/interno pois o que normalmente tenho visto por aí são válido/inválido. Tá, eu sei que externo/interno cabe bem melhor no contexto do tema do que válido/inválido e também sei que você é experto o suficiente para saber a diferença, mas porque não público/privado? Nem acho que seria necessário alterar a sua explicação para usar estes termos.
    De qualquer forma, muito obrigado pela oportunidade de me expressar a respeito do tema.

    Sidmar.

    • Sidmar,

      Somente mais ou menos uma hora depois de publicar o texto eu me lembrei de que geralmente se usa o termo “ip público”. Eu escrevi externo porque na ocasião eu estava trabalhando com várias fontes que chamavam de “external” e nenhuma que chamava de “public”, daí fiquei “contaminado” pelo termo. Entretanto Eu fiquei matutando se deveria mudar o texto e fiquei em dúvida, porque o IP externo nem sempre é literalmente “público”. “Válido/Inválido” no contexto da minha explicação soa ainda pior. Eu ainda não decidi o que fazer a respeito.

      Mas obrigado pela contribuição.


Clique aqui para comentar.
OBS: Os links "Responder" não aparecem nesta página, mas aparecerão na próxima.Por favor use-os se estiver respondendo a um comentário.

DNS Dinâmico: criando seu próprio DDNS no cPanel – Parte 2: automatizando.

Na parte 1 deste texto eu expliquei como criar um “A RECORD” no seu domínio usando o cPanel que aponta para um IP qualquer na internet, imitando o funcionamento de um serviço de DNS dinâmico como o no-ip ou dyndns. Nesta segunda parte eu começo a explicar como automatizar a atualização desse registro. A automação do processo é dividida em duas partes para facilitar a implementação em dispositivos mais simples, como roteadores. E também facilita a implementação e o diagnóstico.

AVISO: O script que apresentarei a seguir tem problemas de segurança que você deve conhecer. Preste atenção a tudo o que é explicado antes de usá-lo.

Origem

A automação do processo de atualização da zona DNS no cPanel foi elaborada por Mitchel Haan e publicada em seu site [link morto] em abril de 2013. O site de Mitchel foi apagado em algum momento entre 5 e 23 de fevereiro de 2015 mas por sorte ainda existe uma cópia na Wayback Machine. De qualquer forma a versão que apresento a seguir é uma adaptação feita por Ethanpil.

Uso

A primeira coisa a fazer é preencher toda a seção de variáveis. As duas primeiras podem ser o que você quiser porque servem apenas para identificar você ao executar o script, evitando que terceiros possam remotamente executar o seu script indicando um IP sob controle deles.

As outras variáveis são relacionadas ao seu domínio e sua conta cPanel:

Note o “.” inicial na última variável. Não é erro de digitação. Sem ele o script não funciona.

Parâmetros do script

  • hostname – indispensável. É o nome do host cujo IP você quer atualizar;
  • myip – Endereço IP que você quer atribuir ao host indicado por hostname. Se você omitir, o script usará o IP que consta no cabeçalho da conexão http (o IP de quem executou o script).

Parâmetros são separados pelo caractere “&”. Cada valor é separado do respectivo parâmetro pelo caractere “=”. Estas são convenções universais e não do script.

Salve o script no servidor www. Digamos que tenha sido na raiz do domínio exemplo.com.br e o nome do arquivo seja atualiza.php.

Rode o script colocando em qualquer browser, exceto Internet Explorer:

http://nome_de_usuario:senha@exemplo.com.br/atualiza.php?hostname=teste&myip=189.70.37.12

Isso atualizará o host teste.exemplo.com.br para apontar para o IP 189.70.37.12

Se tudo estiver OK a resposta do script, no browser, será algo assim:

Na terceira parte desta série de textos eu vou abordar as maneiras de você enviar esse comando para o script automaticamente. Mas é importante que o que expliquei até aqui já esteja funcionando corretamente. Se não está, não adianta procurar a solução na Parte 3.

Para quem nunca viu um URL como o acima:

A sintaxe http://usuario:senha@dominio é uma forma muito antiga e conveniente de passar credenciais de autenticação HTTP básica no URL, permitindo até mesmo gravar a autenticação nos favoritos. O IE deixou de suportar isso a partir da versão 7 porque começou a ser usado para fins maliciosos

Problemas de segurança

1 – Isso não é jeito de tratar credenciais cPanel

O script foi criado com a intenção de rodar no mesmo servidor onde roda o domínio a atualizar. Entretanto isso é preocupante porque como você pode ver, as credenciais cPanel são escancaradas no script:

Qualquer invasor que tenha acesso meramente de leitura ao seu diretório www (e existem infindáveis meios de se conseguir isso) poderá eventualmente esbarrar nesse script e aí… “perdeu playboy”. Com as credenciais cPanel o invasor tem o controle de toda a conta, com todos os seus domínios, www, email, bancos de dados… No meu caso isso seria uma catástrofe.

Uma forma de minimizar esse problema é rodar esse script fora do domínio que ele atualiza. Por exemplo, se você já tem um servidor local rodando 24h, que não oferece nenhum serviço para a internet (menos vulnerável), você pode rodar o script nele. Uma “gambiarra” para conseguir isso em uma máquina Windows sem precisar fazer qualquer modificação no script é instalar o XAMPP.

Eu simulei isso no meu desktop e funcionou. Mas tenha o cuidado de manter o uso de https na variável $dyndnsCpanel. Dessa forma será bem mais difícil capturar as suas credenciais do cPanel interceptando a conexão entre seu servidor local e o seu domínio:

Se você usar http (nem estou certo de que o cPanel permita) as credenciais cPanel poderão ser interceptadas.

Outra forma de tentar minimizar o problema é obfuscar o código PHP. Obfuscação não vai impedir um invasor determinado a descobrir do que se trata, mas dificulta bastante. Se você der um nome ao script que não denuncie seu propósito e obfuscar o suficiente o conteúdo, aumenta muito as chances de que o invasor ache que não vale a pena perder tempo com isso. Deixando escancarado qualquer script kiddie vai ter um orgasmo. Como fazer essa obfuscação precisará ser tema para outro texto.

 2 – A conexão com o script pode ser interceptada

Estando o script em uma máquina remota, as credenciais de acesso ao mesmo podem ser interceptadas com relativa facilidade, porque são transmitidas claramente no URL:

http://nome_de_usuario:senha@exemplo.com.br/atualiza.php?hostname=teste&myip=189.70.37.12

Isso não é problema se no lugar de HTTP o seu domínio usa HTTPS, porque nesse caso até o URL é criptografado.

Mas se você não usa HTTPS qualquer pessoa observando o seu tráfego, como o operador do seu provedor de acesso via rádio, poderá assumir o controle de para onde aponta esse hostname. Dependendo do quanto ele seja esperto ele pode conseguir induzir você a fornecer senhas de acesso extras simulando em máquina controlada por ele o dispositivo que você quer acessar, entre outras coisas.  Se você rodar o script fora do seu domínio como explicado no item anterior pode minimizar esse problema também.

Nota: na primeira revisão deste texto eu afirmei que os serviços de DDNS gratuitos como o no-ip e dyndns também são vulneráveis a interceptação. Isso está parcialmente correto. O no-ip, por exemplo, suporta http e https, mas o simples fato de suportar os dois já é motivo para preocupação porque só Deus sabe que protocolo está usando o danado do roteador, modem ou dvr onde nós colocamos nossas credenciais. Somente interceptando nós mesmos a atualização para termos certeza.

7 comentários
  • Jefferson, eu uso um esquema diferente. Eu lembro quando postaram sobre este script na PICLISTBR, mas fiquei bastante receoso com o fato de deixar as credenciais do cPanel de certa forma vulneráveis.

    O que uso, embora dependa também de confiança de terceiros, pelo menos no tempo que uso e dado o tempo que o serviço existe, eu dei meu voto de confiança. Se não conhece, apresento-lhe o site: http://www.afraid.org/

    Ele oferece o serviço de DDNS, você pode escolher entre os que pertencem ao administrador do site ou algum dos inúmeros disponibilizados por terceiros (ai vai da confiança…). Registrei alguns sub-domínios usando um dos disponibilizados pelo admim e uso um dos clientes pra windows também disponibilizados por lá. Nos dispositivos que precisei usar, tenho o DDWRT que suporta url custom.

    Em um dos meus domínios, fui no cPanel e criei um sub-domínio meu, que redireciona para um dos que criei no afraid.

    Assim, caso amanhã um daqueles dominios do admim expirem, eu posso trocar por outro ou até mesmo registrar um meu, e apenas altero o meu redirecionamento, sem precisar mexer em uma vírgula do que já está configurado em meus dispositivos.

    Utilizo a pelo menos uns 5 anos e não tive qualquer problema até agora.

    • Discutimos isso em agosto de 2014. O problema para mim, conforme eu disse na época:

      “Eu até pensei em usar o serviço de afraid.org, mas a “gambiarra” (apontar para meu domínio, que aponta para afraid.org, que aponta para o dispositivo) me incomoda.”

      Não estou dizendo que sua solução seja ruim. Você pelo menos a vem usando há cinco anos. Só por isso já é muito melhor que a que eu venho usando: nenhuma.

      Eu vou terminar esta série de textos sobre o uso do cPanel, mas pelo pouco que li até agora me parece que vou acabar usando a solução sugerida por Daniel Plácido: CloudFlare.

      • Pois é… o que fiz, que seja uma “gambiarra” eu não nego, mas pelo menos tá me atendendo bem e flexibilizou qualquer mudança, para que ela seja menos traumática, do ponto de ter que reconfigurar (aka, trocar a url) em vários dispositivos. E ainda assim, do jeito que está, se amanhã eu resolver usar este script, basta mudar a configuração deste sub-dominio para que ele não seja mais um redirecionamento e sim i A RECORD e os dispositivos nem vão notar a diferença.

        Quanto ao fato do tratamento das credencias cPanel, uma coisa que me passou pela cabeça que melhora um pouco a eminencia de um desastre, é se o seu host permitir a sub-locação de espaço. O DreamHost permite isso, que eu crie uma crie uma sub-conta dentro de minha conta, sendo que esta sub-conta pode ter seu próprio cPanel, com as configurações e serviços determinadas por mim.

        Neste caso é menos pior se puder usar uma sub-conta com o seu cPanel em separado da conta principal, desta forma se alguem interceptar as credenciais, terá acesso somente a esse sub-domínio, onde não terá nada de interessante pra vandalizar. No máximo ele “envenenaria” o IP.

        • O Dreamhost permite isso em qualquer conta? O Hostgator só permite isso se eu comprar um “Reseller Plan” que custa no mínimo 25 dólares por mês (conta aluminium). Não está tão caro já que pago 12 dólares pela conta baby, mas ainda assim é o dobro.

          • Não sei te dizer exatamente, mas acredito que seja pra qualquer plano host. Não sei lhe dizer, porque eu na verdade o que uso do DreamHost é exatamente um reseller de um amigo que me fornece o espaço para o meu blog. Logo eu tenho acesso a um cPanel meu, separado desse meu amigo que me fornece o espaço.

            Diretamente da Wiki do DreamHost:

            http://wiki.dreamhost.com/Reselling

            Does DreamHost offer a resellers program?

            Reseller dh slice.jpg

            If you have an active account with a hosting plan, you can resell services to clients. There are a few things to consider if you are looking into becoming a reseller:
            You are solely responsible for managing your clients’ accounts yourself.
            There is no re-branding of DreamHost services allowed.
            DreamHost does not bill your clients for you, as you are in charge of billing them directly for the services provided.
            Customer and technical support for your clients must be provided by you.
            As long as you are willing to handle these items yourself for your clients, you can successfully use your DreamHost panel to resell services to your clients.

  • Encontrei dois problemas no script.

    1 – A definição do parâmetro TTL na verdade não funciona. Não foi implementada. Por isso removi a checagem do parâmetro

    [code lang=”php”]
    // Get and validate ttl
    $ttl = $_GET[‘ttl’];
    if (!is_numeric($ttl) || $ttl < 60)
    $ttl = 300;
    [/code]

    2 – No XAMPP o script retorna um monte de avisos por causa da falta de inicialização da constante DYNDNS_ALLHOSTS, por isso eu acrescentei:

    [code lang=”php”]
    define(‘DYNDNS_ALLHOSTS’, "");
    [/code]

  • Gilberto Alves Rodrigues

    Existe uma solução dessas para zPanel?


Clique aqui para comentar.
OBS: Os links "Responder" não aparecem nesta página, mas aparecerão na próxima.Por favor use-os se estiver respondendo a um comentário.

DNS Dinâmico: criando seu próprio DDNS no cPanel – Parte 1.

O processo que explico aqui, é inteiramente manual e pouco prático, mas funciona.

Entre no cPanel

Em Domains, escolha Advanced DNS Zone Editor

cpanel_domains_Advanced-DNS-Zone-Editor_ryan.com.br

Digamos que você queira adicionar o host “teste” no domínio “ryan.com.br”:

cpanel_advanced_DNS_zone_editor_640_ryan.com.br

  1. Selecione o domínio. Muitas vezes você tem apenas um mesmo, mas uma conta cPanel pode administrar ilimitados domínios;
  2. Escreva o nome do host. Ao dar ENTER o cPanel preenche o resto;
  3. Preencha o TTL desejado. Recomendo que leia este outro post se estiver incerto quanto ao valor;
  4. O tipo de registro que você deve criar para DDNS é “A” (A RECORD);
  5. Coloque o IP atual do seu dispositivo. Geralmente esse é o IP externo da conexão de banda larga onde o dispositivo está instalado. Se for na conexão onde você está, você pode obter o IP visitando sites como WhatisMyIP.com;
  6. Clique em Add Record.

Imediatamente após adicionar você já pode testar. Um ping para teste.ryan.com.br deve retornar o IP que você colocou em Address.

cPanel_ddns_ping_ryan.com.br

Este processo não é prático porque toda vez que o IP mudar você tem que manualmente atualizar o Address no cPanel. Na segunda parte deste texto eu explico como automatizar isso.

5 comentários
  • Adriano

    Muito bom Ryan. Explicação mais que impecável. Aguardando segunda parte do tutorial. :D

  • … Nossa ficou melhor que a encomenda. Tb estou esperando a segunda parte, mas esse salvei já nos favoritos.
    Vai ajudar bastante a fazer umas coisas aqui. rsrsrs

  • Daniel Pácido

    Jefferson não sei se você conhece o CloudFlare, ele tem a API fácil de trabalhar você pode criar um script que fica hospedado no Hostgator no seu caso, que vai receber a ordem pra atualizar o IP de cada estação que quiser, e criar um script shell mesmo pra fazer esta consulta pra ver se o IP mudou a cada X minutos e se verificar que mudou envia o novo IP pra este script no seu servidor, já usei uma POG dessas e funcionava muito bem

    • Daniel, a única coisa que sabia do cloudflare é que é usado pelo Muambator, Piratebay, entre outros. Como o que estou explicando nessa série de textos também é uma POG eu vou dar uma olhada no funcionamento do serviço free do cloudflare para ver como as gambiarras se comparam.

  • Tenho certeza de que todo mundo aqui já notou, mas só para os comentários não ficarem fora de sincronismo com o texto, que eu já editei com o link, aqui está a segunda parte.


Clique aqui para comentar.
OBS: Os links "Responder" não aparecem nesta página, mas aparecerão na próxima.Por favor use-os se estiver respondendo a um comentário.

TTL e os serviços de DNS Dinâmico (DDNS)

Este texto foi escrito para dar suporte a outros textos que postarei mais tarde. Eu não estou ainda satisfeito com a minha explicação por isso o texto pode mudar bastante, mas a teoria que tento explicar até onde sei está correta.

Primeiro, vamos fazer uma breve resumo do que constitui um “domínio”…

  • Embora a maioria das pessoas veja um domínio como um servidor, na realidade cada domínio pode ser constituído por um número ilimitado de máquinas ou dispositivos. Cada uma dessas máquinas/dispositivos é chamada de “host” e cada host tem seu endereço IP. Normalmente esses hosts fazem parte da mesma rede particular, mas você também pode fazer com que eles apontem para um dispositivo do outro lado do mundo.

…E do que é DNS e como funciona:

  • A internet é uma rede baseada em IP e só entende números IP mesmo. O fato de você poder escrever “ryan.com.br” em seu browser e chegar ao meu site é resultado de uma série de “artifícios” para poder representar números IP por nomes e o serviço que se encarrega de fazer essa tradução é o DNS;
  • Como não faz sentido perder tempo perguntando repetidas vezes algo que você já sabe, mantemos uma memória (no jargão, “cache”) de que IP corresponde a que nome;
  • Mas como essa relação entre nome e IP pode mudar de uma hora para outra, essa memória precisa ter uma duração finita. Aí entra o TTL.

TTL, do inglês Time To Live (tempo de vida) é o parâmetro que determina a “validade” da resposta do servidor DNS e é parte integrante de todo registro DNS. Se o dispositivo recebe uma resposta do servidor DNS dizendo que o TTL é de x segundos, ele só vai consultar o servidor DNS novamente para aquele host se alguém acessá-lo novamente depois de passados x segundos. Esse parâmetro é praticamente irrelevante no dia a dia, mas você precisa estar atento a ele quando usa qualquer serviço de DDNS.

Serviços de DNS dinâmico como o no-ip costumam ter um TTL de 60 segundos. O valor padrão em um serviço de hospedagem como o Hostgator costuma ser 14400 (4 horas). Não é recomendado baixar para menos que 300 (5 minutos) porque o seu provedor pode não gostar do stress desnecessário no servidor DNS dele. E francamente ele tem razão.

Tenha em mente que entre você e o host que você quer acessar existem diversos servidores DNS ou “caches” secundários, inclusive em cada um dos seus roteadores. Quando você configura manualmente no seu PC ou dispositivo um servidor DNS você passa por cima de vários, mas no mínimo você deve contar com o cache no seu dispositivo, o do servidor DNS que você configurou e qualquer um depois dele.

Para um número “n” de caches TTL DNS no caminho, o tempo de propagação “x” é

TTL >= x <= n * TTL

Então, por exemplo, se existirem 3 caches e o TTL for de 4h, o tempo de propagação (o tempo que leva para o dispositivo que fez a consulta receber uma resposta atualizada) será qualquer coisa entre 4h e 12h.

Se por acaso você fizer seu primeiro teste de DDNS com TTL de 14400 e mudar o IP, mesmo que você baixe o TTL para 300 pode ter que esperar 4 horas ou mais até poder “ver” essa mudança ter efeito.

Confuso? Vamos tentar com um exemplo simples:

Servidor DNS configurado na sua máquina: Google (8.8.8.8)
host que você quer acessar: teste.ryan.com.br, que acaba de ser criado e foi configurado com TTL 14400 (default)

Na primeiríssima vez que você acessar teste.ryan.com.br, o Windows não sabe qual é o IP, mesmo que ele saiba o IP default de “ryan.com.br”, porque se trata de outro “host” e vai perguntar ao servidos DNS configurado (o da Google). O servidor da Google também não faz idéia de quem seja (o hostname acaba de ser criado), por isso vai consultar o servidor DNS que tem autoridade sobre o domínio ryan.com.br. A resposta dirá que o TTL é de 14400, assim o servidor da Google só vai perguntar quem é teste.ryan.com.br novamente em 4 horas. Ele repassa a informação para o Windows, que também vai ver esse TTL de 14400 e só vai perguntar novamente ao servidor da Google em 4 horas. Você pode esvaziar o cache DNS do Windows, forçando-o a perguntar mais cedo, mas o servidor da Google ainda acha que o TTL é de 4 horas e não adianta reduzir o TTL de teste.ryan.com.br para 300 nesse meio tempo, porque o servidor da Google só vai tomar conhecimento da redução do TTL quando o prazo expirar e ele fizer uma nova consulta a pedido de alguém.

Escolher qualquer outro servidor DNS nesse meio tempo, como o do OpenDNS (208.67.222.222 ou 208.67.220.220) ou um serviço de ping remoto (vai depender de que servidor DNS esse serviço usa) pode acelerar o processo de teste.

 

1 comentário
  • O que eu entendo de servidor DNS é o mesmo que você escreveu. E pra mim, a explicação está boa o suficiente. B)


Clique aqui para comentar.
OBS: Os links "Responder" não aparecem nesta página, mas aparecerão na próxima.Por favor use-os se estiver respondendo a um comentário.