ddns.sh 是一个用于动态更新 Cloudflare DNS 记录的脚本。它通过检查本地和公网 IP 地址,自动更新 Cloudflare 上的 DNS 记录,以确保域名解析到正确的 IP 地址。
- 检查并安装必要的依赖工具(如
jq和curl或wget)。 - 解析配置文件
cfconf.json,获取域名和记录信息。 - 验证 Cloudflare API 的授权密钥。
- 获取并更新 Cloudflare 的
zone_id。 - 获取本地和公网 IP 地址。
- 创建或更新 Cloudflare DNS 记录。
- 自动设置
crontab任务,每 10 分钟执行一次脚本。 - 自动生成示例配置文件。
-
配置文件:确保在脚本目录下存在
cfconf.json配置文件。可以通过命令行参数-c指定其他配置文件路径。例如:./ddns.sh -c /path/to/your/config.json
如果配置文件不存在,脚本会自动生成一个示例配置文件。
-
执行脚本:直接运行脚本即可开始更新 DNS 记录。
-
日志查看:可以通过
journalctl查看脚本的运行日志。
cfconf.json 文件包含以下配置:
-
settings:全局设置。
log_level:日志级别(如debug,info,warn,error,fatal)。arIp6QueryUrl:用于查询 IPv6 地址的 URL。arIp4QueryUrl:用于查询 IPv4 地址的 URL。log_header_name:日志头名称。
-
domains:域名列表,每个域名包含以下信息:
domain_name:域名。zone_id:Cloudflare 的区域 ID,初始为空,脚本会自动获取。auth_email:Cloudflare 账户的电子邮件。auth_key:Cloudflare API 授权密钥。auth_key_valid:授权密钥是否有效,初始为false,脚本会自动验证。records:记录列表,每个记录包含以下信息:name:子域名。type:记录类型(如A,AAAA)。proxy:是否启用代理。local:是否使用本地 IP。nic_name:网络接口名称。
- 确保
jq已安装。 - 确保
curl或wget至少安装其中之一。 - 确保 Cloudflare API 授权密钥有效。
- 确保网络连接正常,以便访问 Cloudflare API 和 IP 查询服务。
- 本脚本使用
sh编写,旨在兼容 OpenWrt 和其他嵌入式 Linux 系统。
- 通过使用
grep、sed和awk等工具解析 JSON 数据替换jq,减少对外部依赖的需求。