700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > RouterOS利用aliyun的API接口实现DDNS动态解析

RouterOS利用aliyun的API接口实现DDNS动态解析

时间:2024-06-20 19:27:57

相关推荐

RouterOS利用aliyun的API接口实现DDNS动态解析

本文主要讲解如何借助阿里云aliyun的云解析API接口来实现RouterOS(以下简称ROS)的DDNS动态解析。

一、创建访问控制RAM的AccessKey

我这边简单的讲讲如何申请开通:

1、阿里云网站 --> 产品--> 安全-->应用身份服务,这个就是控制API ,用户管理,新建用户,填写用户名和勾上“为该用户自动生成AccessKey”,保存好这个accesskey。

2、策略管理--> 自定义授权策略,新建授权策略,选择空白模版,授权策略名称随便填(如alidns),策略内容为下面的内容(修改下面内容中的域名为你自己要做DDNS的域名)

action是api的接口,只接受AddDomainRecord(增加域名解析),DescribeDomainRecords(输出域名解析列表)和UpdateDomainRecord(修改域名解析记录)

Resource是指被授权的具体对象,这边domain/需要修改成你自己的域名domain/。这样就是授权对象是该域名

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

3、用户管理,对上面创建的用户,点击授权,选择刚才自定义创建的策略,确定。

二、PHP制作aliyun API动态解析接口

以下是我制作好的php解析接口

接口地址:

/alidns

HTTP请求方式:

POST/GET

请求参数:

id (必选) AccessKeyIdsecret (必选)AccessKeySecretrecord(必选)记录名(如:www)domain(必选)域名(如:)ip (可选,默认值为请求来源IPv4)DDNS的IP地址

示例:

curl -X POST /alidns -d 'id=id&secret=secret&domain=&record=www&ip=1.1.1.1'

返回

“0”代表解析修改成功或者是当前解析记录ip相同

“1”代表AccessKey报错(这个阿里云我这边经常出现,刷新就可以正常)

“2”代表没有设置参数

安全说明:

1、本接口未记录所有的解析AccessKey和解析记录,但是服务器的访问日志会有链接记录(按照政策要求需保存6个月的日志)。虽然有日志但是本接口不提供任何查询。

2、强烈建议按照步骤一设置授权权限。

3、由于使用本接口出现的任何安全问题,本人概不负责。这边只能保证本人不会去做任何后门行为。这边建议勤换AccessKey

-6-8v1.0

1、只支持A记录,TTL为600(10分钟),线路是默认线路

2、ip填入不带,默认是来源的IPv4地址

3、不支持IPv6

4、解析记录不存在会自动新建解析记录,存在则修改解析

5、多线路相同主机名记录只能识别列表第一条主机名解析记录

6、暂不提供源码。

三、ROS脚本

id、secret、domain、record、pppoe修改成自己的。定时1分钟运行就好。

#aliyun Access Key:local id "AccessKeyId":local secret "AccessKeySecret"#domain:local domain "":local record "www"#PPPoE-out:local pppoe "pppoe-out1":local ipaddr [/ip address get [/ip address find interface=$pppoe] address]:set ipaddr [:pick $ipaddr 0 ([len $ipaddr] -3)]:global aliip:if ($ipaddr != $aliip) do={:local result [/tool fetch url="/alidns/\?id=$id&secret=$secret&domain=$domain&record=$record&ip=$ipaddr" as-value output=user];:if ($result->"status" = "finished") do={:if ($result->"data" = "0") do={:set aliip $ipaddr:log info "alidns update ok";} else={:log info "alidns update error";}}}

脚本说明:获取pppoe拨号ip,然后判断和记录解析ip是否相同,不同开始访问我的php解析脚本,解析脚本就判断参数执行,返回0或1或2,如果是0更新记录的alidns解析ip,其他的不记录

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。