Estou tentando configurar o cliente DNS dinâmico no meu roteador com firmware dd-wrt (v24-sp2), para que ele altere dinamicamente o endereço IP em um dos registros DNS. Infelizmente, encontrei um problema ... Aqui está um exemplo de solicitação da configuração do ddclient :
https://www.cloudflare.com/api.html?a=DIUP&u=<my_login>&tkn=<my_token>&ip=<my_ip>&hosts=<my_record>
Funciona se eu usá-lo no navegador, mas no dd-wrt recebo esta saída:
Tue Jan 24 00:36:47 2012: INADYN: Started 'INADYN Advanced version 1.96-ADV' - dynamic DNS updater.
Tue Jan 24 00:36:47 2012: I:INADYN: IP address for alias '<my_record>' needs update to '<my_ip>'
Tue Jan 24 00:36:48 2012: W:INADYN: Error validating DYNDNS svr answer. Check usr,pass,hostname! (HTTP/1.1 303 See Other
Server: cloudflare-nginx
Date: Mon, 23 Jan 2012 14:36:48 GMT
Content-Type: text/plain
Connection: close
Expires: Sun, 25 Jan 1981 05:00:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: https://www.cloudflare.com/api.html?a=DIUP&u=<my_login>&tkn=<my_token>&ip=<my_ip>&hosts=<my_record>
Vary: Accept-Encoding
Set-Cookie: __cfduid=<id>; expires=Mon, 23-Dec-2019 23:50:00 GMT; path=/; domain=.cloudflare.com
Set-Cookie: __cfduid=<id>; expires=Mon, 23-Dec-2019 23:50:00 GMT; path=/; domain=.www.cloudflare.com
You must include an `a' paramiter, with a value of DIUP|wl|chl|nul|ban|comm_news|devmode|sec_lvl|ipv46|ob|cache_lvl|fpurge_ts|async|pre_purge|minify|stats|direct|zone_check|zone_ips|zone_errors|zone_agg|zone_search|zone_time|zone_grab|app|rec_se
O URL de "Localização" funciona perfeitamente e o parâmetro "a" está incluído. Qual é o problema?
router
ddns
cloudflare
romano
fonte
fonte
Respostas:
Eu não acho que você pode configurá-lo onde o DD-WRT chama o CloudFlare diretamente. A maneira como eu o configurei é fazer com que o DD-WRT chame um script PHP em um servidor Web remoto, que detecta o IP do cliente e envia a solicitação de atualização para o CloudFlare por meio de sua API.
Configurações DD-WRT DDNS
cloudflare_update.php
Em vez de usar a autenticação básica HTTP, apenas uso uma chave aleatória.
Certifique-se de criar a entrada DNS para o nome de domínio que você deseja atualizar no CloudFlare; o parâmetro de ação DIUP atualizará apenas o IP para uma entrada que já exista.
fonte
Se você deseja executar a atualização a partir do seu roteador, não há como evitar o fato de que você precisa de um 'algo' extra no meio para converter sua chamada no formato CloudFlare (se apenas o DNS-O-Matic os adicionasse ao serviços suportados ...). Em vez de ter que hospedar um script intermediário, você pode usar o Google AppEngine (gratuito) para fazer essa postagem novamente. Eu uso isso:
https://cloudflare-updater.appspot.com/
Ok, você ainda precisa chamar algo diferente do CloudFlare para emitir a atualização, mas pelo menos não precisa executar um host extra ou VPS etc. para fazer isso sozinho. É completamente transparente - o único problema é que você não recebe erros, então você precisa verificar se está funcionando. Uma vez que está funcionando, ele deve apenas rodar e rodar.
fonte
Perceber que isso está desatualizado e agora exige que o código da API v4 funcione.
testado acima de uma falha - mau usuário, aprovação, informações xxxx.
revisando esse método https://github.com/ScottHelme/CloudFlareDDNS
fonte
Conseguiu fazer isso funcionar usando: https://github.com/dcerisano/Cloudflare-dynamic-dns
Depois de configurar sua conta do Cloudflare, é fácil localizar as informações necessárias:
Você precisa: ID da zona
Chave de autorização (também conhecida como chave API global)
Uma identificação de registro A para o seu domínio (isso é obtido executando o script cloudflare-dns-id.sh). Eu tive que aparar um pouco o script para fazê-lo funcionar.
curl -X GET " https://api.cloudflare.com/client/v4/zones/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/dns_records?type=A&name=dynamic " \ -H "X-Auth-Email: [email protected]" \ -H "Chave de autenticação X: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \ -H "Tipo de conteúdo: application / json"
Armazenei os dois scripts em / jffs, tornando-os executáveis.
Em termos de aspectos do Cloudflare, configurei de acordo com este guia apenas os registros de domínio do Cloudflare:
https://support.opendns.com/hc/en-us/community/posts/115000937008-How-to-set-up-DNS-O-MATIC-for-Cloudflare-and-the-other-way-around- e-a-FritzBox
No Cloudflare, você deve definir os seguintes registros:
Tipo: A | Nome: dinâmico | Valor: "seu IP da WAN" ***
Tipo: CNAME | Nome: "seudominio.xyz" | Valor: dinâmico. ”Seudominio.xyz”
Tipo: CNAME | Nome: www | Valor: "seudominio.xyz"
Eu configurei um trabalho cron para executar cloudflare-ddns.sh a cada 5 minutos para verificar alterações de IP.
Meu roteador DD-WRT agora atualiza automaticamente o Cloudflare sempre que o IP da WAN é alterado ...
O procedimento acima leva cerca de 10 minutos para ser configurado.
fonte