Files
Cloudflare-DDNS/README.md
2025-11-10 10:29:38 +08:00

97 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Debian/Ubuntu 全自动 Cloudflare DDNS 一键脚本
这是一个功能强大且高度优化的 Shell 脚本,旨在帮助用户在 Debian 或 Ubuntu 系统上一键配置 Cloudflare DDNS (动态域名解析服务)。脚本会自动检测并更新您的公网 IPv4 和 IPv6 地址,确保您的域名始终指向服务器的最新 IP。
## 脚本特点
- **一键式安装**:自动检测并安装 `curl``jq` 依赖,无需手动干预。
- **双栈支持**:同时支持 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 Token****Chat ID**
## 使用方法
### 1. 下载并运行脚本
使用 SSH 连接到您的服务器,并以 root 用户身份执行以下命令:
```bash
wget -O ddns.sh https://git.wlens.top/laowang/Cloudflare-DDNS/raw/branch/master/ddns.sh && bash ddns.sh
```
### 2. 首次配置
脚本第一次运行时,会引导您完成安装和配置流程:
1. **自动安装依赖**:脚本会检查并安装 `curl``jq`
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` 命令,调出管理菜单进行后续操作。
```bash
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-reload` 和 `ddns` 菜单中的 `1` 重启服务。