J'essaie de configurer le client DNS dynamique sur mon routeur avec le micrologiciel dd-wrt (v24-sp2) afin qu'il change dynamiquement l'adresse IP dans l'un des enregistrements DNS. Malheureusement j'ai rencontré un problème… Voici un exemple de requête de leur configuration ddclient :
https://www.cloudflare.com/api.html?a=DIUP&u=<my_login>&tkn=<my_token>&ip=<my_ip>&hosts=<my_record>
Cela fonctionne si je l'utilise dans le navigateur, mais en dd-wrt j'obtiens cette sortie:
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
L'URL de "Location" fonctionne parfaitement et le paramètre "a" est inclus. Quel est le problème?
router
ddns
cloudflare
romain
la source
la source
Réponses:
Je ne pense pas que vous puissiez le configurer où DD-WRT appelle CloudFlare directement. La façon dont je l'ai configuré est d'avoir DD-WRT appeler un script PHP sur un serveur Web distant, qui détecte ensuite l'adresse IP du client et envoie la demande de mise à jour à CloudFlare via leur API.
Paramètres DD-WRT DDNS
cloudflare_update.php
Au lieu d'utiliser l'authentification de base HTTP, j'utilise simplement une clé aléatoire.
Assurez-vous de créer l'entrée DNS pour le nom de domaine que vous souhaitez mettre à jour sur CloudFlare; le paramètre d'action DIUP ne mettra à jour l'IP que pour une entrée qui existe déjà.
la source
Si vous souhaitez exécuter la mise à jour à partir de votre routeur, il est impossible de contourner le fait que vous avez besoin d'un petit quelque chose en plus au milieu pour convertir votre appel au format CloudFlare (si seulement DNS-O-Matic les ajoutait à leurs services pris en charge ...). Plutôt que d'avoir à héberger vous-même un script intermédiaire, vous pouvez simplement utiliser Google AppEngine (qui est gratuit) pour effectuer cette nouvelle publication pour vous. J'utilise ceci:
https://cloudflare-updater.appspot.com/
D'accord, vous devez toujours appeler autre chose que CloudFlare pour publier la mise à jour, mais au moins vous n'avez pas besoin d'exécuter un hôte supplémentaire ou VPS, etc. pour le faire vous-même. C'est complètement transparent - le seul problème est que vous ne recevez pas d'erreurs, vous devez donc vérifier que cela fonctionne vous-même. Une fois qu'il fonctionne, il devrait simplement fonctionner et fonctionner.
la source
Remarquer que tout cela est obsolète et nécessite maintenant le code api v4 pour fonctionner.
testé au-dessus d'un échec - mauvais utilisateur, réussite, informations xxxx.
revoir cette méthode https://github.com/ScottHelme/CloudFlareDDNS
la source
Géré pour que cela fonctionne en utilisant ceci: https://github.com/dcerisano/Cloudflare-dynamic-dns
Une fois que vous avez configuré votre compte Cloudflare, les informations requises sont faciles à localiser:
Vous avez besoin de: ID de zone
Clé d'autorisation (aka Global api key)
ID A-record pour votre domaine (obtenu en exécutant le script cloudflare-dns-id.sh) J'ai dû couper un peu le script pour le faire fonctionner.
curl -X GET " https://api.cloudflare.com/client/v4/zones/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/dns_records?type=A&name=dynamic " \ -H "X-Auth-Email: [email protected]" \ -H "X-Auth-Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \ -H "Content-Type: application / json"
J'ai stocké les deux scripts dans / jffs pour les rendre exécutables.
En ce qui concerne le côté Cloudflare, j'ai configuré, conformément à ce guide, uniquement les enregistrements de domaine 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- and-a-FritzBox
Chez Cloudflare, vous devez définir les enregistrements suivants:
Type: A | Nom: dynamique | Valeur: «votre IP WAN» ***
Type: CNAME | Nom: «votredomaine.xyz» | Valeur: dynamique. "Votredomaine.xyz"
Type: CNAME | Nom: www | Valeur: "votredomaine.xyz"
J'ai configuré un travail cron pour exécuter cloudflare-ddns.sh toutes les 5 minutes pour vérifier les modifications IP.
Mon routeur DD-WRT met désormais à jour automatiquement Cloudflare chaque fois que l'IP WAN est modifiée ...
La configuration ci-dessus prend environ 10 minutes.
la source