Add complete French (fr) and Chinese (zh) translations for all documentation: - Root files: README, CHANGELOG, SECURITY, BETA-RELEASE - docs/: All 16 core documentation files - DOCS/: All 19 deep-dive documents including embedded/ and archive/ - package/secubox/: All 123+ package READMEs - Misc: secubox-tools/, scripts/, EXAMPLES/, config-backups/, streamlit-apps/ Total: 346 translation files created Each file includes language switcher links for easy navigation between English, French, and Chinese versions. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
3.8 KiB
3.8 KiB
secubox-app-dns-provider
通过提供商 REST API 进行程序化 DNS 记录管理。SecuBox 生态系统的一部分。
概述
通过 OVH、Gandi 和 Cloudflare API 管理 DNS 区域。提供 CLI 工具(dnsctl)用于记录的增删改查、HAProxy vhost 同步、DNS 传播验证和 ACME DNS-01 证书签发。
架构
dnsctl (CLI)
|-- load_provider() -> 加载 /usr/lib/secubox/dns/{provider}.sh
|-- cmd_list/add/rm -> 委托给 dns_list/dns_add/dns_rm
|-- cmd_sync -> 遍历 HAProxy UCI vhosts -> 每个域名执行 dns_add
|-- cmd_verify -> 在 1.1.1.1, 8.8.8.8, 9.9.9.9 上 nslookup
+-- cmd_acme_dns01 -> 导出提供商环境变量 -> acme.sh --dns
提供商适配器
/usr/lib/secubox/dns/ 中的每个适配器实现:
| 函数 | 描述 |
|---|---|
dns_list(zone) |
列出区域中的所有记录 |
dns_add(zone, type, subdomain, target, ttl) |
创建记录 |
dns_rm(zone, type, subdomain) |
删除记录 |
dns_verify(fqdn) |
检查解析 |
dns_test_credentials() |
验证 API 密钥 |
支持的提供商
- OVH -- HMAC-SHA1 签名的 API v1(app_key + app_secret + consumer_key)
- Gandi -- 使用 Bearer token 的 LiveDNS v5
- Cloudflare -- 使用 Bearer token + zone_id 的 API v4
UCI 配置
/etc/config/dns-provider
config dns_provider 'main' -> enabled, provider, zone
config ovh 'ovh' -> endpoint, app_key, app_secret, consumer_key
config gandi 'gandi' -> api_key
config cloudflare 'cloudflare' -> api_token, zone_id
CLI 使用方法
基本操作
dnsctl status # 显示配置状态
dnsctl test # 验证 API 凭证
dnsctl list # 列出区域记录
dnsctl add A myservice 1.2.3.4 # 创建 A 记录
dnsctl add CNAME www mycdn.net # 创建 CNAME
dnsctl update A myservice 5.6.7.8 # 更新现有记录
dnsctl get A www # 获取记录值
dnsctl rm A myservice # 删除记录
dnsctl domains # 列出账户中的所有域名
HAProxy 同步
dnsctl sync # 将 HAProxy vhosts 同步到 DNS A 记录
dnsctl verify myservice.example.com # 检查传播(1.1.1.1, 8.8.8.8, 9.9.9.9)
子域名生成器
dnsctl generate gitea # 使用公网 IP 自动创建 gitea.zone
dnsctl generate api prod # 创建 prod-api.zone
dnsctl suggest web # 显示子域名建议
dnsctl suggest mail # 建议:mail, smtp, imap, webmail, mx
dnsctl suggest dev # 建议:git, dev, staging, test, ci
动态 DNS
dnsctl dyndns # 使用 WAN IP 更新根 A 记录
dnsctl dyndns api 300 # 更新 api.zone,TTL 为 5 分钟
邮件 DNS 设置
dnsctl mail-setup # 创建 MX、SPF、DMARC 记录
dnsctl mail-setup mail 10 # 自定义主机名和优先级
dnsctl dkim-add mail '<public-key>' # 添加 DKIM TXT 记录
SSL 证书
dnsctl acme-dns01 example.com # 通过 DNS-01 挑战签发证书
dnsctl acme-dns01 '*.example.com' # 通过 DNS-01 签发通配符证书
依赖
curl-- 用于 API 调用的 HTTP 客户端openssl-util-- HMAC-SHA1 签名(OVH)jsonfilter-- JSON 解析(OpenWrt 原生)acme.sh-- 证书签发(可选,用于 DNS-01)
文件
/etc/config/dns-provider UCI 配置
/usr/sbin/dnsctl CLI 控制器
/usr/lib/secubox/dns/ovh.sh OVH 适配器
/usr/lib/secubox/dns/gandi.sh Gandi 适配器
/usr/lib/secubox/dns/cloudflare.sh Cloudflare 适配器