
在家用服务器或小型网络环境中,IPv6 动态 DNS(DDNS)是一项非常实用的功能,尤其是当你没有固定公网 IP 地址时。本文将引导你通过 Cloudflare API 在 Ubuntu 24.04 系统上配置一个 IPv6 动态 DDNS 更新脚本,并自动定时更新。
1. 获取 Cloudflare 信息
首先,你需要在 Cloudflare 上获取相关的配置信息,包括:
- Zone ID:你的 Cloudflare 区域 ID
- API Token:一个有效的 API Token,用于认证和操作 DNS 记录
这两个信息可以通过 Cloudflare 控制台的 API 设置页面获取。请注意,这些信息属于敏感数据,请确保妥善保存,避免泄露。
2. 安装所需依赖
在 Ubuntu 24.04 系统中,我们需要安装一些依赖工具来与 Cloudflare API 交互。使用以下命令进行安装:
sudo apt update
sudo apt install curl jq -y- curl:用于获取公网 IPv6 地址以及与 Cloudflare API 进行交互。
- jq:用于解析 Cloudflare 返回的 JSON 数据。
3. 创建 DDNS 更新脚本
接下来,我们将创建一个脚本文件 /usr/local/bin/cf-ddns.sh,该脚本用于获取公网 IPv6 地址并更新 Cloudflare 上的 DNS 记录。
使用以下命令创建并编辑脚本文件:
sudo nano /usr/local/bin/cf-ddns.sh将以下内容粘贴到脚本中:
#!/bin/bash
# 配置区域
ZONE_ID="YOUR_ZONE_ID" # 替换为你的 Cloudflare Zone ID
API_TOKEN="YOUR_API_TOKEN" # 替换为你的 Cloudflare API Token
RECORD_NAME="soarfree.top" # 替换为你的域名
# 获取本机公网 IPv6
IP=$(curl -6 -s https://ifconfig.me)
if [[ -z "$IP" ]]; then
echo "未获取到公网 IPv6"
exit 1
fi
# 获取 DNS 记录 ID
RECORD_ID=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records?type=AAAA&name=$RECORD_NAME" \
-H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" | jq -r '.result[0].id')
# 如果记录不存在,就新建
if [[ "$RECORD_ID" == "null" ]]; then
echo "未找到 AAAA 记录,新建..."
curl -s -X POST "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records" \
-H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" \
--data "{\"type\":\"AAAA\",\"name\":\"$RECORD_NAME\",\"content\":\"$IP\",\"ttl\":120,\"proxied\":false}"
else
echo "更新 AAAA 记录..."
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\":\"AAAA\",\"name\":\"$RECORD_NAME\",\"content\":\"$IP\",\"ttl\":120,\"proxied\":false}"
fi需要替换的部分:
- ZONE\_ID:替换为你在 Cloudflare 控制台中找到的 Zone ID。
- API\_TOKEN:替换为你在 Cloudflare 控制台中生成的 API Token。
- RECORD\_NAME:替换为你实际使用的域名(如
soarfree.top),确保该域名已经在 Cloudflare 上设置。
4. 设置脚本执行权限
为了让脚本能够执行,我们需要设置执行权限:
sudo chmod +x /usr/local/bin/cf-ddns.sh5. 手动测试
现在,你可以手动运行脚本进行测试,确保其正常工作:
/usr/local/bin/cf-ddns.sh运行后,登录 Cloudflare 控制台,进入 DNS 页面,检查 soarfree.top 是否已更新为当前的公网 IPv6 地址。
6. 配置定时任务
为了保持 IPv6 地址的动态更新,我们可以设置一个定时任务,每 5 分钟执行一次脚本。
编辑系统的 crontab 文件:
sudo crontab -e在文件的末尾添加以下行:
*/5 * * * * /usr/local/bin/cf-ddns.sh >/dev/null 2>&1这行命令将每 5 分钟自动执行一次 DDNS 更新脚本。
✅ 验证
你可以在任何设备上运行以下命令,检查 DNS 是否成功更新:
dig AAAA soarfree.top +short如果一切正常,你应该能解析到家里服务器的公网 IPv6 地址。
⚡ 补充说明
- 新增子域名:如果你想为新子域名(如
nas.soarfree.top)设置 DDNS,只需要在 Cloudflare 控制台中为子域名添加一个 CNAME 记录,指向主域名soarfree.top。这样,主域名更新时,子域名也会跟随更新。 - Nginx 配置:Nginx 根据
server_name区分域名,无需修改脚本即可支持多个子域名。
通过以上步骤,你已经成功在 Ubuntu 24.04 上配置了 IPv6 动态 DNS 更新服务,并使其与 Cloudflare 完美结合。
评论0
暂时没有评论