DNS
在了解DDNS之前,首先需要知道什么是DNS,DNS是域名系统(Domain Name System),它是互联网的一个核心服务,负责将容易记忆的域名转换成对应的IP地址。就像我们不可能记住每个朋友的电话号码一样,电脑和其他电子设备也不可能记住所有的IP地址
在浏览器中输入一个网站的域名,比如“www.baidu.com“,这个请求首先会到达本地的DNS服务器,如果它知道这个域名对应的IP地址,那就直接返回结果。如果不知道,它会向上游的DNS服务器请求帮助,直到找到域名对应的IP地址为止
当我们在云服务商购买了一台云服务器,会自动给服务器分配一个固定的公网IP,如果想要通过域名来访问云服务器,需要在通过配置A记录把域名映射到公网IP上,这样DNS服务器中就有了映射关系。当查询DNS服务器的时候,会查询到云服务商的授权DNS服务器中,这就是为什么需要设置A记录的原因
DDNS
DDNS,动态域名系统(Dynamic Domain Name System),它是在DNS的基础上发展起来的一种服务,用来解决动态IP地址的问题
在家庭或者一些特殊的网络环境中,运营商不会给提供静态IP地址,而是提供动态IP地址,这就意味着你的IP地址可能经常变动,一旦IP改变,那么DNS服务器解析自然就会失败,这样就没办法通过域名访问到服务器了
那怎么办呢?DDNS来帮你!在DDNS客户端中配置好域名和IP的映射关系后,它会监控你的IP地址,一旦发现它变化了,就立刻通知DDNS服务器,最后DNS服务器会从DDNS服务器拿到映射关系,所以无论你的IP地址如何变动,通过你的DDNS域名可以随时访问家里的设备
群晖DDNS
现在重新来看群晖的DDNS就能理解他的意思了,群晖是提供了一个DDNS客户端,帮我们监听公网IP的变化,并且群晖默认提供一个域名给我们免费使用
当然也可以添加其他服务商的DDNS服务,但是我们现在知道了,必须要在服务商拥有一个域名才能和IP绑定,所以要设置下拉菜单中的DDNS时就要在对应的平台上拥有一个域名
开源DDNS
但是群晖默认提供的DDNS中没有找到自己需要的提供商怎么办?那就需要第三方的DDNS客户端了,下面以
https://github.com/jeessy2/ddns-goDDNS客户端来进行演示
在Container Manager套件中搜索ddns-go下载最新版本镜像
下载完毕后在映像中运行ddns-go映像。设置端口映射,群晖设置9876端口。容器路径填写/root ,映射到群晖文件夹(需要新建文件夹/test/ddnsgo)中,这样容器保存在root路径下的文件都会到群晖的/test/ddnsgo中。最后需要把网络改为host,其他配置保持默认
现在就可以打开【群晖地址:9876】访问ddns-go的主界面了
如果使用docker命令行进行安装,可以执行如下命令,/opt/ddns-go需要改为自己的路径
docker run -d –name ddns-go –restart=always –net=host -v /opt/ddns-go:/root jeessy/ddns-go
特别说明的是,如果通过ssh连接到群晖,把上述命令中的/opt/ddns-go路径简单的替换为/test/ddnsgo是不行的,它是不会把前面在File Station中手动创建的test下的ddnsgo文件夹进行映射的,因为在群晖上有多个硬盘,所以要看test具体是在哪个volume文件夹下
我的test是创建在硬盘1中,如果要把容器数据保存在ddnsgo文件夹,必须要把上面命令中的/opt/ddns-go替换为/volume1/test/ddnsgo
DDNS配置
接下来看看如何在ddns-go中配置阿里DDNS服务,首先阿里云上需要有一个域名(比如叫:xxx.com),打开ddns-go主界面,在DNS服务商中选择阿里云,点击下面的创建AccessKey
登录阿里云账号后,会直接跳转到创建AccessKey界面,为了安全,建议使用子账户AccessKey
默认是没有任何账户的,所以需先创建用户
输入登录名称,并勾选OpenAPI调用访问,点击确定
创建成功后,一定要把信息保存下来,后期无法再次获取
回到用户列表页面,点击添加权限按钮,给用户配置单独的权限
选择管理云解析的权限后,再点击左下角的确定按钮,确认没有问题后,点击完成。这样就相当于给laoning这个账号只赋予了管理云解析的权限,如果Secret泄漏了,也不会造成其他危险
回到ddns-go界面,把刚刚复制下来的AccessKey ID和AccessKey Secret分别粘贴到对应的输入框中
最后在IPv4的Domains填入自定义的二级域名(laoning.xxx.com)即可,这个域名(laoning)可以任意设置,只要域名没有被使用都可以。至于获取IP方式,建议选择通过接口获取,这样ddns-go会自动访问IP地址来获取公网IP
如果家里有公网IPv6,和IPv4设置方式相同
最后拉到最底部的保存按钮,就代表设置成功了。最后就可以通过laoning.xxx.com访问家里的设备了