Estoy tratando de configurar el cliente DNS dinámico en mi enrutador con el firmware dd-wrt (v24-sp2) para que cambie dinámicamente la dirección IP en uno de los registros DNS. Desafortunadamente, encontré un problema ... Aquí hay una solicitud de ejemplo de su configuración de ddclient :
https://www.cloudflare.com/api.html?a=DIUP&u=<my_login>&tkn=<my_token>&ip=<my_ip>&hosts=<my_record>
Funciona si lo uso en el navegador, pero en dd-wrt obtengo esta salida:
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
La URL de "Ubicación" funciona perfectamente y el parámetro "a" está incluido. ¿Cuál es el problema?
router
ddns
cloudflare
romano
fuente
fuente
Respuestas:
No creo que pueda configurarlo donde DD-WRT llama a CloudFlare directamente. La forma en que lo configuré es hacer que DD-WRT llame a un script PHP en un servidor web remoto, que luego detecta la IP del cliente y envía la solicitud de actualización a CloudFlare a través de su API.
Configuración DDNS DD-WRT
cloudflare_update.php
En lugar de usar la autenticación básica HTTP, solo uso una clave aleatoria.
Asegúrese de crear la entrada DNS para el nombre de dominio que desea actualizar en CloudFlare; el parámetro de acción DIUP solo actualizará la IP para una entrada que ya existe.
fuente
Si desea ejecutar la actualización desde su enrutador, entonces no hay forma de evitar el hecho de que necesita un 'algo' extra en el medio para convertir su llamada al formato CloudFlare (si solo DNS-O-Matic los agregaría a sus servicios soportados ...). En lugar de tener que alojar un script intermedio usted mismo, simplemente puede usar Google AppEngine (que es gratuito) para hacer esta nueva publicación por usted. Yo uso esto:
https://cloudflare-updater.appspot.com/
De acuerdo, todavía tiene que llamar a algo más que CloudFlare para emitir la actualización, pero al menos no necesita ejecutar un host adicional o VPS, etc. para hacerlo usted mismo. Es completamente transparente: el único problema es que no se devuelven los errores, por lo que debe verificar que funcione usted mismo. Una vez que está funcionando, simplemente debe ejecutarse y ejecutarse.
fuente
Notar que todo esto está desactualizado y ahora requiere el código v4 api para funcionar.
probado arriba y falla: mal usuario, pase, información xxxx.
revisando este método https://github.com/ScottHelme/CloudFlareDDNS
fuente
Logramos que esto funcione usando esto: https://github.com/dcerisano/Cloudflare-dynamic-dns
Una vez que haya configurado su cuenta de Cloudflare, la información requerida es fácil de localizar:
Necesitas: ID de zona
Clave de autorización (también conocida como clave API global)
ID de registro A para su dominio (esto se obtiene ejecutando el script cloudflare-dns-id.sh) Tuve que recortar un poco el script para que funcione.
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 "Tipo de contenido: aplicación / json"
Almacené ambos scripts en / jffs haciéndolos ejecutables.
En términos del lado de Cloudflare, configuré según esta guía solo para los registros de dominio de 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- y-a-FritzBox
En Cloudflare debe establecer los siguientes registros:
Tipo: A | Nombre: dinámico | Valor: "su IP WAN" ***
Tipo: CNAME | Nombre: "tudominio.xyz" | Valor: dinámico ".dominio.xyz"
Tipo: CNAME | Nombre: www | Valor: "tudominio.xyz"
Configuré un trabajo cron para ejecutar cloudflare-ddns.sh cada 5 minutos para verificar los cambios de IP.
Mi enrutador DD-WRT ahora actualiza automáticamente Cloudflare cada vez que se cambia la IP de WAN ...
Lo anterior tarda unos 10 minutos en configurarse.
fuente