使用泛域名解析到公网 IP 后,公网 IP 发生变化需要更新。

DDNS 更新服务不是有难度的技术,不论是路由器 Router 还是网络储存服务器 NAS,或者很多第三方脚本(比如 Python 脚本)。

Golang 语言性能和稳定兼具,看上去是个不错的选择,比如 Godns 就是一个 Go 实现的 DDNS 自动检测和更新服务。

具体部署方案,在 Nicky 的 《利用GoDNS和DNSPod设置DDNS 》里已经有详细记录。

关于下载方案,转载、摘要、编辑如下:

1、通过 https://github.com/TimothyYe/godns/releases 下载最新版。

1
2
3
4
5
mkdir /usr/local/godns
cd /usr/local/godns
wget https://github.com/TimothyYe/godns/releases/download/V1.6/godns-linux64-1.6.tar.gz
wget -N --no-check-certificate https://raw.githubusercontent.com/TimothyYe/godns/master/config_sample.json
wget -N --no-check-certificate https://raw.githubusercontent.com/TimothyYe/godns/master/systemd/godns.service

2、解压文件,配置文件重命名。

1
2
tar zxvf godns-linux64-1.6.tar.gz
mv config_sample.json config.json

3、修改config.json文件。

特别的,比如要更新根域名和泛域名,可以使用 @ 和 *

1
2
3
4
5
6
7
{
"login_token": "your_id,your_token",
"domains": [{
"domain_name": "YOURDOMAIN.com",
"sub_domains": ["@","*"]
}],
}

然后就可以运行

./godns

4、开机自启动

正常的 Linux 就直接放 crontab 或者启动服务就好了。

然,在类似群晖 NAS 的 DSM (修改版 linux)系统中,没有 crontab 可以用(就算启用了,下一次重启也会被清除无效)。

所以只有变通的方法,可以参考 群晖开机自动运行frpc脚本

主要修改:

创建启动脚本:

vim godns.sh

按 i 后输入:

1
nohup /usr/local/godns/godns -c /usr/local/godns/config.json >> /usr/local/godns/output.log 2>&1 &

按 ESC,输入 wq 保存退出。

赋予启动权限:

chmod +x godns.sh

将脚本文件写入启动文件中

vim /etc/rc

在文件的倒数第二行(exit 0前面)添加下面的脚本文件路径,可使用 :$ 跳转到最后一行

/YOURPATH/godns.sh

重启群晖系统 reboot


UPDATE

Dodns 有个日志文件过大问题,需要单独处理。