个人Blog · 2024年1月24日 0

NAS系统折腾记 – DDNS设置

到现在为止,我们已经为黑群晖NAS申请了域名和数字证书,接下来就是怎样搞定DNS把域名解析到NAS让它正式开始为我服务了。由于一般家用宽带都只提供动态的公网IP,传统的DNS服务就没法解决问题了,我们需要使用到DDNS。

什么是DDNS?

DDNS(Dynamic Domain Name Server)是动态域名服务的缩写。DDNS是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现动态域名解析。

DDNS

也就是说DDNS捕获用户每次变化的IP地址,然后将其与域名相对应,这样其他上网用户就可以通过域名来进行交流。而最终客户所要记忆的全部,就是记住动态域名商给予的域名即可,而不用去管他们是如何实现的。动态域名服务的对象是指IP是动态的,是变动的。普通的DNS都是基于静态IP的,有可能是一对多或多对多,IP都是固定的一个或多个。但DDNS的IP是变动的、随机的。

DDNS服务提供商有很多,国外有DynDNS, freeDNS, ChangeIP等,国内则有花生壳等。群晖也提供自己的DDNS服务QuickConnect。但由于我是DIY的黑群晖,国内无法使用群晖的QuickConnect。

DDNS-GO安装

在评估了几个DDNS方案后,最后我决定用DDNS-GO docker来解决我的NAS域名解析的问题。

先在DSM container manager的“注册表”里搜索ddns-go,并选择jeessy/ddns-go镜像下载安装,安装latest版本即可。

下载jeesy/ddns-go

然后在“映像”里选中jeessy/ddns-go并运行。

运行ddns-go

在“常规设置”界面中设置容器名称,按照系统实际情况设置“启用资源限制”并勾选“启用自动重新启动”。点击下一步。

常规设置

在“高级设置”界面中,设置网络为“host”,其它均保持缺省不变,点击“下一步”。

高级设置

勾选“向导完成后运行容器”,点击“完成”。

完成设置并运行

进入container manager的容器界面,查看刚才创建的ddns-go容器是否已经正常运行。如果正常运行,就可以通过局域网的任意机器访问NAS的9876端口来配置DDNS了。

DDNS-GO配置

局域网内通过浏览器访问http://nas_ip_address:9876来配置DDNS-GO。

我使用的是cloudflare DNS服务,所以DNS服务商选择Cloudflare,并在Token输入框中填入Cloudflare的API令牌。关于申请Cloudflare API令牌的步骤请参考这个文档。

选择启用IPv4还是IPv6,或者两个都启用。我这里启用了IPv4,获取IP方式设置为通过接口获取。另外把需要解析的域名填入Domains输入框中,一行一个域名。我通过DDNS共解析了两个子域名:nas.yanghong.dev和ros.yanghong.dev。其它的设置可以保持不变然后点击“Save”来保存。

到这里DDNS-GO设置就已经完成了。稍等片刻查看DDNS-GO日志,看到如下的信息就表示DDNS域名解析已经成功了。

DDNS解析域名成功

这时候通过任意一台电脑ping自己解析的域名,应该就能成功ping通了。

ping nas.yanghong.dev -c 3
PING nas.yanghong.dev (xxx.xxx.xxx.xxx) 56(84) bytes of data.
64 bytes from xxx.xxx.xxx.xxx (180.158.7.106): icmp_seq=1 ttl=64 time=0.811 ms
64 bytes from xxx.xxx.xxx.xxx (180.158.7.106): icmp_seq=2 ttl=64 time=0.383 ms
64 bytes from xxx.xxx.xxx.xxx (180.158.7.106): icmp_seq=3 ttl=64 time=0.368 ms

--- nas.yanghong.dev ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 13ms
rtt min/avg/max/mdev = 0.368/0.520/0.811/0.207 ms