DDNS动态域名解析服务,家庭宽带ip大多不是固定的,路由因断电重启或者过一段时间,公网ip会变化。这就造成我们在域名服务商那里配置的A记录不一致,在ip变化后自动更新A记录的ip,这就是DDNS。

我使用的是荣耀路由器,打开DMZ主机功能,把迷你主机暴露到公网。
路由器自带的是DDNS是花生壳的服务,配置很简单,注册个花生壳账号,进入控制台把壳域名填进来,还有账号密码,就可以了。

但花生壳的域名是自动生成分配的二级域名,不便于记忆,并不比ip好记。。。

秉着勤俭节约的思想,跟随我白嫖一个顶级域名。

众所周知,freenom是全球著名的唯一的免费顶级域名服务商。
去注册就好了,最长可选1年免费,到期前15天可以再续1年,一直续期一直爽~~

哦,不够爽,如何自动续期呢?

解决方案

https://github.com/mkorthof/freenom-script
选择shell的原因,linux原生支持,不需要安装别的环境,不需要安装别的库,成本最低

修改配置文件freenom.conf

因为运行商的公网ip出口有两个,对国内和国外不同,所以脚本内的获取ip的方式不能用

# 修改freenom_update_dig的值为0,关闭dig
freenom_update_dig="0"

# 修改ttl值
freenom_update_ttl="300"

# 注释掉curl获取ip的方法
#ipCmd+=("curl -%ipv% -A %agent% -m 10 -s https://diagnostic.opendns.com/myip")
#ipCmd+=("curl -%ipv% -A %agent% -m 10 -s https://www.ripe.net/@@ipaddress")
#ipCmd+=("curl -%ipv% -A %agent% -m 10 -s http://ipv6-test.com/api/myip.php")
#ipCmd+=("curl -%ipv% -A %agent% -m 10 -s http://checkip.dns.he.net")
#ipCmd+=("curl -%ipv% -A %agent% -m 10 -s https://cgi1.apnic.net/cgi-bin/my-ip.php")
#ipCmd+=("curl -%ipv% -A %agent% -m 10 -s ipv%ipv%.test-ipv6.com/ip/?callback")
#ipCmd+=("curl -4 -A %agent% -m 10 -s https://checkip.amazonaws.com")

# 添加获取国内出口ip的方法
ipCmd+=("curl -%ipv% -A %agent% -m 10 -s https://4.ipw.cn")
ipCmd+=("curl -%ipv% -A %agent% -m 10 -s https://ddns.oray.com/checkip")
ipCmd+=("curl -%ipv% -A %agent% -m 10 -s https://myip4.ipip.net")
ipCmd+=("curl -%ipv% -A %agent% -m 10 -s http://pv.sohu.com/cityjson")

添加定时任务

sudo crontab -e

# custom this is my test demo
0 9 * * 0 /opt/freenom.sh -r -a
0 * * * * /opt/freenom.sh -u honia.tk;/opt/freenom.sh -u honia.tk -s api