1391 字
7 分钟
Debian Ubuntu 全自动 Cloudflare DDNS 一键配置脚本

Debian/Ubuntu 全自动 Cloudflare DDNS 一键脚本#

我的主要需求是解锁并观看台湾地区的流媒体服务,例如HBO Go、4GTV及Hami Video。为此,我选择了一台配备台湾中华电信(HINET)住宅宽带IP的VPS,因为住宅IP在模拟本地用户、规避检测方面效果更佳。但问题也随之而来:这种家宽的IPv4地址是动态的,隔三差五就会变。为了让我的域名能一直指向正确的IP,我就写了这个脚本,让它自动去获取最新的IPv4地址,然后实时更新到Cloudflare的解析记录上。这样一来,就再也不怕IP变动了。

这是一个功能强大且高度优化的 Shell 脚本,旨在帮助用户在 Debian 或 Ubuntu 系统上一键配置 Cloudflare DDNS (动态域名解析服务)。脚本会自动检测并更新您的公网 IPv4 和 IPv6 地址,确保您的域名始终指向服务器的最新 IP。

脚本特点#

  • 一键式安装:自动检测并安装 curljq 依赖,无需手动干预。
  • 双栈支持:同时支持 IPv4 (A 记录) 和 IPv6 (AAAA 记录) 的动态更新。
  • 智能定时:通过 systemd 定时器实现,每 5 分钟自动执行一次 IP 检测与更新,稳定可靠。
  • Telegram 通知:当 IP 地址成功更新或发生错误时,可通过 Telegram Bot 发送实时通知。
  • 安全加固:配置文件和 IP 缓存文件权限被严格设置为 600,防止未授权访问。
  • 高效稳定:缓存 Zone ID 以减少不必要的 API 请求;从多个源获取公网 IP,提高成功率。
  • 管理便捷:安装后可通过 ddns 命令随时调出管理菜单,进行启动、停止、修改配置、查看日志等操作。
  • 彻底卸载:提供一键卸载功能,干净地移除所有相关文件和服务。

准备工作#

在运行脚本之前,请确保您已准备好以下信息:

  1. 一台运行 Debian 或 Ubuntu 的服务器。
  2. 拥有服务器的 root 权限。
  3. 一个在 Cloudflare 解析的域名。
  4. 您的 Cloudflare 账户邮箱
  5. 您的 Cloudflare Global API Key

    获取方式:登录 Cloudflare -> 右上角头像 -> 我的个人资料 -> API 令牌 -> Global API Key -> 查看。

  6. (重要) 在 Cloudflare DNS 管理页面,提前创建好您想用于 DDNS 的 A 记录和 AAAA 记录。例如,如果您想用 v4.yourdomain.com 指向 IPv4,v6.yourdomain.com 指向 IPv6,您必须先手动创建这两个记录(IP 地址可以随便填,如 1.1.1.1)。
  7. (可选) 如果需要 Telegram 通知,请准备好您的 Telegram Bot TokenChat ID

使用方法#

1. 下载并运行脚本#

使用 SSH 连接到您的服务器,并以 root 用户身份执行以下命令:

Terminal window
wget -O ddns.sh https://raw.githubusercontent.com/chinggirltube/my_script/refs/heads/main/ddns.sh && bash ddns.sh

2. 首次配置#

脚本第一次运行时,会引导您完成安装和配置流程:

  1. 自动安装依赖:脚本会检查并安装 curljq
  2. 输入 Cloudflare API 信息:根据提示,输入您的 Cloudflare 账户邮箱和 Global API Key。
  3. 输入域名
    • 输入要用于 IPv4 DDNS 的完整域名(如 v4.yourdomain.com)。如果不需要,直接回车跳过。
    • 输入要用于 IPv6 DDNS 的完整域名(如 v6.yourdomain.com)。如果不需要,直接回车跳过。
  4. 配置 Telegram 通知 (可选):根据提示输入您的 Bot Token 和 Chat ID。如果不需要,直接回车跳过。

配置完成后,脚本会自动设置并启动定时任务。安装成功!

后续管理#

您可以随时在终端输入 ddns 命令,调出管理菜单进行后续操作。

Terminal window
ddns

管理菜单选项说明:

  • 1. 启动 / 重启 DDNS:启动或重启后台的定时任务。
  • 2. 停止 DDNS:停止后台的定时任务。
  • 3. 修改要解析的域名:重新设置用于 IPv4 和 IPv6 的域名。
  • 4. 修改 Cloudflare API:更新您的 Cloudflare 邮箱和 API Key。
  • 5. 配置 Telegram 通知:修改或添加 Telegram Bot 配置。
  • 6. 彻底卸载 DDNS:从系统中移除脚本、配置文件和定时任务。
  • 7. 查看 DDNS 实时日志:实时监控 DDNS 脚本的运行情况,排查问题。
  • 8. 测试 Telegram 通知:发送一条测试消息,以验证 Telegram 配置是否正确。
  • 9. 立即手动执行一次DDNS检查:不等定时器触发,立即手动运行一次 IP 更新。

文件结构#

脚本安装后,相关文件位于以下路径:

  • 管理脚本: /usr/bin/ddns
  • 核心执行脚本: /etc/DDNS/DDNS
  • 配置文件: /etc/DDNS/.config (包含 API Key, 域名等敏感信息)
  • 日志文件: /var/log/ddns.log
  • Systemd 服务单元: /etc/systemd/system/ddns.service
  • Systemd 定时器单元: /etc/systemd/system/ddns.timer

常见问题 (FAQ)#

Q: 日志提示 无法获取 Zone ID 是为什么? A: 这通常意味着您的 Cloudflare 邮箱Global API Key 不正确,或者您填写的域名(例如 yourdomain.com)并不在该 Cloudflare 账户下。请通过 ddns 命令选择 4 重新配置。

Q: 日志提示 无法获取 DNS Record ID 是为什么? A: 这是最常见的问题。原因是您没有在 Cloudflare 上预先创建该 DNS 记录。例如,如果您在脚本中配置了 v4.mydomain.com,您必须先登录 Cloudflare 手动为 mydomain.com 添加一条名为 v4 的 A 记录。

Q: 脚本多久检查一次 IP 地址? A: 默认每 5 分钟检查一次。

Q: 如何修改检查频率? A: 编辑文件 /etc/systemd/system/ddns.timer,修改 OnUnitActiveSec=5min 这一行,例如改为 10min 就是 10 分钟一次。修改后执行 systemctl daemon-reloadddns 菜单中的 1 重启服务。

Debian Ubuntu 全自动 Cloudflare DDNS 一键配置脚本
https://blog.wlens.top/posts/debian-ubuntu-全自动-cloudflare-ddns-一键配置脚本/
作者
Lao Wang
发布于
2024-07-27
许可协议
CC BY-NC-SA 4.0