DNS dinâmico: Como usar a API da Cloudflare para DDNS

Este texto tem importância apenas para quem deseja fazer seu próprio script ou programa de atualização DDNS para Cloudflare.

Na primeira vez que tentei entender a documentação da API da Cloudflare há um ano eu falhei miseravelmente. Não entendi nada. Na segunda tentativa esta semana eu entendi em minutos. É engraçado como nosso cérebro funciona.

Aqui eu vou descrever apenas as partes necessárias para fazer atualizações DDNS. Vou usar como exemplo o cURL porque aí já aproveito os exemplos da documentação e apesar de ser uma ferramenta popular do Linux você também pode usar o cURL no Windows.  Mas eu recomendo usar o complemento POSTMAN do Chrome inserindo os headers indicados (toda linha precedida por “-H” é um header).

O serviço permite que você cadastre vários domínios, que são referenciados como “zonas”.
Para atualizar um host você primeiro precisa do ID do domínio/zona. Se não sabe o id (ele também aparece na sua conta Cloudflare), primeiro peça uma listagem de zonas:

A resposta é algo assim (este é o exemplo oficial. A resposta hoje é ligeiramente diferente):

Note que o nome de domínio é precedido por um “id”. É isso que você vai usar.

Para obter os registros DNS com o IP atual para um determinado domínio você usa os mesmos headers, mas muda o URL para algo assim:

https://api.cloudflare.com/client/v4/zones/id_do_dominio/dns_records

Exemplo de resposta (eu suprimi vários registros desnecessários para a explicação e editei informação confidencial):

 

Para se limitar a receber o dados de um host específico (é este o comando que finalmente traz o IP configurado para o host):

https://api.cloudflare.com/client/v4/zones/id_do_dominio/dns_records/id_do_host

Exemplo de resposta:

Para atualizar um host (preste atenção aos vários campos que você precisa modificar):

“name” precisa ter o nome completo e correto do host. Por alguma razão se o nome estiver errado e não bater com id_do_host a API acrescenta um novo host com esse nome, em vez de atualizar.

No Postman, escolha RAW, JSON e insira os dados de uma chave à outra.

Exemplo de resposta:

Tenha em mente que os IDs de domínio e host não mudam se você não apagar a definição do host. Então depois que você tem esses IDs só precisa usar dois comandos: o que verifica os dados do host (se quiser saber o IP que está lá) e o PUT que faz a atualização.

Pronto. Esse é o básico necessário da API para atualização DDNS. Queria ter achado algo assim no ano passado.

 

2 comentários
  • Jefferson - 6.543 Comentários

    Fiz diversas expansões e esclarecimentos no texto.

  • Jefferson - 6.543 Comentários

    Se ao usar o Postman para isso você receber uma mensagem de erro dizendo que o Content-Type está errado mas você está vendo que colocou “application/json”, clique em Preview para ver o que o Postman efetivamente vai mandar. Se você ver duas definições de Content-Type, selecione POST e nas opções clique em RAW. Volte para GET e clique em Preview. A definição extra de Content-Type deverá ter sumido.

Deixe um comentário

Você pode usar estas tags HTML

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  

  

  

:) :( ;) O_o B) :lol: :huh: :S :D :-P 8-O :yahoo: :rtfm: :dashhead1: :clapping: more »