|
| 1 | +# 多提供商配置指南 |
| 2 | + |
| 3 | +GoDNS 现已支持同时配置多个 DNS 提供商,允许您从单个 GoDNS 实例管理不同 DNS 服务的域名。 |
| 4 | + |
| 5 | +## 功能特性 |
| 6 | + |
| 7 | +- **多提供商支持**:在一个配置文件中配置多个 DNS 提供商(Cloudflare、DNSPod、DigitalOcean 等) |
| 8 | +- **每域名指定提供商**:为不同域名指定不同的提供商 |
| 9 | +- **完全向后兼容**:现有的单提供商配置无需修改即可继续使用 |
| 10 | +- **混合配置**:结合传统全局提供商与新的按域名提供商设置 |
| 11 | +- **提供商特定凭据**:每个提供商可以有自己的身份验证凭据 |
| 12 | + |
| 13 | +## 配置选项 |
| 14 | + |
| 15 | +### 选项 1:多提供商配置 |
| 16 | + |
| 17 | +配置多个提供商并按域名分配: |
| 18 | + |
| 19 | +```json |
| 20 | +{ |
| 21 | + "providers": { |
| 22 | + "cloudflare": { |
| 23 | + |
| 24 | + "password": "your-cloudflare-api-token" |
| 25 | + }, |
| 26 | + "dnspod": { |
| 27 | + "login_token": "your-dnspod-token" |
| 28 | + }, |
| 29 | + "digitalocean": { |
| 30 | + "password": "your-digitalocean-api-token" |
| 31 | + } |
| 32 | + }, |
| 33 | + "domains": [ |
| 34 | + { |
| 35 | + "domain_name": "example.com", |
| 36 | + "sub_domains": ["www", "api"], |
| 37 | + "provider": "cloudflare" |
| 38 | + }, |
| 39 | + { |
| 40 | + "domain_name": "mysite.net", |
| 41 | + "sub_domains": ["mail", "ftp"], |
| 42 | + "provider": "dnspod" |
| 43 | + } |
| 44 | + ] |
| 45 | +} |
| 46 | +``` |
| 47 | + |
| 48 | +### 选项 2:传统单提供商(向后兼容) |
| 49 | + |
| 50 | +现有配置无需修改即可继续使用: |
| 51 | + |
| 52 | +```json |
| 53 | +{ |
| 54 | + "provider": "DNSPod", |
| 55 | + "login_token": "your-dnspod-token", |
| 56 | + "domains": [ |
| 57 | + { |
| 58 | + "domain_name": "example.com", |
| 59 | + "sub_domains": ["www", "test"] |
| 60 | + } |
| 61 | + ] |
| 62 | +} |
| 63 | +``` |
| 64 | + |
| 65 | +### 选项 3:混合配置 |
| 66 | + |
| 67 | +结合全局提供商与特定的按域名提供商: |
| 68 | + |
| 69 | +```json |
| 70 | +{ |
| 71 | + "provider": "DNSPod", |
| 72 | + "login_token": "your-dnspod-token", |
| 73 | + "providers": { |
| 74 | + "cloudflare": { |
| 75 | + |
| 76 | + "password": "your-cloudflare-api-token" |
| 77 | + } |
| 78 | + }, |
| 79 | + "domains": [ |
| 80 | + { |
| 81 | + "domain_name": "oldsite.com", |
| 82 | + "sub_domains": ["www", "mail"] |
| 83 | + }, |
| 84 | + { |
| 85 | + "domain_name": "newsite.com", |
| 86 | + "sub_domains": ["www", "api"], |
| 87 | + "provider": "cloudflare" |
| 88 | + } |
| 89 | + ] |
| 90 | +} |
| 91 | +``` |
| 92 | + |
| 93 | +## 提供商配置字段 |
| 94 | + |
| 95 | +`providers` 部分中的每个提供商支持以下通用字段: |
| 96 | + |
| 97 | +- `email`:用于身份验证的电子邮件地址(Cloudflare 等) |
| 98 | +- `password`:API 令牌或密码 |
| 99 | +- `password_file`:包含密码/令牌的文件路径 |
| 100 | +- `login_token`:基于令牌的身份验证登录令牌(DNSPod 等) |
| 101 | +- `login_token_file`:包含登录令牌的文件路径 |
| 102 | +- `app_key`:应用程序密钥(提供商特定) |
| 103 | +- `app_secret`:应用程序密钥(提供商特定) |
| 104 | +- `consumer_key`:消费者密钥(提供商特定) |
| 105 | + |
| 106 | +## 域名配置 |
| 107 | + |
| 108 | +域名支持可选的 `provider` 字段: |
| 109 | + |
| 110 | +```json |
| 111 | +{ |
| 112 | + "domain_name": "example.com", |
| 113 | + "sub_domains": ["www", "api", "@"], |
| 114 | + "provider": "cloudflare" |
| 115 | +} |
| 116 | +``` |
| 117 | + |
| 118 | +如果省略 `provider`,域名将使用全局 `provider` 设置。 |
| 119 | + |
| 120 | +## 支持的提供商 |
| 121 | + |
| 122 | +多提供商模式支持所有现有提供商: |
| 123 | + |
| 124 | +- Cloudflare |
| 125 | +- DNSPod |
| 126 | +- DigitalOcean |
| 127 | +- Alidns |
| 128 | +- Google |
| 129 | +- HE (Hurricane Electric) |
| 130 | +- Dreamhost |
| 131 | +- Duck DNS |
| 132 | +- NoIP |
| 133 | +- Scaleway |
| 134 | +- DynV6 |
| 135 | +- Linode |
| 136 | +- Strato |
| 137 | +- Loopiase |
| 138 | +- Infomaniak |
| 139 | +- Hetzner |
| 140 | +- OVH |
| 141 | +- Dynu |
| 142 | +- IONOS |
| 143 | +- TransIP |
| 144 | + |
| 145 | +## 迁移指南 |
| 146 | + |
| 147 | +### 从单提供商到多提供商 |
| 148 | + |
| 149 | +1. **保持现有配置正常工作**:当前设置无需任何更改 |
| 150 | +2. **逐步添加新提供商**: |
| 151 | + ```json |
| 152 | + { |
| 153 | + "provider": "DNSPod", // 保持现有设置 |
| 154 | + "login_token": "old-token", |
| 155 | + "providers": { // 添加新提供商 |
| 156 | + "cloudflare": { |
| 157 | + |
| 158 | + "password": "cf-token" |
| 159 | + } |
| 160 | + }, |
| 161 | + "domains": [ |
| 162 | + { |
| 163 | + "domain_name": "old-domain.com", |
| 164 | + "sub_domains": ["www"] // 使用 DNSPod(全局提供商) |
| 165 | + }, |
| 166 | + { |
| 167 | + "domain_name": "new-domain.com", |
| 168 | + "sub_domains": ["www"], |
| 169 | + "provider": "cloudflare" // 使用 Cloudflare |
| 170 | + } |
| 171 | + ] |
| 172 | + } |
| 173 | + ``` |
| 174 | + |
| 175 | +3. **完成迁移**:一旦所有域名都指定了提供商,就可以移除全局提供商 |
| 176 | + |
| 177 | +## 配置示例 |
| 178 | + |
| 179 | +查看示例配置文件: |
| 180 | + |
| 181 | +- `configs/config_multi_sample.json` - 完整的多提供商设置 |
| 182 | +- `configs/config_multi_sample.yaml` - 多提供商设置的 YAML 版本 |
| 183 | +- `configs/config_legacy_compatible.json` - 显示向后兼容性 |
| 184 | +- `configs/config_mixed_sample.json` - 混合传统 + 新提供商配置 |
| 185 | + |
| 186 | +## 日志记录和通知 |
| 187 | + |
| 188 | +多提供商配置在日志消息和通知中包含提供商信息: |
| 189 | + |
| 190 | +``` |
| 191 | +INFO [2024-01-01T12:00:00Z] 已初始化提供商: cloudflare |
| 192 | +INFO [2024-01-01T12:00:00Z] 已初始化提供商: dnspod |
| 193 | +INFO [2024-01-01T12:00:00Z] [ www, api ] of example.com (通过 cloudflare) |
| 194 | +``` |
| 195 | + |
| 196 | +## 优势 |
| 197 | + |
| 198 | +1. **整合**:从一个 GoDNS 实例管理多个 DNS 提供商 |
| 199 | +2. **灵活性**:为每个域名使用最佳提供商 |
| 200 | +3. **冗余性**:将域名分布在提供商之间以提高弹性 |
| 201 | +4. **迁移**:逐步在提供商之间移动域名 |
| 202 | +5. **成本优化**:根据定价/功能使用不同提供商 |
| 203 | +6. **合规性**:满足地理分布的要求 |
| 204 | + |
| 205 | +## 故障排除 |
| 206 | + |
| 207 | +### 找不到提供商错误 |
| 208 | +``` |
| 209 | +ERROR provider 'cloudflare' not found for domain example.com |
| 210 | +``` |
| 211 | +**解决方案**:确保提供商已在 `providers` 部分中配置。 |
| 212 | + |
| 213 | +### 身份验证失败 |
| 214 | +``` |
| 215 | +ERROR failed to create provider cloudflare: authentication failed |
| 216 | +``` |
| 217 | +**解决方案**:验证提供商配置部分中的凭据。 |
| 218 | + |
| 219 | +### 混合配置问题 |
| 220 | +如果域名没有指定 `provider` 字段,它将使用全局 `provider`。确保: |
| 221 | +1. 使用混合配置时设置了全局 `provider` |
| 222 | +2. 为全局提供商提供了所有必需的凭据 |
0 commit comments