我正在尝试使用dd-wrt(v24-sp2)固件在我的路由器上configurationdynamicDNS客户端,以便在其中一个DNSlogging中dynamic更改IP地址。 不幸的是我遇到了一个问题…这是一个来自他们的ddclientconfiguration的示例请求:
https://www.cloudflare.com/api.html?a=DIUP&u=<my_login>&tkn=<my_token>&ip=<my_ip>&hosts=<my_record>
它工作,如果我在浏览器中使用它,但在dd-wrt我得到这个输出:
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
来自“位置”的URL完美地工作并且包括参数“a”。 有什么问题?
我不认为你可以在DD-WRT直接调用CloudFlare的时候设置它。 我configuration的方式是让DD-WRT在远程Web服务器上调用PHP脚本,然后检测客户端IP,并通过API将更新请求发送到CloudFlare。
DDNS Service: Custom DYNDNS Server: <yourserver.com> Username: <anything> Password: <anything> Host Name: <your domain name to update on cloudflare> URL: /cloudflare_update.php?key=<your secret key>&hostname=
if(empty($_GET['key']) || ($_GET['key'] != "<your secret key>")) die; $hostname = $_GET['hostname']; $ip = $_SERVER['REMOTE_ADDR']; $username = "<[email protected]>"; $api = "<your cloudflare api key>"; $curl = "https://www.cloudflare.com/api_json.html?a=DIUP&hosts=$hostname&u=$username&tkn=$api&ip=$ip"; $ch = curl_init($curl); curl_exec($ch); curl_close($ch);
而不是使用HTTP基本身份validation,我只是使用随机密钥。
确保在CloudFlare上为要更新的域名创buildDNS条目; DIUP操作参数将仅更新已存在条目的IP。
如果你想从你的路由器执行更新,那么你不需要在中间需要一些额外的东西来将你的呼叫转换成CloudFlare格式(如果只有DNS-O-Matic会将它们添加到他们支持的服务…)。 您不必自己托pipe中间脚本,只需使用Google AppEngine(免费)即可为您重新发布内容。 我使用这个:
https://cloudflare-updater.appspot.com/
好的,您仍然需要调用CloudFlare以外的其他设备来发布更新,但至less您不需要运行额外的主机或VPS等来自行完成。 这是完全透明的 – 唯一的问题是你没有得到一个错误返回,所以你需要检查它自己的工作。 一旦它正在工作,它应该只是运行和运行。