Serviço de DNS dinâmico (DDNS) com FreeDNS

Índice

  1. Introdução
  2. Criação de cadastro no FreeDNS
  3. Criação de registros DNS no FreeDNS
  4. Clientes de DNS Dinâmico do FreeDNS
    1. Instalação e Configuração do “FreeDNS Update Service” (Windows)
  5. Configuração de Port Forwarding no Roteador
  6. FAQ
    1. Mensagem “Referência de objeto não definida para uma instância de um objeto” no arquivo de log/e-mail
  7. Conclusão
  8. Referências

1. Introdução

NOTA: Apesar de ser possível utilizar o FreeDNS para DNS dinâmico, recomendo utilizar o Duck DNS com uma tarefa agendada, pois o FreeDNS passou a exigir verificações semestrais gratuitas da conta (é necessário realizar login a cada seis meses no site FreeDNS), caso contrário, o nome DNS dinâmico é temporariamente desabilitado.

Alguns clientes da NetHouse Informática utilizam um serviço de DNS dinâmico para que possam acessar a rede corporativa de suas empresas, devido a linha ADSL doméstica possuir endereços IP dinâmicos, ou seja, não-fixos.

Antigamente, utilizávamos o No-IP, porém, de tempos em tempos ele envia um e-mail para o endereço cadastrado solicitando a renovação constante do nome de domínio registrado e, caso o usuário não o faça, as atualizações dinâmicas do endereço são encerradas. Outras alternativas, como o DynDNS, não são mais gratuitas.

Uma alternativa é o FreeDNS, que oferece hospedagem estática e dinâmica de DNS gratuita, e não requer a renovação constante do nome de subdomínio registrado (Atualização: à partir de 2021, é necessário realizar login na página de subdomínios do FreeDNS a cada 6 meses para manter o nome de subdomínio ativo).

Além de DNS dinâmico, o FreeDNS oferece outros serviços, como “Web Forward” (que permite redirecionar o acesso a um endereço para um site específico, similar ao bit.ly) e “Backup DNS” (hospedagem de servidores DNS secundários no FreeDNS).

2. Criação de cadastro no FreeDNS

Caso você ainda não possua uma conta no FreeDNS, você precisará criar um UserID e senha para ter acesso ao painel de administração do FreeDNS e criar/gerenciar subdomínios.

  1. Acesse a página de subdomínios do FreeDNS.
  2. Será exibida a tela de login do FreeDNS (caso você não esteja autenticado). Se você ainda não possui uma conta no FreeDNS, clique no link Setup an account here.
  3. O FreeDNS oferece diversos planos que atendem a necessidade de diferentes usuários. O plano gratuito conta com até 5 subdomínios gratuitos, número mais do que o suficiente para micro e pequenas empresas. Na coluna Starter (plano gratuito), clique em Select.

    freedns.afraid.org_pricing_
  4. Preencha os dados solicitados no formulário, como Nome, Sobrenome, UserID (utilizado para realizar login na plataforma), senha e endereço de e-mail.

    freedns.afraid.org_signup__plan=starter
  5. Após o cadastro, você precisará acessar seu endereço de e-mail e clicar no link de ativação para ativar o seu UserID e senha.

3. Criação de registro DNS no FreeDNS

  1. Acesse a página de subdomínios do FreeDNS.
  2. Será exibida a tela de login do FreeDNS (caso você não esteja autenticado). Se você ainda não possui uma conta no FreeDNS, veja na seção anterior deste post como criar uma conta gratuita na plataforma.
  3. Caso você já possua subdomínios cadastrados na plataforma, será exibida uma tabela com os subdomínios cadastrados e o endereço IP atualmente atribuídos a eles. Para adicionar um novo subdomínio, clique no link Add no canto inferior direito da tabela.

    image
  4. Será exibido o formulário Add a new subdomain, no qual você precisará informar as seguintes informações:
freedns.afraid.org_subdomain_edit.php
  1. Type: Tipo de registro DNS. Normalmente, utilizamos registros DNS do tipo “A”, que associa um nome de host a um endereço IP. Além de registros A, o FreeDNS oferece também registros MX, permitindo a execução de um servidor de e-mail usando um nome de domínio FreeDNS gratuito. Outros tipos de registros, como SRV e CNAME, também são suportados.
  2. Subdomain e Domain: Nome de Domínio Completamente Expressado (FQDN) do registro DNS. Este será o nome DNS que o usuário terá de digitar para acessar o serviço disponibilizado na rede interna através da Internet. Na imagem acima, informamos o nome DNS “example.chickenkiller.com”.
  3. Destination: Podemos informar manualmente o endereço IP externo que os usuários serão redirecionados ao acessar o nome DNS. Ele poderá ser atualizado automaticamente no futuro através de um cliente de atualização de DNS dinâmico.
  4. TTL: Disponível somente para usuários Premium do FreeDNS. Permite definir o tempo de expiração de cache do registro DNS no resolver do cliente. Quando este tempo expira, o cliente realiza uma nova requisição ao servidor DNS para verificar se o registro DNS foi alterado.
  5. Wildcard DNS: Um registro DNS curinga é um registro em uma zona DNS que corresponderá a solicitações de nomes de domínio inexistentes. Um registro DNS curinga é especificado usando um * como o rótulo mais à esquerda de um nome de domínio, por exemplo, *.example.com.

4. Clientes de DNS Dinâmico do FreeDNS

Enquanto para Linux e roteadores (como Mikrotik, Cisco e WRT) existirem clientes gratuitos no guia oficial de clientes de DNS dinâmico do FreeDNS, as alternativas existentes para Windows são em sua maioria datadas e poucas oferecem a possibilidade de executar a atualização de DNS dinâmico como um serviço em segundo-plano. Isso torna obrigatório o logon do usuário no computador para que a atualização de DNS dinâmico ocorra, uma limitação em ambientes que possuem servidores Windows no qual os usuários não possuam interação diária.

Realizei o teste de todas as alternativas gratuitas de DNS dinâmico do guia oficial do FreeDNS, e a única que realmente funcionou para mim foi a FreeDNS Update Service, de Oscar de los Santos. Ainda assim, tive que utilizar uma versão anterior do programa desenvolvido pelo autor (1.3.1) disponível no Internet Web Archive, devido a versão 1.4 não disponibilizar a guia “IP Feeds”, que permite ao FreeDNS Update Service conectar-se a provedores de endereço IP externos (como o MeuIP) para obter o endereço IP externo da nossa rede local. Acredito que o autor tenha cometido um engano e tenha compilado a versão 1.2 do programa ao invés da versão 1.3 no lançamento da versão 1.4.

O Internet Web Archive possui a versão 1.2 do programa em formato de pacote MSI e a versão 1.3.1 como arquivo compactado Zip, que deve ser extraído no diretório de instalação do programa (diretório “C:\Program Files (x86)\NewAgeDesign\FreeDNSUpdateService” por padrão). Porém, mesmo após a instalação da atualização, a atualização dinâmica de DNS não funcionará, devido a lista de provedores de endereço IP externo estar desatualizada. Você precisará remover todos os endereços da lista “IP Feeds”, mantendo somente o endereço “https://www.whatismyip.org/my-ip-address” (sem aspas) na lista. Outra vantagem da atualização para a versão 1.3.1 em relação as versões anteriores do programa (1.2 e 1.4) é a encriptação do nome de usuário e senha dentro do arquivo de configuração após a primeira execução do “Service Configurator” do FreeDNS Update Service.

Com o objetivo de facilitar a vida de quem trabalha com equipes de profissionais de TI, decidi editar o pacote MSI original distribuído por Oscar de los Santos, atualizando os arquivos do pacote da versão 1.2 para 1.3.1. Além disso, alterei o arquivo de configuração padrão, atualizando a lista de provedores de endereço IP externos (“IP Feeds”), mantendo somente o endereço “https://www.whatismyip.org/my-ip-address” na lista. O pacote MSI abaixo pode ser instalado em computadores que já possuem o pacote “FreeDNS Update Service” instalado.

Download

Ao clicar no link de “Download” acima, você será direcionado para a página de download do pacote MSI “FreeDNS Update Service” atualizado para a versão 1.3.1. Você encontra também o script de transformação (.mst) que você pode utilizar para comparar o pacote MSI modificado com o arquivo MSI original distribuído pelo Oscar de los Santos. Documentei passo-a-passo todas as modificações realizadas no pacote MSI no post “Extrair arquivos, inserir arquivos e editar instaladores MSI“.

4.1 Instalação e Configuração do “FreeDNS Update Service” (Windows)

O “FreeDNS Update Service” é executado como um serviço e é compatível com versões atuais do Windows.

Após o download do pacote MSI, execute o arquivo baixado para iniciar a instalação. Durante a instalação, você precisará informar o nome de usuário e senha criado na seção 1 deste post.

insted-customaction-msi

Após a instalação, será criada a subpasta NewAgeDesign no Menu iniciar. Execute o programa Service Configurator para iniciar a configuração do cliente de atualização de DNS dinâmico.

Na tela inicial do programa (guia General Settings), você pode alterar o nome de usuário e senha utilizado para acessar o FreeDNS, o intervalo de atualização dos domínios selecionados na guia Domains (por padrão, os registros são atualizados a cada 10 minutos) e se você deseja criar arquivos de log sob o estado de atualização dos registros DNS. Por padrão, os arquivos de registro são salvos no subdiretório “logs” do “FreeDNS Update Service”. Por exemplo, caso você tenha instalado o programa em “C:\Program Files (x86)\NewAgeDesign\FreeDNSUpdateService” (diretório de instalação padrão), o subdiretório “logs” será criado dentro deste diretório.

image

Na guia Domains, selecione um ou mais domínios associados a sua conta FreeDNS que você deseja atualizar.

image

Por padrão, o Free DNS Update Service atualiza todos os domínios da conta, conforme a imagem acima. Se você deseja atualizar apenas um domínio específico, você precisará desmarcá-lo da lista do Free DNS Update Service Configurator e acessar o rodapé da página “Dynamic DNS” do FreeDNS para desabilitar a interligação de atualização entre domínios. Por padrão, quando um domínio do FreeDNS é atualizado, todos os domínios da conta são atualizados automaticamente. Ao clicar no botão Currently Linked/ON, ele será automaticamente alterado para Currently UN-Linked/OFF, indicando que a interligação de atualização entre domínios será rompida, conforme a imagem abaixo:

config

Na guia Mail, você pode configurar um servidor SMTP para envio de e-mail para notificá-lo no caso de mudanças de endereço IP (Notify IP Changes) ou falha na atualização do registro DNS (Notify error). Caso você utilize o serviço de e-mail do Google (GMail), você precisará criar e usar uma senha de App específica para o FreeDNS (recomendado) ou permitir que aplicativos menos seguros acessem sua conta (não recomendado), devido ao “FreeDNS Update Service” não suportar a verificação em duas etapas da Google.

image

Na guia IP Feeds, você pode configurar uma lista de provedores de endereço IP externo que o serviço utilizará para tentar identificar o endereço IP externo da rede local. Por padrão, o serviço “https://www.whatismyip.org/my-ip-address” é utilizado por padrão (caso você tenha instalado a versão modificada do pacote MSI disponível no MediaFire). Você pode cadastrar outros provedores, caso desejar. Caso o provedor não esteja disponível, ele tentará o próximo provedor da lista, e assim consecutivamente.

Na guia Logs, o programa deveria exibir o log de atualização de registro DNS, informando se a atualização foi realizada com sucesso ou falha. Infelizmente, não consegui fazer esta guia funcionar (nenhum log é exibido), porém, é possível clicar no botão Open logs folder para abrir o diretório que contém os arquivos de log separados por data. Através deles, é possível diagnosticar possíveis problemas na atualização de DNS dinâmico.

image

5. Configuração de Port-Forwarding no Roteador

Após atestar que a atualização de DNS dinâmico está sendo realizada com sucesso, você precisará criar um redirecionamento de porta no roteador para permitir que o tráfego externo acesse um serviço da rede interna. Por exemplo, digamos que você tenha criado um nome DNS para acessar o Serviço da Área de Trabalho Remota. Por padrão, o Windows escuta por requisições na porta 3389. Você precisaria, neste caso, criar uma regra para redirecionar todas as requisições externas para a porta 3389 para o endereço IP interno do seu servidor.

Devido a grande variedade de equipamentos disponíveis no mercado, é praticamente impossível criar um guia que abrange todos os modelos lançados no mercado. Portanto, recomendo que leia o manual do seu modem/roteador ou verifique por tutoriais na Internet que demonstram a configuração de “Port Forwarding” no seu modelo de modem/roteador específico.

6. FAQ

5.1 Mensagem “Referência de objeto não definida para uma instância de um objeto” no arquivo de log/e-mail

A mensagem “Referência de objeto não definida para uma instância de um objeto” é um erro de programação que realmente nunca deve ser exposto a um não-programador. No entanto, sua aparência pode significar que o software está tentando referenciar ou usar outro objeto que deveria, mas ainda não existe. Devido à natureza genérica da mensagem de erro, ela pode ocorrer em várias situações. [1]

Esta mensagem de erro ocorre normalmente devido ao “FreeDNS Update Service” não conseguir acessar o provedor de endereço IP externo (“IP Feed”). Na versão 1.2 e 1.4, o provedor de endereço IP externo (“IP Feed”) é hard-coded no “FreeDNS Update Service” (não é possível alterá-lo através da interface gráfica ou arquivo de configuração). Devido ao provedor de endereço IP externo (“IP Feed”) hard-coded não estar mais disponível (“automation.whatismyip.com”), ele impede que outra sub-rotina seja executada corretamente.

Caso você esteja executando a versão 1.2 ou 1.4 do “FreeDNS Update Service”, recomendo que atualize para a versão 1.3.1 do “FreeDNS Update Service”, disponível na seção 3 deste post, e verifique se o(s) “IP Feeds” cadastrados na guia IP Feeds estão disponíveis.

Conclusão

Além do “FreeDNS Update Service”, o guia oficial de clientes de DNS dinâmico do FreeDNS oferece alternativas para outros sistemas operacionais e roteadores. Na página “Dynamic DNS” do FreeDNS você encontra scripts wget e curl para cada subdomínio que você cadastrou no FreeDNS. Você pode, por exemplo, criar uma tarefa no Cron (Linux) ou Agendador de tarefas (Windows) para realizar a requisição através destes programas e realizar a atualização automática de nome DNS, caso você nenhum programa do guia oficial de clientes de DNS dinâmico do FreeDNS atenda sua necessidade.

Changelog do Free DNS Update Service

Versão 1.3.1.1 (11/08/2020)

  • Mensagem de erro “Referência de objeto não definida como uma instância de um objeto” voltou a aparecer no arquivo de log “error.txt” dentro do diretório de instalação “logs” do Free DNS Update Service. Mensagem relacionada ao antigo provedor de endereço IP externo (“IP Feed”). Realizada alteração do instalador MSI, modificando o valor do parâmetro “IPFeeds” do arquivo de configuração do Free DNS Update Service de “http://meineipadresse.de” para “https://www.whatismyip.org/my-ip-address“.

Versão 1.3.1 (07/05/2020)

  • Atualizado os arquivos do instalador MSI da versão 1.2 para 1.3.1.
  • Alterado provedor de endereço IP externo (“IP Feed”) para “http://meineipadresse.de“.

Referências

  1. Referência de objeto não definida como uma instância de um objeto” no Vault. AutoDesk.

Deixe um comentário

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.