
📖 前言:为什么需要 DDNS?
很多朋友家里的宽带或购买的某些 VPS(如 NAT VPS),其公网 IP 地址是不是固定的,每隔一段时间或重启路由器后就会变化。 这就导致了一个问题:你无法通过一个固定的 IP 远程访问家里的 NAS、服务器或摄像头。
DDNS (Dynamic DNS) 就是为了解决这个问题而生的。它的工作原理很简单:
有一个脚本每隔几分钟检查一下你当前的公网 IP,如果发现 IP 变了,就自动调用 DNS 服务商(比如 Cloudflare)的 API,把你域名的解析记录更新为最新的 IP。
今天,心海君就手把手教大家,如何利用强大的 Cloudflare 实现这一功能。
🛠️ 前提条件
- 你拥有一个属于自己的域名(例如:
lanxh.com)。 - 该域名的 DNS 解析已经托管到了 Cloudflare。
- 你有一台需要进行 DDNS 解析的 Linux 服务器或设备(可以是 VPS,也可以是家里的树莓派、OpenWrt 路由器)。
🚀 详细操作步骤
第一步:获取 Cloudflare Global API Key
这是一个最高权限的密钥,请务必妥善保管,不要泄露给他人!
输入你的登录密码和验证码,复制显示出来的那串长长的密钥,保存备用。 (图示:Cloudflare API 页面截图,建议站长自行补充一张带红框的图)
登录 Cloudflare 控制台。
点击右上角的头像 -> “我的个人资料 (My Profile)” -> “API 令牌 (API Tokens)”。
找到 “Global API Key”,点击右侧的 “查看 (View)”。

第二步:预先设置 DNS 解析记录
在运行脚本前,我们需要先在 Cloudflare 上创建一个“占位”的解析记录。
点击保存。
进入你的域名管理页面,点击左侧的 “DNS”。
点击 “添加记录 (Add record)”。
类型: 选择 A。
名称 (Name): 填写你想使用的二级域名,例如 ddns(那么完整域名就是 ddns.yourdomain.com)。
IPv4 地址: 随便填一个 IP,比如 1.1.1.1。
代理状态 (Proxy status): 重要!请务必关闭小黄云(使其变成灰色,即“仅 DNS”模式)。

第三步:下载并配置 DDNS 脚本
连接到你的 Linux 服务器(SSH),依次执行以下命令。
1. 下载脚本:
wget -N --no-check-certificate https://raw.githubusercontent.com/yulewang/cloudflare-api-v4-ddns/master/cf-v4-ddns.sh
2. 赋予执行权限:
chmod +x cf-v4-ddns.sh
3. 编辑脚本配置: 使用你熟悉的编辑器打开脚本,例如 nano 或 vi:
nano cf-v4-ddns.sh
找到脚本开头的以下几行,填入你的信息:
# 你的 Global API Key (第一步获取的)
CFKEY=这里填写你那串长长的API密钥
# 你的 Cloudflare 登录邮箱
CFUSER=user@example.com
# 你的主域名 (例如 lanxh.com)
CFZONE_NAME=example.com
# 你要解析的完整二级域名 (第二步创建的那个)
CFRECORD_NAME=ddns.example.com
编辑完成后,按 Ctrl+O 保存,按 Ctrl+X 退出 (如果是 nano 编辑器)。
第四步:测试运行
配置完成后,我们可以手动运行一次脚本,看看是否生效。
./cf-v4-ddns.sh
观察结果:
- 如果终端输出类似
Update success!或显示了当前的公网 IP,说明脚本运行成功。 - 回到 Cloudflare 的 DNS 页面刷新一下,看看刚才设置的
ddns记录的 IP 地址是不是已经自动变成了你服务器当前的公网 IP。如果是,恭喜你,成功了!
第五步:设置全自动定时任务 (Crontab)
为了让脚本全自动运行,我们需要设置一个定时任务,比如每分钟检查一次。
- 输入命令编辑定时任务:
crontab -e(如果是第一次运行,可能会让你选择编辑器,输入对应的数字选择nano或vim即可) - 在文件末尾添加以下一行内容:*/1 * * * * /root/cf-v4-ddns.sh >/dev/null 2>&1 注意:请确保脚本路径
/root/cf-v4-ddns.sh是正确的,如果你下载到了其他目录请自行修改。 - 保存并退出。系统会提示
crontab: installing new crontab,说明定时任务创建成功。
❓ 常见问题 (FAQ)
Q: 为什么 Cloudflare 上的 IP 没有更新? A:
- 检查脚本里的 API Key、邮箱、域名是否填写正确,有没有多余的空格。
- 确保第二步中添加 DNS 记录时,小黄云是关闭状态。
- 手动运行脚本
./cf-v4-ddns.sh,看看有没有报错信息。
Q: 这个脚本支持 IPv6 吗? A: 本教程使用的脚本主要针对 IPv4 (A 记录)。如果你需要 IPv6 (AAAA 记录) 的 DDNS,可以使用其他支持 IPv6 的脚本或工具(如 ddns-go)。
Q: 为什么我设置了定时任务但不执行? A:
- 确保
crond服务是启动的 (systemctl status cron或service cron status)。 - 检查脚本本身是否有可执行权限 (
chmod +x). - 在 crontab 中使用绝对路径(如
/root/cf-v4-ddns.sh)而不是相对路径。
📢 站长推荐
搞定了 DDNS,是不是想折腾点更好玩的? 不妨试试本站自用的 [深蓝云加速],全线 IEPL 专线,不仅能加速你的科学上网体验,还能配合 DDNS 更好地远程管理你的海外服务器。 👉 [点击直达官网注册试用]

心海漪澜


评论前必须登录!
注册