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或域名访问我的内网资源;
这部分涉及到内网穿透,以后有机会再做尝试。
发表回复