DDNS Demo

DDNS Demo

这里尝试搭建一个DDNS的demo环境,来展示DDNS的使用。

本文主要参考如下链接

使用的测试机是本地ubuntu虚拟机;

使用的DDNS工具是ddns-go

安装docker并部署ddns-go

安装docker:

curl -fsSL https://test.docker.com -o test-docker.sh

sudo sh test-docker.sh

在docker中部署ddns-go

docker run -d --name ddns-go --restart=always -p 54321:9876 -v /opt/ddns-go:/root jeessy/ddns-go

这里配置的是服务器的54321端口,映射到容器内部的9876端口。这里54321端口可以按需修改。

进行配置

浏览器访问我这台虚拟机内网IP的54321端口:http://10.55.4.18:54321/,得到如下界面

我当前测试域名的DNS服务商是Cloudflare,下面选择Cloudflare进行配置。

配置Cloudflare Token

登陆Cloudflare管理平台,创建令牌。

复制并保存好得到的API token。

然后回到ddns-go配置页面,进行如下配置:

配置域名

我计划使用的测试域名为ddns.yushuoxin.online。

请留意:无需在Cloudflare的DNS管理中手动新增域名该域名;在ddns-go完成正确配置后,它会自动新增该域名。

在ddns-go配置页面进行如下配置,其中Domains的填写格式在页面中有说明。

设置公网访问

我这里是在虚拟机里配置的,而且我当前网络的出口,运营商也没有给我提供公网IP,所以我这里配置允许公网访问应该也没有用,除非有配置类似内网穿透的功能。

配置Webhook

我这里先不配置这部分,具体配置方法,可参考官方链接

然后点击“Save”保存配置。

验证

功能性测试

此时在ddns-go页面中点击“日志”,可查看log,如下图。

然后到Cloudflare的DNS管理页面中,可以看到相关条目已完成配置。

此时,在公网进行DNS解析的话,可以看到域名解析已经生效了。

切换速度测试

下面尝试切换我本地互联网出口测试下公网IP地址的变更。

我通过openVPN让我测试机的出口IP变为另一个。

此时查看ddns-go的log,可以看到系统探测到了变化,并更新了域名解析。

公网域名解析也变过来了。

2023年12月29日11:47再次改回之前公网IP;

系统在11:49探测到了变化,并更新了域名解析;

用时约2分钟。

2023年12月29日11:51再次变更;

系统在11:54探测到了变化,并更新了域名解析;

用时约3分钟。

后续出口IP没有变化,log如下图;

看起来系统是5分钟探测一次IP是否变化;

5分钟*(5+1)=30分钟进行一次目前IP和当前的DNS解析的比对。

在当前配置下,出口IP若有变更,系统至多需要5分钟探测到,并进行DNS配置变更。

总结

本次demo,我们通过docker部署了ddns-go;

ddns-go会探测本机当前的公网IP;

然后通过API的形式更新到Cloudflare的DNS解析中。

不过由于我当前环境的公网IP是配置在运营商设备上被共享的,中间经过数次NAT,所以我还无法通过当前公网IP或域名访问我的内网资源;

这部分涉及到内网穿透,以后有机会再做尝试。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注