RouterOS利用阿里云API接口实现DDNS动态ip域名解析

MaskTT 2023-02-26 3.16 K阅读 5评论

RouterOS利用阿里云API接口实现DDNS动态ip域名解析

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

 

一、创建访问控制RAM的AccessKey

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

  • 1、阿里云网站 –> 产品 –> 安全 –> 应用身份服务,
    https://ram.console.aliyun.com/overview
    这个就是控制API ,用户管理,新建用户,填写用户名和勾上“为该用户自动生成AccessKey”,保存好这个accesskey。
    RouterOS利用阿里云API接口实现DDNS动态ip域名解析
  • 2、策略管理 –> 自定义授权策略,新建授权策略,选择空白模版,授权策略名称随便填(如alidns),策略内容为下面的内容(修改下面内容中的域名为你自己要做DDNS的域名)

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

Resource是指被授权的具体对象,这边domain/masktt.com需要修改成你自己的域名domain/xxx.com。这样就是授权对象是该域名
RouterOS利用阿里云API接口实现DDNS动态ip域名解析

{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "alidns:AddDomainRecord",
        "alidns:DescribeDomainRecords",
        "alidns:UpdateDomainRecord"
      ],
      "Resource": "acs:alidns:*:*:domain/masktt.com",
      "Effect": "Allow"
    }
  ]}
  • 3、用户管理,对上面创建的用户,点击授权,选择刚才自定义创建的策略,确定

二、测试测试是否成功

请求参数:

  • id (必选) AccessKeyId

  • secret (必选)AccessKeySecret

  • record(必选)记录名(如:www)

  • domain(必选)域名(如:masktt.com)

  • ip (可选,默认值为请求来源IPv4)DDNS的IP地址

  • 线路(自动识别-无需选择)

  • 记录类型 (可选,默认值为A,可选值为AAAA) IPv6支持

  • 只需要正确的填写左边红色的四项,右边会自动生成好,点击带IP的访问即可,

  • 返回参考:

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

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

  • “2”代表没有设置参数

  • 如果返回值为0那证明你的你的阿里云设置是成功的,可以在阿里云域名中查看解析是否自动添加。

三、ROS脚本

id、secret、domain、record、pppoe修改成自己的。只需要修改这5个地方 其它地方不用动,定时1分钟运行就好。

RouterOS利用阿里云API接口实现DDNS动态ip域名解析

#aliyun Access Key
:local id "AccessKeyId"
:local secret "AccessKeySecret"

#domain:local domain "你的域名masktt.com"
:local record "域名前缀www"

#pppoe-out1
: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="https://api.masktt.com/aliddns/\?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

  • 再Schedule中加一个定时器,自动运行DDNS脚本
    RouterOS利用阿里云API接口实现DDNS动态ip域名解析
文章版权声明:除非注明,否则均为MaskTT博客原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
验证码
评论列表 (有 5 条评论,3156人围观)
网友昵称:nine
nine V 游客 沙发
02-06 回复
用你这个脚本也还是更新不了 出现alidns update error 然后版本是7.7
网友昵称:MaskTT
MaskTT V 博主
03-29 回复
@nine 复制代码的时候,输入法用英文的。
脚本的代码不会有问题,阿里那边您认真看一下。
网友昵称:liveJQ
liveJQ V 游客 椅子
03-20 回复
非常有用哦
网友昵称:版本
版本 V 游客 板凳
04-03 回复
解析V4 还是V6 的, 没反应的,请问什么回事
网友昵称:MaskTT
MaskTT V 博主
04-08 回复
@版本 我自己用的也是这个,DDNS解析没有问题。你按步骤操作,如果不明白,可以联系我QQ:126550631

目录[+]

取消
微信二维码
微信二维码
支付宝二维码