97 lines
5.3 KiB
Markdown
97 lines
5.3 KiB
Markdown
# 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` 重启服务。
|
||
|