Debian 12 VPS自动DNS解析:Cloudflare API实战指南
文章分类:技术文档 /
想象一下,你有一台VPS服务器,每次公网IP变动都得登录Cloudflare后台手动修改DNS记录——就像每次出门都要重输导航终点,费时又容易出错。但在Debian 12系统里,通过调用Cloudflare API,能让这个过程完全自动化,从此告别重复操作,效率提升不止一倍🚀。
前置条件与工具准备
开始前需完成三项基础工作。首先,确保已注册Cloudflare账户且域名已托管至该平台,这是调用API的前提。其次,获取Cloudflare API令牌(类似系统访问钥匙),登录账户后进入“我的账户”-“API令牌”页面,创建一个具备“DNS:Edit”权限的令牌,注意妥善保管,泄露可能导致域名解析被篡改。最后,在Debian 12中安装两个关键工具:`curl`用于发送HTTP请求,`jq`用于解析JSON数据。执行以下命令完成安装:
sudo apt update
sudo apt install curl jq -y
编写自动更新脚本
核心步骤是编写一个能调用Cloudflare API的脚本。新建文件`cloudflare_dns_update.sh`,用文本编辑器打开后输入以下内容:
#!/bin/bash
# Cloudflare配置(需替换为实际值)
API_TOKEN="你的API令牌"
ZONE_ID="你的域名区域ID" # 可在Cloudflare域名概览页获取
RECORD_NAME="你的域名" # 如example.com
RECORD_TYPE="A" # 解析类型,A记录对应IPv4
# 获取当前公网IP
CURRENT_IP=$(curl -s ifconfig.me)
# 查询现有DNS记录ID
RECORD_ID=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records?type=$RECORD_TYPE&name=$RECORD_NAME" \
-H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" | jq -r '.result[0].id')
# 若记录存在则更新
if [ "$RECORD_ID" != "null" ]; then
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":"'$RECORD_TYPE'","name":"'$RECORD_NAME'","content":"'$CURRENT_IP'","ttl":120,"proxied":false}'
echo "DNS已更新,当前IP:$CURRENT_IP"
else
echo "未找到对应DNS记录,更新失败"
fi
脚本逻辑很清晰:先定义Cloudflare的关键参数,再通过`curl`获取服务器公网IP,接着查询目标DNS记录的ID,最后根据ID发送PUT请求完成解析更新。注意替换脚本中的占位符(如API_TOKEN、ZONE_ID等),其中ZONE_ID可在Cloudflare域名管理页面的“概览”选项卡中找到。
设置定时任务实现自动化
要让脚本定期执行,需借助Linux的`cron`服务。执行`crontab -e`命令编辑定时任务,在文件末尾添加一行(示例为每小时执行一次):
0 * * * * /路径/cloudflare_dns_update.sh >> /var/log/cloudflare_dns.log 2>&1
这里做了两点优化:一是指定脚本的绝对路径(如`/home/user/scripts/cloudflare_dns_update.sh`),二是将执行日志输出到`/var/log/cloudflare_dns.log`,方便后续排查问题。保存退出后,`cron`会自动加载任务,VPS服务器的公网IP变动时,脚本会按时调用Cloudflare API更新DNS解析。
通过这套方案,VPS服务器的DNS解析从此告别手动操作。无论是家庭实验室的测试环境,还是企业级的网站托管,都能通过简单的脚本和定时任务,让域名与IP的绑定始终保持同步,确保服务稳定可用🌐。
上一篇: 跨境网站SSL证书部署VPS海外高级教程
工信部备案:粤ICP备18132883号-2