阿里云
Dotnify 使用 AccessKey ID 和 AccessKey Secret 密钥对连接阿里云 DNS(Alidns)。请求使用 V1 HMAC-SHA1 签名算法进行签名——无需 SDK 依赖。
创建 AccessKey 密钥对
- 登录 阿里云控制台
- 前往 AccessKey 管理 → AccessKey
- 点击 创建 AccessKey——将生成 AccessKey ID 和 AccessKey Secret
- 妥善保存 AccessKey Secret——关闭对话框后将无法再查看
WARNING
阿里云建议使用 RAM 用户的 AccessKey 而非主账号 AccessKey。请创建具有最低所需权限的 RAM 用户并使用其 AccessKey 密钥对。
所需权限
RAM 用户(或 AccessKey)需要以下 Alidns 权限:
| 服务 | 操作 | 描述 |
|---|---|---|
| Alidns | alidns:DescribeDomains | 列出域名 |
| Alidns | alidns:DescribeDomainRecords | 列出域名中的记录 |
| Alidns | alidns:AddDomainRecord | 创建记录 |
| Alidns | alidns:UpdateDomainRecord | 更新记录 |
| Alidns | alidns:DeleteDomainRecord | 删除记录 |
| Alidns | alidns:DescribeDomainInfo | 获取域名信息(用于解析线路) |
可以通过 RAM → 策略 → 创建策略 分配这些权限。
自定义策略示例(JSON):
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"alidns:DescribeDomains",
"alidns:DescribeDomainRecords",
"alidns:AddDomainRecord",
"alidns:UpdateDomainRecord",
"alidns:DeleteDomainRecord",
"alidns:DescribeDomainInfo"
],
"Resource": "*"
}
]
}为方便起见,也可以使用 AliyunDNSFullAccess 系统策略,该策略授予完整的 Alidns 访问权限。
在 Dotnify 中添加服务商
- 前往 服务商 → 添加服务商
- 选择 阿里云 作为服务商类型
- 输入显示名称(如 "我的阿里云")
- 输入 AccessKey ID 和 AccessKey Secret
- 点击验证并继续
Dotnify 将使用提供的凭据尝试列出域名。如果验证失败,请检查:
- AccessKey ID 和 AccessKey Secret 是否正确复制
- RAM 用户是否具有所需的 Alidns 权限
- 账户是否已在阿里云 DNS 中配置域名
选择解析域
验证后,Dotnify 显示凭据可访问的所有域名。你可以:
- 勾选特定域名以仅管理这些域名
- 全部不勾选以管理每个可访问的域名
之后可以通过编辑服务商来更改解析域选择。
Dotnify 如何使用凭据
Dotnify 在 Node.js 中直接实现阿里云 V1 API 签名(无需 SDK)。签名过程:
- 按键名排序所有请求参数并按阿里云规范进行百分号编码
- 构造待签名字符串:
METHOD&%2F&<百分号编码的规范查询字符串> - 使用 AccessKey Secret 加尾部
&计算 HMAC-SHA1 签名 - 将
Signature参数附加到请求中
| 操作 | Alidns API Action |
|---|---|
| 列出域名 | DescribeDomains |
| 列出记录 | DescribeDomainRecords |
| 创建记录 | AddDomainRecord |
| 更新记录 | UpdateDomainRecord |
| 删除记录 | DeleteDomainRecord |
| 列出线路 | DescribeDomainInfo(带 NeedDetailAttributes=true) |
所有请求发送至 https://alidns.aliyuncs.com/,使用 2015-01-09 API 版本。
阿里云特有功能
解析线路
阿里云 DNS 支持解析线路——你可以为不同的运营商或地域设置不同的记录(如默认、电信、联通、移动)。在 Dotnify 中创建或编辑记录时,可以从下拉菜单选择解析线路。
可用线路通过 DescribeDomainInfo(带 NeedDetailAttributes=true)实时从 API 获取。可用线路可能因域名和阿里云 DNS 套餐而异。
线路按两级层次结构组织(父类别和具体线路):
| 类别 | 示例 |
|---|---|
| 默认 | 默认线路 |
| 运营商 | 电信、联通、移动 |
| 地域 | 国内各省、海外、洲、国家 |
| 搜索引擎 | 百度、Google、Bing |
在 Dotnify UI 中选择线路时,第一个下拉菜单显示顶级分组,第二个下拉菜单显示该分组内的具体线路。
记录权重
阿里云 DNS 支持按记录设置权重。创建或编辑记录时可以设置权重值。这在负载均衡场景中非常有用——阿里云 DNS 会根据相同名称、类型和线路的记录的权重比例分配流量。
最小 TTL
阿里云 DNS 强制 最小 TTL 为 600 秒(10 分钟)。Dotnify 会自动执行此限制:如果设置的 TTL 低于 600,将向上取整为 600。
记录状态
阿里云 DNS 记录具有启用/禁用状态(ENABLE / DISABLE)。Dotnify 在记录上以 status 字段("enable" 或 "disable")展示此状态。
记录备注
阿里云 DNS 支持对 DNS 记录添加备注。Dotnify 在读取和显示记录时保留备注。
安全说明
- AccessKey ID 和 AccessKey Secret 以明文存储在 Redis 中(当前 MVP 设计)。请使用强凭据保护你的 Redis 实例。
- 通过 API 返回服务商列表时,密钥被掩码——仅显示最后 4 个字符。
- 编辑服务商时,可以留空 AccessKey 字段以保持当前值不变。
- 所有阿里云 API 调用均在服务端进行——凭据不会暴露给浏览器。