secubox-openwrt/package/secubox/secubox-app-dns-provider/README.zh.md
CyberMind-FR ccfb58124c docs: Add trilingual documentation (French and Chinese translations)
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>
2026-03-20 10:00:18 +01:00

121 lines
3.8 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.

[English](README.md) | [Francais](README.fr.md) | 中文
# 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 v1app_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 使用方法
### 基本操作
```bash
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 同步
```bash
dnsctl sync # 将 HAProxy vhosts 同步到 DNS A 记录
dnsctl verify myservice.example.com # 检查传播1.1.1.1, 8.8.8.8, 9.9.9.9
```
### 子域名生成器
```bash
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
```bash
dnsctl dyndns # 使用 WAN IP 更新根 A 记录
dnsctl dyndns api 300 # 更新 api.zoneTTL 为 5 分钟
```
### 邮件 DNS 设置
```bash
dnsctl mail-setup # 创建 MX、SPF、DMARC 记录
dnsctl mail-setup mail 10 # 自定义主机名和优先级
dnsctl dkim-add mail '<public-key>' # 添加 DKIM TXT 记录
```
### SSL 证书
```bash
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 适配器
```