Windows使用阿里云RAM访问控制API实现自建DDNS动态域名解析

2023-05-16

前言

因为最近将家里的电信宽带换成了公网IP,在二手鱼上面淘了点破烂,搭建了一些服务(比如NAS)。而电信的公网IP并不是固定的,要想持续稳定的访问到搭建的服务,我们可以使用固定的域名访问,这就需要DDNS,每次IP变化后,将域名动态的解析到新的公网IP上。

一开始准备使用路由自带的DDNS功能,家里用的小米路由器,小米路由器自带的DDNS服务商有下面几家:

  • 花生壳(oray.com
  • 公云(3322.org
  • Dyndns.com
  • No-ip.com

一般可能用花生壳的比较多一点,但是免费的域名毕竟又长又cuo(免费的还要啥自行车),不便于记忆。

正好我有几个域名正在使用,而且都已经备案过,所以我觉得使用自己的域名比较方便,遂决定使用阿里云的API实现自建的DDNS服务。

本次服务我是将软件部署到下载机(一台7*24在线的Windows电脑)里的,后面尝试将该服务直接部署到小米路由器里,这样适用于没有7*24在线机器的情况。

更新:后来发现小米路由器有插件Misstar Tools,安装后直接使用里面的Ali DDNS模块即可。
非小米路由可以使用这个开源项目:AliDDNSBash,跑的是shell脚本。

一、实现方式

1.使用到的资源

  • 域名服务商:阿里云
  • 软件:NewFuture/DDNS,Github开源项目,网址:点我

2.基本流程

architecture

二、阿里云配置

(一)前置条件

首先,默认你已经拥有域名并且已经备案(不备案解析时会被阿里云阻断)。

(二)添加RAM访问控制

1.添加子用户

登录阿里云,点击右上角用户头像,选择访问控制

access

阿里云会有下面的提示:

child_account

意思这个全局AccessKey权限太高,知道这个等于就拥有你账号所有权限,墙裂建议你使用RAM子用户去进行API调用。所有为了安全,我们点击使用子用户AccessKey。

进去后点击左侧的人员管理-用户,添加一个用户,比如叫shangyexin.com-dns,访问方式选择编程访问,因为你使用API去修改DNS解析,并不需要去WEB上使用这个用户:

create_account

2.为子用户添加权限

创建好后点击创建的用户名,然后选择添加权限为这个子用户添加修改DNS解析的权限:

add_access

一般一开始调试时建议先添加系统策略,在搜索框里搜索dns,然后选择添加AliyunDNSFullAccess权限,也就是拥有你该账户下的所有域名DNS解析权限,点击确定即可(只有操作DNS权限,没有对你账号下除DNS外其他资源的权限)。

后面步骤调试通后,可以添加更加细粒度的权限,比如只可以修改指定的域名。

可以选择新建策略权限,然后添加该权限。比如本文中添加了下面这样的权限:

  • 所有域名的查询主域名权限,因为不添加后面步骤中使用的软件无法查询二级域名的主域名
  • shangyexin.com域名的所有权限
{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "alidns:GetMainDomainName"
            ],
            "Resource": "acs:alidns:*:*:domain/*",
            "Effect": "Allow"
        },
		{
            "Action": "*",
            "Resource": "acs:alidns:*:*:domain/yasin.store",
            "Effect": "Allow"
        }
    ]
}

更多详情可以参考阿里云官方文档:
点我

3.创建新的AccessKey

用户和权限都已经创建好后,我们就可以添加AccessKey,点击用户名后,点击最下面的AccessKey,会出现下面的提示:

请及时保存或发送 AccessKey 信息至对应员工,弹窗关闭后将无法再次获取该信息,但您可以随时创建新的 AccessKey 。

意思这个AccessKey只能在创建时被看到,后面无法看到,所以我们需要将创建得到的的AccessKey保持下来,以给下面的软件使用。

一个典型的AccessKey(已失效)如下:

AccessKey ID LTAI4Fc4Rresd6uUdgt9w9Cq
AccessKeySecret 40wgnfmCWVxcTXQT2xgP86hz5Y9dSe

三、DDNS软件配置

(一)软件介绍

这里使用的是这个开源软件,项目地址:https://github.com/NewFuture/DDNS

原因是支持多平台和多服务商,下面是feature的简介:

  • 兼容和跨平台:
    • 可执行文件(无需 python 环境)
    • 多系统兼容 cross platform
    • python2 和 python3 支持 PyPI - Python Version
    • PIP 安装 在这里插入图片描述
  • 域名支持:
    • 多个域名支持
    • 多级域名解析
    • 自动创建新记录
  • IP 类型:
    • 内网 IPv4 / IPv6
    • 公网 IPv4 / IPv6 (支持自定义 API)
    • 自定义命令(shell)
    • 正则选取支持(@rufengsuixing)
  • 网络代理:
    • http 代理支持
    • 多代理自动切换
  • 服务商支持:
    • DNSPOD
    • 阿里 DNS
    • DNS.COM(@loftor-git)
    • DNSPOD 国际版
    • CloudFlare(@tongyifan)
    • HE.net(@NN708) (不支持自动创建记录)
    • 华为云(@cybmp3)
  • 其他:
    • 可设置定时任务
    • TTL 配置支持
    • 本地文件缓存(减少 API 请求)

(二)软件使用

1.配置与运行

我这次机器装的是Windows系统,所有使用的是exe程序,下载后直接运行即可。

如果下载较慢的话可以使用下面的地址,是2.9.2版本:

下载地址:https://yasin.store/s/YB2XSHXXFBK8ksA

可以直接双击运行,但是建议使用Windows系统的cmd命令,在命令窗口手动输命令运行,这样可以看到打印的日志。

首次运行会在同级目录自动生成一个名为config.json的模板配置文件。我们需要将里面的内容改成我们自己的配置,因为这次使用的是阿里云,参考配置如下:

{
  "$schema": "https://ddns.newfuture.cc/schema/v2.8.json",
  "debug": false,
  "dns": "alidns",
  "id": "LTAI4Fc4Rresd6uUdgt9w9Cq",
  "index4": "public",
  "index6": "default",
  "ipv4": [
    "test.shangyexin.com"
  ],
  "ipv6": [
  ],
  "proxy": null,
  "token": "40wgnfmCWVxcTXQT2xgP86hz5Y9dSe",
  "ttl": null
}

记得将id
token替换为上一步你在阿里云上保存的AccessKeyAccessKeySecretipv4替换为你自己需要解析使用的域名。

出现错误时建议将debug选项调为true以获取更多信息,config.json更详细的配置可以参考Github上的项目说明。

配置后直接运行软件(配置文件选择你自己的实际路径):

ddns -c path/to/config.json

如果配置正确的话,你就可以登录阿里云控制台,发现新的域名已经添加成功。

2.定时任务

①bat脚本

下载 create-task.bat于相同目录,以管理员权限运行。

因为文件很小,我们可以直接新建一个txt,将后缀名改为bat,添加下面的内容并保存:

create-task.bat脚本

@ECHO OFF
REM https://msdn.microsoft.com/zh-cn/library/windows/desktop/bb736357(v=vs.85).aspx

SET RUNCMD="%~dp0ddns.exe" -c "%~dp0config.json" >> "%~dp0run.log"

SET RUN_USER=%USERNAME%
WHOAMI /GROUPS | FIND "12288" > NUL && SET RUN_USER="SYSTEM"

ECHO Create task run as %RUN_USER%
schtasks /Create /SC MINUTE /MO 5 /TR "%RUNCMD%" /TN "DDNS" /F /RU "%RUN_USER%"

PAUSE

意思每5分钟检查运行一下程序,这样如果IP变化的话,就会更新DNS解析。

停止定时任务delete-task.bat:

ECHO delete task DDNS

schtasks /delete /TN "DDNS" /f
②Windows计划任务

也可以右键我的电脑,选择管理-->任务计划程序-->创建任务自定义更详细的计划任务,这里不多做解释。

四、END

Enjoy it now.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows使用阿里云RAM访问控制API实现自建DDNS动态域名解析 的相关文章

  • 【Java】之Java8新特性

    Java 基础系列的笔记终于完成了 x1f389 x1f389 x1f389 目录 一 Lambda 表达式 1 Lamdba 表达式概述 2 使用 Lambda 表达式前后对比 3 怎样使用Lambda表达式 4 Lamdba表达式总结
  • 【Docker】基础使用

    目录 一 Docker简介 二 Docker核心概念 三 Docker安装 四 Docker常用操作 1 镜像操作 2 容器操作 3 安装MySQL 一 Docker简介 Docker 是一个开源的应用容器引擎 xff0c 基于Go 语言并
  • ASP.NET MVC | 简介

    目录 前提 1 教程 2 MVC 编程模式 最后 前提 在学习学过很多课程 xff0c 但是最主要学的还是ASP NET MVC这门课程 xff0c 工作也是用的ASP NET MVC xff0c 所以写一点ASP NET MVC的东西 x
  • ASP.NET MVC | 创建应用程序

    目录 首先 NO 1 No 2 App Data 文件夹 Content 文件夹 Controllers 文件夹 Models 文件夹 Views 文件夹 Scripts 文件夹 最后 首先 一步一步的来 xff0c 电脑上需要安装vs20
  • 关于Docker的Debian和Ubuntu镜像

    Debian和Ubuntu都是目前较为流行的Debian系的服务器操作系统 xff0c 在Docker Hub上都可以直接搜索到官方版本 一 搜索Debian 二 搜索Ubuntu Ubuntu相关镜像很多 xff0c 使用 s 参数 xf
  • ASP.NET MVC | 增删改查小项目-MySQL数据库

    目录 前提 数据库和表 完成展示 主页 xff1a Index 添加商品页面 xff1a Add 修改商品页面 xff1a Edit 删除 xff1a Del 代码 No 1 配置MySQL数据库 No 2 初始化数据 No 3 删除操作
  • 用Navicat Premium连接数据库!

    Navicat Premium介绍 Navicat Premium 是一套数据库开发工具 xff0c 让你从单一应用程序中同时连接 MySQL MariaDB MongoDB SQL Server Oracle PostgreSQL 和 S
  • 介绍一款非常好用的截图软件-《Snipaste》

    目录 Snipaste介绍 Snipaste下载 Snipaste功能介绍 总结 Snipaste介绍 非常好用的截图软件 xff0c 一句话 xff0c 非常非常好用 xff0c 比你用过任何的截图软件都好用 xff0c 不好用你顺着网线
  • 推荐一款卸载软件的小工具-《UninstallToo》

    目录 UninstallToo介绍 UninstallToo下载 UninstallToo使用 总结 UninstallToo介绍 Uninstall Tool 是一款可以用来替代 添加 删除程序 的工具 它允许您显示隐藏的安装程序 xff
  • 【MySQL】下载(超详细教程)

    目录 First 下载 Second 安装 Third 检测是否安装 Last 总结 First 下载 首先 xff0c 我们一步一步跟着我的操作来 xff0c 不能越步骤 xff0c 很容易报错 xff0c 就芭比Q了 第一步直接进入这个
  • 【ASP. Net Mvc】毕设之【在线考试项目】

    前提 这个项目是毕设 xff0c 是用asp net mvc和SQL server数据库完成的 xff0c 分为前端和后台 后台功能 xff1a 老师添加试卷 xff0c 上传试卷 xff0c 审核试卷 xff0c 管理学生 前端功能 xf
  • 继承——Person为父类,Teacher和Student都继承Person

    一 题目 按照要求完成以下操作 创建Person xff0c Teacher xff0c Student类 其中 xff0c Person为父类 xff0c Teacher和Student都继承Person Person中有属性 xff1a
  • c语言求数组中10 个整数中最大值

    c语言求数组中10 个整数中最大值 要求在数组中输入10个整数 xff0c 输出最大值 这里先用一种简单的方法 xff0c 创建一个变量max xff1d 0 xff0c 用max与这10个数依次比较 xff0c 如果比max大就把它的值赋
  • c语言详细解答辗转相除法求两个数的最小公倍数

    C语言详细解答辗转相除法求两个数的最小公倍数 1 辗转相除法的用法 最大公约数 辗转相除法是用一个大的数除以一个小的数 xff0c 如果有余数 xff0c 就用被除数 余数 xff0c 如果还有余数就继续用 xff08 上一个公式的 被除数
  • Linux 嵌入式 笔记 NFS网络文件系统

    文章目录 Linux 嵌入式 笔记 提示 xff1a 写完文章后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 文章目录前言一 nfs 相关命令二 原理1 第一点2 第二点 总结 前言 注意 xff1a
  • linux下cpu锁定频率以及频率设置

    linux下cpu锁定频率以及频率设置 环境如下 ubuntu22 04cpu为5700g 前期准备 使用工具为 xff1a cpufrequtils span class token function sudo span span cla
  • CentOS7安装xrdp(windows远程桌面连接linux)

    前提 CentOS安装桌面 xff0c 如果无桌面 xff0c 请执行 xff1a yum y groups install 34 GNOME Desktop 34 startx 方法一 配置源 yum install epel y 安装x
  • Linux CPU超频设置

    查看当前cpu运行频率 xff1a cat proc cpuinfo grep i cpu mhz 开始设置 xff1a cpupower c all frequency set g performance 或者 cpupower freq
  • Ozone调试经验总结

    如何查看内存 view gt memory打开内存窗口即可查看 如何读写内存 Target ReadU32 addr Target WriteU32 addr value 遇到不会的 xff0c 可以使用help命令找找看
  • 元宇宙创作者必备技能TouchDesigner

    元宇宙的资源清单又更新啦 github com shadowcz007 awesome metaverse 感谢ML211 提供线索metaworld app 感谢ML1462 提供线索 The Sims Resource opus Git

随机推荐

  • 栈的入栈和出栈的顺序规律

    栈的入栈和出栈的顺序规律是先进后出 xff0c 所以出栈的可能数目跟入栈的可能排列数目是一致的 a的出入有2中可能 xff0c b的出入有2种可能 xff0c c的出入有2种可能 xff0c d只需要关系入 xff0c 只有一种可能 所以出
  • TCP和UDP协议发送数据包的大小

    在进行UDP编程的时候 我们最容易想到的问题就是 一次发送多少bytes好 当然 这个没有唯一答案 xff0c 相对于不同的系统 不同的要求 其得到的答案是不一样的 这里仅对像ICQ一类的发送聊天消息的情况作分析 xff0c 对于其他情况
  • Nodejs开发:如何让node app的程序一直运行?

    情境 运行nodejs的程序 xff0c 使用命令 xff1a node xxx js xff0c 但是关掉终端 xff0c 程序也关闭了 xff0c 如何让node app的程序一直运行 xff1f 解决 1 安装forever npm
  • Godot基础教程02:全都是节点

    在这里先劝退一波人 xff1a 本教程只会涉及2D内容 xff0c 不会涉及3D内容 创建节点 接上一章 xff0c 在左侧的场景面板中 xff0c 可以看到 xff1a 由于本教程只讲2D内容 xff0c 所以这里我们应该选择2D场景 x
  • docker安装gitlab-ce镜像,使用其他端口,亲测可用

    首先鄙视一下那些直接复制粘贴当自己博文的 xff0c 误导别人 xff0c 害我改了好久T T 安装步骤 xff1a 创建数据目录 mkdir p data gitlab config mkdir p data gitlab logs mk
  • iOS 录音,播放,转码MP3,上传语音文件

    语音文件 AVAudioRecorder recorder NSTimer timer NSString urlPlay BOOL isPlay pragma mark 61 61 61 61 61 61 61 61 61 语音文件 61
  • CentOS使用yum安装MySQL5.7报检索密钥错误解决方法

    在CentOS上使用yum安装MySQL时检索密钥错误的解决方法 参考 使用yum安装MySQL时报错 yum y install mysql mysql server yum y install mysql community serve
  • 安装django

    使用pip安装 pip install django 61 61 span class hljs string 39 1 8 39 span 检查django版本 python c span class hljs string 39 imp
  • python,pycharm报错 ModuleNotFoundError: No module named PIL最简单的解决方法

    python pycharm报错 ModuleNotFoundError No module named 39 PIL 最简单的解决方法 1进入cmd命令 2输入pip install Pillow即可 如图 如果对你有帮助 xff0c 请
  • docker中使用Ubuntu中文乱码问题解决

    一 前言 最近在docker中使用Ubuntu作为编译环境 xff0c 遇到了中文乱码情况 xff0c 分为不同的解决场景 xff0c 下面分别给出解决方法 下面的方法都不是将系统的语言修改为中文 xff0c 而是能够正确显示和输入中文 g
  • 在docker的centos镜像中使用systemctl启动slapd服务报错

    前言 使用docker搭建服务环境 xff0c 拉取了一个Centos7镜像 xff0c 在镜像中使用systemctl命令启动sladpd服务 xff0c 已经使用 privileged 61 true启用特权模式 xff0c 但还是报错
  • 逻辑卷管理器(LVM)

    一 什么是LVM xff1f LVM Logical Volume Manager 逻辑卷管理是在Linux2 4内核以上实现的磁盘管理技术 它是Linux环境下对磁盘分区进行管理的一种机制 现在不仅仅是Linux系统上可以使用LVM这种磁
  • Ubuntu使用Docker搭建编译环境完整教程

    前言 因为只有一台编译服务器 xff0c 但是我们需要在服务器上搭建不同的编译环境 xff0c 不同的编译环境区别巨大 xff0c 甚至可能需要是不同的Ubuntu版本 xff0c 所以我们可以使用Docker xff0c 搭建不同的编译环
  • 最新Gerrit2.16.15版本用户指南-中文文档

    这是为Gerrit最终用户准备的Gerrit指南 它说明了标准的Gerrit工作流程以及指导用户可以根据个人喜好来设置并使用Gerrit 为了更好地理解本指南 xff0c 读者最好了解Git xff0c 并熟悉基本的git命令和工作流程 什
  • Ubuntu 14.04安装Sambaf服务并设置为开机启动

    1 需求 我的需求是将Ubuntu服务器上的用户目录 xff08 比如 home yasin xff09 映射给Windows访问 xff0c 这样就可以在Windows下编辑代码 xff0c 修改完成后在Linux环境编译 2 安装 sp
  • Git Commit message编写指南

    一 Commit message 的作用 格式化的Commit message xff0c 有几个好处 1 提供更多的历史信息 xff0c 方便快速浏览 比如 xff0c 下面的命令显示上次发布后的变动 xff0c 每个commit占据一行
  • Windows下写代码并使用 SSHFS快速部署到 Linux 进行调试

    前言 很多时候 xff0c 因为不熟悉vim或者更喜欢Windows下的一些IDE xff0c 我们需要在Windows写代码并部署到Linux服务器上进行调试 相信很多程序员都有这个需求 xff0c 也有很多自己的解决方法 常见的有使用G
  • Android开发——java.lang.SecurityException: Permission Denial

    记录一个在日常开发当中遇到的错误 xff1a java lang SecurityException Permission Denial startForeground from pid 61 2345 uid 61 10395 requi
  • OpenWrt打开和关闭指定端口shell脚本

    最近使用小米路由器插件Misstar Tools xff0c 因为它在小米路由器3上使用的端口为1024 xff0c 而且没有密码 xff0c 所以把这个端口暴露在公网上就非常不安全 但有时候我们确实就想在公网上使用这个插件 xff0c 比
  • Windows使用阿里云RAM访问控制API实现自建DDNS动态域名解析

    前言 因为最近将家里的电信宽带换成了公网IP xff0c 在二手鱼上面淘了点破烂 xff0c 搭建了一些服务 xff08 比如NAS xff09 而电信的公网IP并不是固定的 xff0c 要想持续稳定的访问到搭建的服务 xff0c 我们可以