二、準(zhǔn)備工作:Cloudflare 配置與 API 權(quán)限管理

2.1 注冊 Cloudflare 并添加域名

  1. 注冊 Cloudflare 賬號
  2. 添加已有域名(例如 yourdomain.com
  3. 設(shè)置 NS 記錄至 Cloudflare 提供的解析服務(wù)器
  4. 等待 DNS 生效后,即可使用 API 管理 DNS 記錄

2.2 獲取 API Token(推薦方式)

前往 API Tokens 頁面:

> ?? 避免使用全局 API Key,限制權(quán)限更安全


三、Cloudflare DNS API 核心概念

使用 DDNS 前,我們需要了解 3 個基本參數(shù):

參數(shù)名 說明
Zone ID Cloudflare 分配給域名的唯一標(biāo)識
Record ID 子域名(A 記錄)在 Cloudflare 中的 ID
API Token 授權(quán)調(diào)用 DNS 接口的密鑰

你可以通過如下 API 獲取這些信息:

獲取 Zone ID

curl -X GET "https://api.cloudflare.com/client/v4/zones?name=yourdomain.com" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json"

獲取 DNS Record ID

curl -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records?type=A&name=sub.yourdomain.com" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json"

四、實現(xiàn)動態(tài)更新邏輯(Bash 腳本)

以下腳本實現(xiàn):

#!/bin/bash

CF_API_TOKEN="你的API密鑰"
ZONE_ID="你的Zone ID"
RECORD_ID="你的DNS記錄ID"
RECORD_NAME="sub.yourdomain.com"

# 獲取當(dāng)前公網(wǎng) IP
CURRENT_IP=$(curl -s https://api.ipify.org)

# 獲取現(xiàn)有 A 記錄 IP
DNS_IP=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" | jq -r '.result.content')

# 若 IP 變化,更新記錄
if [ "$CURRENT_IP" != "$DNS_IP" ]; then
  echo "IP changed: $DNS_IP → $CURRENT_IP. Updating..."
  curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \
    -H "Authorization: Bearer $CF_API_TOKEN" \
    -H "Content-Type: application/json" \
    --data "{\"type\":\"A\",\"name\":\"$RECORD_NAME\",\"content\":\"$CURRENT_IP\",\"ttl\":120}"
else
  echo "IP unchanged: $CURRENT_IP"
fi

> ? 支持設(shè)置為 cron 定時任務(wù),每 5 分鐘運行一次,持續(xù)保持域名可達(dá)


五、Python 實現(xiàn) DDNS 更新

Python 實現(xiàn)更加靈活,適合日志處理、異常重試、Webhook 推送等場景:

import requests
import os

API_TOKEN = os.getenv("CF_API_TOKEN")
ZONE_ID = os.getenv("CF_ZONE_ID")
RECORD_ID = os.getenv("CF_RECORD_ID")
RECORD_NAME = "sub.yourdomain.com"

def get_public_ip():
    return requests.get("https://api.ipify.org").text.strip()

def get_dns_ip():
    url = f"https://api.cloudflare.com/client/v4/zones/{ZONE_ID}/dns_records/{RECORD_ID}"
    headers = {"Authorization": f"Bearer {API_TOKEN}"}
    res = requests.get(url, headers=headers).json()
    return res["result"]["content"]

def update_dns(ip):
    url = f"https://api.cloudflare.com/client/v4/zones/{ZONE_ID}/dns_records/{RECORD_ID}"
    headers = {"Authorization": f"Bearer {API_TOKEN}", "Content-Type": "application/json"}
    data = {
        "type": "A",
        "name": RECORD_NAME,
        "content": ip,
        "ttl": 120
    }
    res = requests.put(url, headers=headers, json=data)
    return res.json()

if __name__ == "__main__":
    current_ip = get_public_ip()
    dns_ip = get_dns_ip()
    if current_ip != dns_ip:
        print(f"IP changed: {dns_ip} → {current_ip}")
        update_dns(current_ip)
    else:
        print("IP unchanged.")

六、部署自動化更新任務(wù)

6.1 使用 cron 定時執(zhí)行腳本(Linux/Mac)

crontab -e

添加如下條目:

*/5 * * * * /home/user/ddns_update.sh > > /var/log/ddns.log 2 > &1

6.2 Docker 容器化部署(推薦)

可將 DDNS 腳本打包為 Docker 鏡像,部署在樹莓派、NAS、路由器、云主機等環(huán)境中:

FROM python:3.10
COPY ddns.py /app/
WORKDIR /app
RUN pip install requests
CMD ["python", "ddns.py"]

在 Uptime Kuma、OpenWRT、Home Assistant 中均有集成方式


七、常見問題與排查指南

問題 排查建議
A 記錄未更新 確保 API Token 權(quán)限為 Zone.DNS Edit
Record ID 獲取失敗 檢查 type=Aname=sub.domain.com 參數(shù)是否正確
IP 檢測始終為空或錯誤 更換 IP 獲取接口,如 https://ifconfig.me
更新太頻繁被限流(429) 設(shè)置合適的運行間隔(建議 ≥ 300 秒)
DNS 更新但訪問失敗 檢查 ISP 是否封鎖 80/443 端口,或設(shè)置端口轉(zhuǎn)發(fā)

八、拓展與增強方案


九、總結(jié)與建議

通過 Cloudflare DNS API,我們可以輕松構(gòu)建一個 高可用、零費用、可定制的 DDNS 動態(tài)域名解析服務(wù)。適用于家庭寬帶、辦公服務(wù)器、自建站點、IoT 設(shè)備遠(yuǎn)程管理等場景。

上一篇:

如何通過 SerpAPI 獲取結(jié)構(gòu)化搜索數(shù)據(jù)

下一篇:

如何通過 Cloudflare DNS API 實現(xiàn)自動化域名管理
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊

多API并行試用

數(shù)據(jù)驅(qū)動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費