Something here

Atualizar automaticamente seu DNS CloudFlare no Linux

Jul 22, 2015 | Tags: , | Categoria: Linux

Ter ip dinâmico sempre foi difícil, se você quiser criar um site ou um servidor de jogos, antigamente a gente usava o no-ip, era bom, fácil, porém com o passar dos anos essa ferramenta acabou prejudicando a praticidade dos usuários free, agora se não me engano no no-ip requer que você reative o seu domínio todo mês, então você tem que ir todo mês lá reativar o seu domínio para não ter o serviço cancelado, mas agora com a cloudflare tem uma maneira muito mais fácil.

1. Script para o rec_id, que é o id do seu subdominio do qual você queira atualizar

cloudflaregetrecid.sh

#!/bin/sh
cfkey=SUA_API_KEY_AQUI
cfuser=SEU_EMAIL_AQUI
domain=SEU_DOMINIO_AQUI

curl https://www.cloudflare.com/api_json.html \
  -d a=rec_load_all \
  -d tkn=$cfkey \
  -d email=$cfuser \
  -d z=$domain > $HOME/.cf-dns.txt

 

2. Script para atualizar o IP do seu DNS na CloudFlare

cloudflaredns.sh

#!/bin/sh
cfkey=CloudFlareAPI_KEY
cfuser=SEU_EMAIL
cfhost=HOST_AQUI (seu subdominio a ser atualizado)
cfrecid=API_REC_ID_HERE (execute o arquivo cloudflaregetrecid.sh para conseguir o rec_id)
domain=DOMINIO_AQUI

log=$HOME/.cf-dns-update.log
date +"%F %T" >> $log

WAN_IP='curl -s http://icanhazip.com'
if [ -f $HOME/.wan_ip-cf.txt ]; then
        OLD_WAN_IP='cat $HOME/.wan_ip-cf.txt'
else
        echo "No file, need IP" >> $log
        OLD_WAN_IP=""
fi

if [ "$WAN_IP" = "$OLD_WAN_IP" ]; then
        echo  "IP Unchanged" >> $log
else
        echo $WAN_IP > $HOME/.wan_ip-cf.txt
        echo "Updating DNS to $WAN_IP" >> $log
         curl https://www.cloudflare.com/api_json.html \
          -d a=rec_edit \
          -d tkn=$cfkey \
          -d email=$cfuser \
          -d z=$domain \
          -d id=$cfrecid \
          -d type=A \
          -d name=$cfhost \
          -d ttl=1 \
          -d "content=$WAN_IP" >> $log
fi

3. Agora você pode programar o Cron

Para cada 5 minutos:

*/5 * * * * /cloudflaredns.sh