这几天在家里用树莓派搭建了一个家庭服务器,主要当做 Mac Time,也可以当做下载器和 NAS。想着上班时间家里没人上网,可以利用闲置的带宽下载美剧。于是在服务器上装了一个远程迅雷和迅雷。这些网上教程一大堆,跟着教程走很快就搞定了。
但是我遇到的问题是家里的宽带没有固定IP,如果路由器断线重连就会被分配不同的IP,一旦换IP就无法通过外网连接服务器了。之前试过把花生壳绑定到路由器上,但是实际效果不是很好,对花生壳的动态更新机制也不是很清楚,试了好几次,家里网络的IP都更新了,但是花生壳却没有及时更新。
花生壳的解决办法不管用,只好另想办法了。与此同时,我也了解了花生壳能动态解析域名的原因,原来是利用了DDNS服务。关于DDNS,网上的解释是:
DDNS(Name)是动态域名服务的缩写。
DDNS将用户的动态IP地址映射到一个固定的域名解析服务上。每次用户连接网络时,客户端程序都会通过信息传输的方式,将主机的动态IP地址传送给位于服务商主机上的服务器程序。服务器程序负责提供DNS服务,实现动态域名解析。——百度百科
这不正是我需要的功能吗?刚好我也有一个域名,是在阿里云上注册的,于是我就去阿里云上看看有没有动态域名解析的服务,果然在网站上找到了修改解析记录的API文档。
由于我擅长Java(其实是我唯一擅长的),所以我下载了他们的JAVA SDK,申请后很快就成功连接了。不过感觉用Java对Linux服务器进行更新好像是一件很底层的事情,正常的使用方式应该是用脚本,正好最近在自学,所以就一边学习一边用脚本来实现。
好了,上面都是废话,下面进入正题。
1.首先你需要有一个阿里云域名
2. 在阿里云管理控制台申请
3.下载SDK。SDK主要给我们封装了一些数据格式转换和对接的方法,可以方便我们快速接入。当然如果你足够厉害,也可以全部自己写。
4.执行访问操作。我的主要思路是先去阿里云获取运行脚本时绑定域名的IP地址,然后
对比当前服务器IP地址,如果IP相同,说明没有变化,不需要操作,如果IP不同,则修改域名绑定的IP地址。
5. 服务器部署。在服务器上设置一个计时器,让服务器定期执行脚本。设置计时器的 Linux 命令:
-e
需要注意的几点:
1.请记得妥善保管你的Key,所以我没有把Key Id和Key直接写在我的代码里,我把它们单独放在一个key.json文件中,并且从git中排除了这个文件,保证只有我知道,因为一旦这两个值泄露,别人就可以直接修改你的域名。
2.阿里云使用 来区分每一条域名解析记录,但是他们之前的文档对于这个参数只描述了“解析记录ID”,并没有描述如何获取这个解析记录ID。我在阿里云控制台上找了好久都没找到。后来突然想起SDK上有一个获取域名信息的API,尝试了一下发现返回的信息里确实有这个字段。后来联系了他们的客服,他们也说在控制台上找不到,只有通过API获取域名信息才能找到。后来他们在文档里也注明了如何获取这个字段。
3、更新域名解析,主要用到阿里云SDK包里的方法/api/rest/.py,为了偷懒,我直接把一些需要固定的参数写在这个方法里,如果要自己解析域名的话,记得修改这些参数值。
4. 我已经把这个项目发布在了 ,有需要的可以去使用,也欢迎大家留言交流,地址
扫一扫在手机端查看
-
Tags : 阿里云 隐性 域名解析 ip
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。