利用阿里云OpenAPI搭建DDNS动态域名解析服务

前段时间,在自用的MacBook Pro虚拟机上搭了个传奇网页游戏自己玩,但最初只能在同一个WiFi的网络才能玩。
于是查了下资料,找到了一个利用DDNS动态域名解析服务来进行外网访问家庭服务器的方法。
必要环境:
1、家庭宽带需要公网IP地址;
2、阿里云可正常解析域名一个;
3、可设置虚拟服务器的路由器一台。
本文以CentOS 7系统,主域名yours.pub为例。

首先,登录阿里云,添加一个二级域名解析,如:ddns,记录类型为A,记录值随便填写一个IP地址。在阿里云管理平台页面,鼠标移动到右上角头像处,点击“accesskeys”选项,获取AccessKeyID和AccessKeySecret,建议使用子用户AccessKey,配置管理云解析权限。

然后,登录服务器,安装必要的组件:

yum install -y wget curl cronie

接着下载AliDDNS脚本到服务器:

wget -O /usr/sbin/AliDDNS-v2.0.sh https://dl.lianghg.com/Softs/Linux/AliyunDdns/AliDDNSv2.sh

为脚本文件加上可执行属性:

chmod +x /usr/sbin/AliDDNS-v2.0.sh

执行脚本,开始配置:

/usr/sbin/AliDDNS-v2.0.sh

运行后,会出现以下信息:

 AliDDNS 工具 (阿里云云解析修改工具) 
        
使用方法 (Usage):
AliDDNS.sh run       配置并运行工具 (如果已有配置将会直接运行)
AliDDNS.sh config    仅配置工具
AliDDNS.sh clean     清理配置文件及运行环境
AliDDNS.sh version   显示版本信息


[Info] 选择你要使用的功能: 
 1. 配置并运行 AliDDNS 
 2. 仅配置 AliDDNS 
 3. 仅运行 AliDDNS 
 4. 配置ServerChan微信推送 
 5. 清理环境 
 0. 退出 

输入数字以选择:

输入数字1回车按说明进行配置,按需填入一级主域名:yours.pub、二级域名:ddns,以及AccessKeyID和AccessKeySecret。如果后期更改了AccessKeyID和AccessKeySecret,可执行此脚本,输入数字5回车清理原配置,重新执行脚本,输入数字1回车配置新的信息即可。
配置成功后,会出现以下信息:

[Info] 正在写入配置文件……
[Info] 正在获取本机IP……
[Info] 本机IP:119.xx.xxx.xx
[Info] 正在获取 ddns.yours.pub 的IP……
[Info] 解析结果:ddns.yours.pub -> xxx.xx.xxx.xx
[Info] 正在生成时间戳……
[Info] 正在更新记录……
[Info] 正在获取RecordID……
[Info] RecordID -> 1809xxxxx
[Info] 正在更新解析记录:ddns.yours.pub -> 119.xx.xxx.xx ……
{"RecordId":"1809xxxxx","RequestId":"C18xxxxx"}
[Info] 已经更新RecordID:1809xxxxx
[Success] DDNS记录更新成功,新的IP为:119.xx.xxx.xx

至此,DDNS动态域名解析服务已经可以使用,由于家庭宽带公网IP会随时改变,可以将脚本添加到Crontab定时执行,获取新的IP:

  1. crontab -e
  2. #添加下面这行:*/5 * * * * /usr/sbin/AliDDNS-v2.0.sh run >/dev/null 2>&1 &保存退出编辑
  3. service crond restart
  4. chkconfig crond on

服务器配置完成后,目前还是无法用外网进行访问的,需要配置一下路由器。本人使用的是tp-link wdr6300路由器,自带虚拟服务器软件,设置好端口和虚拟机内网IP,即可用外网访问虚拟机服务器了。
家庭宽带一般封掉了80端口,可以设置443端口,给域名配上SSL证书,这样就可以通过https来访问,网址后面不用带端口号,也美观些。

本文脚本文件来自于@极光星空博客。

发表评论