[点晴永久免费OA]如何将本地动态公网IP实时更新到Cloudflare的DNS绑定的IP记录中?
|
admin
2026年6月5日 15:29
本文热度 35
|
以下是专为实现 动态公网IP实时更新到Cloudflare DNS记录 的简洁配置指南,基于官方API和最佳实践整理:
一、核心配置参数
Cloudflare API 密钥
- 权限:
Zone.DNS:Edit(仅需DNS编辑权限,非全局密钥) - 获取路径:Cloudflare控制台 →
个人资料 → API令牌 → 创建令牌(选择“编辑区域DNS”模板)。
域名信息
- Zone ID:域名概览页右侧获取(32位字符串)
- Record ID:通过API接口或控制台F12开发者工具获取(更新DNS记录时抓包)。
目标域名
- 示例:
abc.com 或子域名 ddns.abc.com(需提前在Cloudflare创建A记录)。
二、实现方法(任选其一)
方法1:直接调用Cloudflare API(HTTP请求)
请求示例(更新A记录) :
PUT https://api.cloudflare.com/client/v4/zones/{Zone_ID}/dns_records/{Record_ID}
Headers:
Authorization: Bearer {API_Token}
Content-Type: application/json
Body:
{
"type": "A",
"name": "abc.com",
"content": "{当前公网IP}",
"ttl": 120,
"proxied": false // 是否启用CDN代理
}
- 公网IP获取:通过
http://ipv4.icanhazip.com 或 http://api.ipify.org。
方法2:使用脚本自动化(推荐)
Bash脚本示例(保存为 cf-ddns.sh):
#!/bin/bash
API_TOKEN="YOUR_API_TOKEN"
ZONE_ID="YOUR_ZONE_ID"
RECORD_ID="YOUR_RECORD_ID"
RECORD_NAME="ddns.abc.com"
CURRENT_IP=$(curl -s http://ipv4.icanhazip.com)
# 更新DNS记录
curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \
-H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" \
--data "{\"type\":\"A\",\"name\":\"$RECORD_NAME\",\"content\":\"$CURRENT_IP\",\"ttl\":120}"
定时执行(每5分钟检测一次):
crontab -e
添加:*/5 * * * * /path/to/cf-ddns.sh >> /var/log/ddns.log 2>&1
方法3:Windows专用工具
三、关键注意事项
IP变化检测
- 脚本需先比较当前IP与DNS记录IP,避免频繁调用API(Cloudflare限流1200次/5分钟)。
安全性
- API令牌勿硬编码在脚本中,建议通过环境变量或加密存储。
日志记录
- 保存执行日志(如
/var/log/ddns.log),便于排查失败原因。
四、验证是否成功
- 命令行:
dig ddns.abc.com 或 nslookup ddns.abc.com 检查解析IP是否更新。 - Cloudflare控制台:DNS记录中的IP应与当前公网IP一致。
按需选择上述方法,10分钟内即可完成配置。
详情参见教程:
群晖NAS机设置任务计划通过API更新Cloudflare DDNS动态IP域名解析[
11]
http://39204.oa22.cn
该文章在 2026/6/5 15:58:52 编辑过