孙亮亮
返回 家庭网络

家庭网络

家庭网络动态域名解析 DDNS 实战:用 Cloudflare/DNSPod API 自动同步公网 IP 与 IPv6 地址

2026年11月6日

用 Cloudflare/DNSPod API 编写动态解析脚本,让家用服务域名随 IP 自动更新。

DDNS动态域名CloudflareDNSPod家庭网络

家庭网络动态域名解析 DDNS 实战:用 Cloudflare/DNSPod API 自动同步公网 IP 与 IPv6 地址

摘要:家庭宽带的公网 IPv4 每隔几天就会变一次,IPv6 前缀更是随重拨刷新。本文手把手教你用 Cloudflare 与 DNSPod 的官方 API 编写动态解析脚本,让家里的 NAS、摄像头和管理后台始终有一个稳定可达的域名。

一、为什么家庭宽带离不开 DDNS

绝大多数家庭宽带分配的是动态公网 IP:电信/联通的 IPv4 通常在 24–72 小时内重拨一次,地址便会被回收重分;即便开通了 IPv6,运营商下发的 PD(前缀委托)也会随会话刷新,导致设备的 AAAA 记录失效。如果你用 frp、IPv6 直连或反向代理把内网服务暴露到公网,IP 一变,域名就打不开了。

动态域名解析(DDNS)的核心思路是:让家里的一台常驻设备周期性地把"当前公网地址"推送给域名服务商,服务商再更新 DNS 记录。相比 frp 隧道,DDNS 不占用中转带宽,访问延迟更低;相比纯 IPv6 直连,它解决了"地址会变"的根本问题。

二、方案选型:Cloudflare 还是 DNSPod

  • Cloudflare:免费、API 完善、支持 IPv4(A) 与 IPv6(AAAA) 同域名双栈,且自带 CDN/SSL,适合想顺手做 HTTPS 和防护的用户。缺点是国内解析速度一般。
  • DNSPod(腾讯云):国内解析快、延迟低,对腾讯云服务器和微信生态友好,适合主要面向国内访客的场景。

本文两个都给,你按域名所在平台二选一即可。关键前提:域名要已托管到对应平台(Cloudflare 改 NS、DNSPod 在腾讯云解析),并提前建好一条主机记录(如 home.example.com)留作更新目标。

三、实战一:Cloudflare 自动更新脚本

先在 Cloudflare 后台「My Profile → API Tokens」创建一个仅含 Zone:DNS:Edit 权限的令牌,记下 CF_TOKEN;再拿到区域 ID CF_ZONE_ID 与记录 ID CF_RECORD_ID(调用 Zone DNS Records 列表接口可见)。

#!/usr/bin/env bash
# cloudflare_ddns.sh —— 同时刷新 A 与 AAAA
CF_TOKEN="你的API令牌"
CF_ZONE_ID="你的区域ID"
CF_RECORD_NAME="home.example.com"
IP_V4=$(curl -s https://api.ipify.org)
IP_V6=$(curl -s https://api64.ipify.org)

update() {
  local type=$1 rec=$2 ip=$3
  curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records/$rec" \
    -H "Authorization: Bearer $CF_TOKEN" -H "Content-Type: application/json" \
    --data "{\"type\":\"$type\",\"name\":\"$CF_RECORD_NAME\",\"content\":\"$ip\",\"ttl\":60,\"proxied\":false}"
}
# rec_v4 / rec_v6 分别为 A / AAAA 记录 ID
update A "$REC_V4" "$IP_V4"
update AAAA "$REC_V6" "$IP_V6"

注意 proxied:false:穿透回家要走真实 IP,不能开启橙色云代理,否则流量被 CF 挡在门外。

四、实战二:DNSPod(腾讯云)动态解析

DNSPod 使用 Token(SecretId+SecretKey)调用 Record.Modify 接口。下面用官方 tccli 思路简化:

#!/usr/bin/env bash
# dnspod_ddns.sh
DOMAIN="example.com"
SUB="home"
REC_ID="12345678"   # 记录ID
NEW_IP=$(curl -s https://api.ipify.org)
tccli dnspod RecordModify --Domain "$DOMAIN" --SubDomain "$SUB" \
  --RecordId "$REC_ID" --RecordType "A" --RecordLine "默认" --Value "$NEW_IP"

若不想装 tccli,也可用 curl 直接 POST 到 dnspod api v3 端点,按文档拼 Signature 签名。

五、在 OpenWrt 上定时执行与自愈

把脚本放到软路由 /usr/bin/,赋予执行权限,再用 crontab 每 5 分钟跑一次:

*/5 * * * * /usr/bin/cloudflare_ddns.sh >> /var/log/ddns.log 2>&1

进阶做法:监听 WAN 口 ifup 事件(OpenWrt 的 hotplug),重拨一拿到新 IP 立刻更新,不必死等 5 分钟。同时在脚本里加"IP 未发生变更则跳过请求"的判断,避免无谓地刷 API 触发限流。

六、常见坑与排查清单

  1. IPv6 前缀半夜变:光猫或路由器重拨会让整段 /64 失效,务必更新 AAAA,而不能只管 A 记录。
  2. API 令牌权限过大/过小:Cloudflare 令牌只给 DNS:Edit,DNSPod 用子账号密钥,别用全局 Key。
  3. TTL 设太高:建议 60–300 秒,否则旧 IP 缓存迟迟不刷新。
  4. HTTPS 证书:穿透回家后用 Let's Encrypt 签证书,CF 上把记录设为 proxied:false 否则证书校验失败。
  5. 双栈不一致:部分网络 IPv4 有公网、IPv6 无,脚本要做好单栈降级,别因取不到 v6 而整段报错。

小结

DDNS 是家庭网络对外暴露服务的地基:一条稳定域名 + 自动同步脚本,配合 IPv6 或端口映射,就能让 NAS、监控、后台随时可达。优先选自己域名所在的平台,脚本务必加"变更才更新"与"重拨即触发"两道保险,再配上短 TTL 与正确权限的 API 令牌,基本可以做到无感切换、永不失联。

本模块其他文章

家庭网络 IPv6 安全加固实战:SLAAC 隐私扩展、RA Guard 与防火墙入站防护家庭网络 802.1X 企业级无线认证实战:OpenWrt + FreeRADIUS 给访客 IoT 办公做 WPA3-Enterprise 隔离接入家庭网络 DHCP 与静态地址规划实战:用 dnsmasq 做地址池管理、按 MAC 固定分配与 DNS 联动家庭网络 mDNS 与 SSDP 跨 VLAN 透传实战:让 AirPlay、HomeKit、Chromecast 在隔离子网间互通家庭网络内网穿透实战:用 frp 自建隧道把 NAS、摄像头与内网站点安全暴露到公网家庭网络故障排查实战:用 ping、traceroute 与 mtr 定位断网卡顿,tcpdump 抓包锁定 DNS 污染家庭网络智能 DNS 分流实战:用 mosdns 实现国内外域名解析加速与 DoH 防污染家庭网络 Wake-on-LAN 远程开机实战:BIOS 设置、魔术包与跨 VLAN 唤醒转发家庭网络流量监控与异常排查实战:用 vnStat + ntopng 摸清每台设备的带宽占用家庭 Wi-Fi 7 落地实测:MLO 多链路聚合、320MHz 频宽与终端兼容性避坑家庭软路由选购与部署实战:x86 迷你主机装 OpenWrt、网口直通与功耗控制家庭网络双线负载均衡与故障切换实战:OpenWrt MWAN3 配置两条宽带叠加与智能分流家庭 VPN 远程安全接入实战:WireGuard 部署、客户端配置与智能分流家庭宽带 QoS 与 SQM 抗缓冲膨胀实战:用 OpenWrt CAKE 解决视频会议卡顿与游戏延迟家庭网络 VLAN 划分实战:用 OpenWrt 把 IoT、监控、访客与办公网络隔离家庭 Wi-Fi 无缝漫游实战:802.11k/v/r 快速切换与 AP 布点优化家庭 DNS 优化与去广告实战:AdGuard Home 旁路由部署与缓存加速家用 2.5G 内网实战升级:从千兆瓶颈到 NAS 直连提速的完整落地家庭网络 IPv6 公网访问实战:光猫桥接、路由器前缀下发与内网服务安全暴露家庭 Wi-Fi 卡顿怎么查:信道、漫游与 iperf3 实测定位用 AdGuard Home 在 NAS 自建全家去广告 DNS:部署、规则与排错Mesh 组网实践:让全屋 WiFi 没有死角IoT VLAN 隔离:把摄像头关进"笼子"里家庭网络拓扑:从光猫到全屋覆盖的一次落地
家庭网络动态域名解析 DDNS 实战:用 Cloudflare/DNSPod API 自动同步公网 IP 与 IPv6 地址 · 孙亮亮