Skip to content

阿里云

Dotnify 使用 AccessKey IDAccessKey Secret 密钥对连接阿里云 DNS(Alidns)。请求使用 V1 HMAC-SHA1 签名算法进行签名——无需 SDK 依赖。

创建 AccessKey 密钥对

  1. 登录 阿里云控制台
  2. 前往 AccessKey 管理AccessKey
  3. 点击 创建 AccessKey——将生成 AccessKey ID 和 AccessKey Secret
  4. 妥善保存 AccessKey Secret——关闭对话框后将无法再查看

WARNING

阿里云建议使用 RAM 用户的 AccessKey 而非主账号 AccessKey。请创建具有最低所需权限的 RAM 用户并使用其 AccessKey 密钥对。

所需权限

RAM 用户(或 AccessKey)需要以下 Alidns 权限:

服务操作描述
Alidnsalidns:DescribeDomains列出域名
Alidnsalidns:DescribeDomainRecords列出域名中的记录
Alidnsalidns:AddDomainRecord创建记录
Alidnsalidns:UpdateDomainRecord更新记录
Alidnsalidns:DeleteDomainRecord删除记录
Alidnsalidns:DescribeDomainInfo获取域名信息(用于解析线路)

可以通过 RAM策略创建策略 分配这些权限。

自定义策略示例(JSON):

json
{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "alidns:DescribeDomains",
        "alidns:DescribeDomainRecords",
        "alidns:AddDomainRecord",
        "alidns:UpdateDomainRecord",
        "alidns:DeleteDomainRecord",
        "alidns:DescribeDomainInfo"
      ],
      "Resource": "*"
    }
  ]
}

为方便起见,也可以使用 AliyunDNSFullAccess 系统策略,该策略授予完整的 Alidns 访问权限。

在 Dotnify 中添加服务商

  1. 前往 服务商添加服务商
  2. 选择 阿里云 作为服务商类型
  3. 输入显示名称(如 "我的阿里云")
  4. 输入 AccessKey IDAccessKey Secret
  5. 点击验证并继续

Dotnify 将使用提供的凭据尝试列出域名。如果验证失败,请检查:

  • AccessKey ID 和 AccessKey Secret 是否正确复制
  • RAM 用户是否具有所需的 Alidns 权限
  • 账户是否已在阿里云 DNS 中配置域名

选择解析域

验证后,Dotnify 显示凭据可访问的所有域名。你可以:

  • 勾选特定域名以仅管理这些域名
  • 全部不勾选以管理每个可访问的域名

之后可以通过编辑服务商来更改解析域选择。

Dotnify 如何使用凭据

Dotnify 在 Node.js 中直接实现阿里云 V1 API 签名(无需 SDK)。签名过程:

  1. 按键名排序所有请求参数并按阿里云规范进行百分号编码
  2. 构造待签名字符串:METHOD&%2F&<百分号编码的规范查询字符串>
  3. 使用 AccessKey Secret 加尾部 & 计算 HMAC-SHA1 签名
  4. 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 调用均在服务端进行——凭据不会暴露给浏览器。