cloudflare ddns通过API更新动态IP域名解析
Cloudflare的DDNS功能使用,通过Linux定时任务配合shell脚本,完成动态IP的域名解析。适用于家庭网络公网IP不固定的情况。
创建一个API密钥
登录Cloudflare之后 -> 点击页面右上角的个人中心 -> 进入My Profile -> 进入API token
也可以直接访问链接:https://dash.cloudflare.com/profile/api-tokens
创建一个Token,选择模板Edit zone DNS
点击 提交确认之后,复制token并保存起来. (注意这个Token只会展示这一次,忘记了就只能重新创建一个Token)
编写脚本,验证流程
1 |
|
首先在控制台新增一条对应的域名DNS解析记录,用于后续API动态修改。
解释一下脚本中的几个变量:
- API_TOKEN:就是上面创建的token
- ZONE_ID:在控制台websites列表页面-进入你的域名页面-在右侧可以看到API Zone ID
- RECORD_ID:就是你需要更新的那一条解析记录的ID,可以用下面的API接口查看
1
2
3curl -X GET "https://api.cloudflare.com/client/v4/zones/你的ZONE_ID/dns_records?type=A&name=你的解析域名" \
-H "Authorization: Bearer 你的API_TOKEN" \
-H "Content-Type: application/json"1
2// 返回的响应结果如下,第一个id字段,就是这条域名解析记录的ID
{"result":[{"id":"3995e7cd0ee84056abe3e0c2d191cf62","zone_id":"04dbfb40755d415ba7c2f40f562e357e","zone_name":"dollcode.cn","name":"blog.dollcode.cn","type":"A","content":"114.114.114.114","proxiable":true,"proxied":false,"ttl":120,"settings":{}.............. - RECORD_NAME:填自己的域名就行了
根据实际情况替换变量为自己的,然后保存脚本。命名为cfddns.sh
,然后执行如下命令验证效果
1 | # 赋予可执行权限 |
就可以看到对应的日志信息了!
注册为定时任务
接下来就是注册定时任务,每十分钟执行一次,完成自动动态更新解析
使用 cron 定时执行该脚本。编辑 cron 配置:
1 | crontab -e |
添加如下内容,使其每10分钟执行一次:
1 | */10 * * * * /opt/ddns/cfddns.sh >> /opt/ddns/ddnsupdate.log 2>&1 |
wq保存退出
注意目录替换为实际路径。并检查/opt/ddns/ddnsupdate.log 中的日志输出即可!