阿里云DDNS重复A记录问题

前面提到使用了阿里云的动态DDNS,发现域名解析中出现了多个A记录,一开始以为会自动失效(过期),后来发现不是,于是又开始了折腾:

1. 用的是Padavan固件所带的脚本功能;界面上没怎么仔细写逻辑需求,链接里也没仔细的写要求,只写了需要几个KEY,这个当然是正确的(不然A记录也没办法新增),于是通过SSH登录进去,终于在/etc/storage/script下找到了Sh42_aliddns.sh文件;

2. 读完脚本大概确定逻辑,脚本会先通过API获取所有的域名记录,并尝试获取recordid;如果获取成功则updateRecord,反之则addRecord,显然问题出现在:)

3. 脚本是通过“query_recordid | get_recordid”两个函数获取返回值,前一个是通过API获取域名解析记录,后一个是从中解析出相应域名的recordid,所以也不能判断到底是返回值错误还是解析结果出现了问题,于是写了一test函数,加到脚本中:sh Sh42_aliddns.sh test测试query_recordid的结果,错误提示非常明确:“”Code”:”Forbidden.RAM”,”Message”:”User: not authorized to operate on the specified resource, or this API doesn’t support RAM.”。 看起来不像是这个API不支持RAM的原因(连ADD都支持没道理Query不支持的)。

4. 查看阿里云的授权配置:)感觉没有异常,如下:

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "alidns:AddDomainRecord",
                "alidns:DescribeDomainRecords",
                "alidns:UpdateDomainRecord"
            ],
            "Resource": "acs:alidns:*:*:domain/brallow.cn",
            "Effect": "Allow"
        }
    ]
}

问题其实就出现在这里,因为这个策略是我从网上抄来的,并没有仔细研究alidns有什么Action列表,实际上alidns:DescribeDomainRecords与alidns:DescribeSubDomainRecords是两个不同的Action,而脚本使用的是后者,我并没有授权这个独立的RAM访问,新增授权,问题解决。

You may also like

Leave a Reply

Your email address will not be published. Required fields are marked *