
本文介绍如何利用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,net、9yaoquan.com,注册商的选择可按自己喜好决定,但有一个先决条件,服务提供商允许修改域名的DNS服务器 。
- 到DNSPOD注册一个帐号,DNSPOD现时已收归腾讯麾下,理论上腾讯云的帐号可在DNSPOD上使用。
应用场境如下图,笔者在内网部署了一台Nextcloud服务器,宽带使用拨号方式,动态公网IP,通过路由器端口映射,使用自有注册域名从公网访问内网Nextcloud服务器。
Nextcloud服务器操作系统使用Ubuntu Server,本文主要讲述在Ubuntu下的实现方法,其它Linux系统实现方法同理。

实现原理及步骤如下:
- 将域名的DNS服务器修改为DNSPOD的DNS服务器
- 在DNSPOD的安全设置中创建一个API Token
- 在DNSPOD的域名解析中添加域名
- 域名下添加A记录
- 下载DDNS脚本
- 把API Token参数、A记录等信息填入脚本配置文件中
- Linux服务器运行脚本,通过DNSPOD的API更新A记录,达到更新IP的目的
- 定时执行脚本
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动态域名解析。