用Cloudflare的v4 API实现动态DNS(DDNS)

in #cn6 years ago

如果你有一个经常变化的公网IP,你可能会需要用DDNS将这个IP绑定在同一个域名上,这样就可以不必每次输入一串IP地址了。我用的DNS服务商Cloudflare并没有提供名为DDNS的服务,但是其API可以实现类似的效果。

<p dir="auto">之前我用的是<a href="https://lifely.today/2015/05/%E7%82%BA-cloudflare-%E8%A8%AD%E5%AE%9A%E5%8B%95%E6%85%8B-dns-ddns/" target="_blank" rel="nofollow noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">这里的方法,不过最近cloudflare更新了<a href="https://api.cloudflare.com/" target="_blank" rel="nofollow noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">第四代API,那个方法已经失效。于是水博文的机会来了。 <p dir="auto">原料: <ol> <li>一个域名,并用Cloudflare管理 <li>一台经常开着的,有计划任务或者cron,可以运行curl的电脑 <li>(可选)如果API地址被屏蔽的话,可能需要可用的代理 <p dir="auto">步骤: <ul> <li>去<a href="https://dash.cloudflare.com/" target="_blank" rel="nofollow noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">https://dash.cloudflare.com/找到你域名的<code>zone ID并新建一个<code>API_KEY。 <li>新建一条子域名的A记录,IP写什么都行。 <li>查询这条记录的<code>RECORD_ID,在终端运行: <pre><code>curl -X GET "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/dns_records" \ -H "X-Auth-Email: <邮箱地址>" \ -H "X-Auth-Key: <API_KEY>" \ -H "Content-Type: application/json" \ -x http://localhost:8087 <p dir="auto">其中 <code>-x是本地代理地址,可选。大概能从返回的一坨json中找到id那一项。 <ul> <li>保存下面的脚本,修改<code><ZONE_ID>,<code><RECORD_ID>,<code>邮箱地址,<code>API_KEY,<code>子域名什么的。如果不需要代理的话删除<code>-x那一行。 <pre><code>#!/bin/sh NEW_IP=`curl -s http://ns1.dnspod.net:6666` CURRENT_IP=`cat /var/tmp/current_ip.txt` if [ "$NEW_IP" = "$CURRENT_IP" ] then echo "No Change in IP Adddress" else curl -X PUT "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/dns_records/<RECORD_ID>" \ -x http://localhost:8087 \ -H "X-Auth-Email: <邮箱地址>" \ -H "X-Auth-Key: <API_KEY>" \ -H "Content-Type: application/json" \ --data '{"type":"A","name":"<子域名地址>","content":"'$NEW_IP'","ttl":1}' echo $NEW_IP > /var/tmp/current_ip.txt fi <ul> <li>接下来让它每两个小时运行一次就好了。 <pre><code># crontab -e */120 * * * * /path/of/your/script.sh <p dir="auto"><del>写字好累(躺
Sort:  

Hi Passing by And Upvoted you :) !
:
“Most people do kiss and tell; most of them just don’t tell many people.” ====> Mokokoma Mokhonoana

img@heyeshuang, 嘻嘻,小可可来给你点赞啦~~~

BTW, @cn-naughty.boy 淘气包,烛光晚餐去哪...脸红中...