Site Loader

  本文介绍如何利用DNSPOD实现动态域名的解析,也可参照本站文章《Linux下实现自有域名DDNS动态域名解析-ALIDDNS篇》,来了解一下如何通过阿里云实现动态域名的解析。

更新于:2020年1月3日

  由于公网IPv4地址资源的稀缺,以及IPv6暂未全面普及的情况下,一般企业或家用宽带所用到的公网IP地址多为动态IP,意即运营商所分配给用户的公网IP地址是非固定的,每次拨号或在一定时限内,IP地址会作出变动。

  甚至,用户所分配到的地址为运营商的局域网IP地址,通过运营商的NAT设备上网,多用户共用一个公网IP。

  本文所讨论的是非固定公网IP,固定公网IP及运营商局域网IP不在本文讨论范围内。

  对于运营商局域网IP,以后有机会再另文讲述内网穿透的实现过程。

  在日常的使用过程中,我们会通过远程连接路由器或内网服务器等设备进行操作,或者通过公网使用内网服务,如Nextcloud、web、ftp等。

  由于非固定公网IP的不确定性,我们只能借助DDNS动态域名解析服务,能提供免费DDNS服务的运营商有很多,这里不一一列举,而大部份宽带路由器也具备DDNS的设置项,申请一个DDNS动态域名,或在路由器上设备解析即可。

但使用免费的DDNS有如下问题:

  • 稳定性不如域名注册商的域名解析,有时会出现抽风的情况,导致域名无法解析;
  • 所注册的域名多为DDNS服务商提供的二级域名,形如yourname.domainname.com,没有域名自主权。

  那有没有既能使用自有域名,又能稳定实现DDNS解析的方法呢?答案是有的!

在操作前,请先作如下准备:

  • 有自己注册的一级域名,形如himstudy,net9yaoquan.com,注册商的选择可按自己喜好决定,但有一个先决条件,服务提供商允许修改域名的DNS服务器 。
  • DNSPOD注册一个帐号,DNSPOD现时已收归腾讯麾下,理论上腾讯云的帐号可在DNSPOD上使用。

  应用场境如下图,笔者在内网部署了一台Nextcloud服务器,宽带使用拨号方式,动态公网IP,通过路由器端口映射,使用自有注册域名从公网访问内网Nextcloud服务器。

Nextcloud服务器操作系统使用Ubuntu Server,本文主要讲述在Ubuntu下的实现方法,其它Linux系统实现方法同理。

实现原理及步骤如下:

  1. 将域名的DNS服务器修改为DNSPOD的DNS服务器
  2. 在DNSPOD的安全设置中创建一个API Token
  3. 在DNSPOD的域名解析中添加域名
  4. 域名下添加A记录
  5. 下载DDNS脚本
  6. 把API Token参数、A记录等信息填入脚本配置文件中
  7. Linux服务器运行脚本,通过DNSPOD的API更新A记录,达到更新IP的目的
  8. 定时执行脚本

1. 将域名的DNS服务器修改为DNSPOD的DNS服务器(如域名是在腾讯云注册的,不用更改)。

  登录域名管理后台,修改域名的DNS服务器,分别填入f1g1ns1.dnspod.net和f1g1ns2.dnspod.net,点击确认并生效。

通过以上修改后,意味着域名的A记录、CNAME、MX等一系列的解析工作将必须通过DNSPOD设定并完成。

2. 在DNSPOD的安全设置中创建一个API Token

  点击【创建API Token】,Tokens名称可自行定义。

  点击【确定】后,会显示所创建的API Token的名称、ID、Token、创建时间等信息,请务必拷贝保存或记下。

3. 在DNSPOD的域名解析中添加域名

  在域名解析中添加域名(按上面操作已更改DNS服务器的域名),【确定】保存。

  点击域名进行添加记录操作,第一次进入会对域名的DNS服务器进行扫描,检查DNS服务器是否已更改为DNSPOD的DNS服务器。

4. 域名下添加A记录

  添加一个A记录,主机记录为cloud,亦即访问的域名形式为cloud. domainname .com,主机记录按自己需要定义,记录值可先随便输入一个IP,这里输入一个局域网IP,最后点击【保存】。

5. 下载DDNS脚本

  进入https://github.com/anrip/dnspod-shell, 下载ardnspod和ddnspod.sh两个文件

6. 把API Token参数、A记录等信息填入脚本配置文件中

  修改ddnspod.sh文件,把创建API Token时生成的ID、Token值,以及域名、A主机记录填入配置文件的相关位置。

参照格式如下:

  arToken=”ID号,Token值”

  arDdnsCheck “域名” “A主机记录”

  调用ardnspod的路径是绝对路径,脚本范例是 . /your_real_path/ardnspod,将目录改为你存放ardnspod的绝对路径。

7. Linux服务器上运行脚本,通过DNSPOD的API更新A记录,达到更新IP的目的

  把 ardnspod和ddnspod.sh上传到ubuntu服务器,放置目录自定,本例放到/var/ddnspod下。

  ssh连接服务器,赋予脚本执行的权限

chmod +x /var/ddnspod/ddnspod.sh

  进入/var/ddnspod目录,执行脚本

cd /var/ddnspod
./ddnspod.sh

  出现如下信息

  再看看DNSPOD的域名解析A记录,主机记录同样更改了。

  浏览器输入【http://域名:路由器映射端口】,成功访问Nextcloud。

8. 定时执行脚本

  按以上步骤,已可以实现自有域名DDNS动态域名解析。

  如果公网IP动态作出变更怎么办呢?我们也不可能时刻盯着,手动执行脚本。

  办法很简单,只需在服务器上定时执行DDNS脚本即可,具体操作如下:

  root用户编辑定时任务

sudo -s
crontab -e

  未尾添加如下任务行,意思是每15分钟执行一次ddnspod.sh脚本,时间间隔可按自己需求设定,保存并退出。

*/15 *  * * *   /var/ddnspod/ddnspod.sh

任务前有5个“*“号,分别代表分钟、小时、天、月、星期,具体使用方法可上网搜一下。

  重启cron服务,使定时任务生效

service cron restart

  至此,已完美实现自有域名DDNS动态域名解析。