因为家里有NAS服务器,所以很多时候在外面的时候需要访问家里的服务器网络,比如在单位通过同步软件可以同步家里电脑和单位电脑上的文件,再如在外面的时候我可以播放家里NAS的电影或视频等,正因为这样,所以免费申请了电信宽带的公网IP,虽然上行不高,才50M,但是对于主要用来同步文件的我来说已经足够了。

        公网IP,顾名思义,即将自家的路由器的地址暴露在公共的网络上,只有这样,你才能通过IP地址访问到自己的路由器,然后通过路由器的端口映射再转发访问到自己的服务器或电脑上。因为不是固定IP,所以这个公网IP是不定时的变动的,所以通过域名访问是最方便也是最容易记忆的。我们唯一要做的就是将自己的域名和这个变动的公网IP联动起来。幸好我在阿里云上注册了域名,也就是我们这个笔谈的域名(rehope.cn),而阿里云的域名支持DDNS动态域名的功能,所以这个时候我们可以利用这个功能和我自己的公网IP绑定起来,当公网IP变动的时候,自动刷新到我的域名上,对于我来说,唯一要记忆的就是我的域名就可以了。

        实现的方法很多,如果你用锐捷的路由器,他自身就带有阿里云DDNS的客户端功能,如果你是其他的硬路由,你可以通过旁路由比如OpenWRT来安装DDNS-GO或其他插件来实现。因为我目前使用Mikrotik这个软路由,所以下面的操作也是基于RB5009来的。实现方式也有2种,第一种是通过docker安装DDNS-GO或其他支持Aliyun的插件,第二种是通过脚本来实现。个人觉得通过脚本这个相对比较轻便。下面开始我们的实现方式。

        一、获取阿里云修改DNS的AccessKey

        首先我们需要登录阿里云的域名管理界面,鼠标滑倒右上角的用户图标处,就可以出现如下的下拉菜单,

    image.png

    我们点击里面的AccesssKey,从里面新创建一个用户,用户名和显示名称根据自己的需要进行填写,访问方式只选择OPENAI调用访问即可,如下图

image.png

        创建用户之后,为了安全起见,我们对该用户添加权限,这个时候,我们点击添加权限,查找并选中其中的AliyunDNSFullAccess这个权限,这样的话,我们通过AccessKey就只有修改DNS相关的权限。

    image.png

        如下图框,一共有3种方式获取到AccessKeyID和AccessKey Secret,这个相当于用户名和密码,这个请妥善保管,因为别人可以用这个内容来修改到你的域名。将AccessKey的内容记录下来备用。

    image.png

        二、添加自定义的二级域名

        我们进入阿里云的域名管理的域名解析,点击添加记录,记录类型选中A,主机记录即输入你想要访问的二级域名(比如我想通过henry.rehope.cn来访问,这里我只要填入henry就可以),记录值随便输入一个IP地址即可。其他默认。

    image.png

        添加成功后,我们可以在域名列表中看到这个记录,这个时候,记录值是10.10.10.10,我们通过域名其实访问不到的,因为这个IP地址是随便输入的一个地址,当然你添加记录的时候,你可以输入你目前的公网IP地址,这样的话,你可以通过henry.rehope.cn访问你家的路由器了,记录如下

    image.png

        三、编辑脚本并添加到ROS里面去

        我们可以通过GitHub - vibbow/routeros-ddns-script: RouterOS DDNS 脚本或者RouterOS 阿里云/腾讯云 DDNS 脚本 | Bosheng 的网络技术分享 (vsean.net)获取到阿里云或腾讯云的DDNS脚本,这个脚本支持ROS的IPv4和IPv6版本,我喜欢用IPv4,所以我下载了IPV4的版本就可以ddns.txt

        我们用文本编辑软件打开这个下载的文件,根据提示修改开头的五个变量,其中WanInterface这里填写ROS里面Interface菜单里接入网络的那个网卡的名称,其他不变: 

    image.png

        修改完毕后,我们全选复制,进入到ROS系统里面,点击左边的System的Scripter菜单,将刚复制的脚本内容复制到弹出窗体的Source栏。

        修改Name为aliyun-ddns(自定义),然后点击Run Script,就搞定了。

    image.png

        四、定时执行DDNS脚本

        点击System菜单下的Schedule,新建一个定时器,在名称里面输入一个比较容易分辨的名称,然后在On Event框里输入刚刚建立基本的名称,在Interval这里输入定时执行的时间间隔,我打算10分钟执行一次,所以在分钟那里改成10即可。如下图:

        image.png

        所有的设置工作已经完成,        最后我们测试下我们DDNS是否成功,Bingo!

    image.png