DDNS 是什么
通俗的说我们家用宽带的 IPv4 或者 IPv6 基本上都会来回变的,不像我们的服务器的 IP 是固定不变的,如果去域名厂商的控制台配置解析的话,每次 IP 变动得重新设置一下 A 记录(IPv4)或者 AAA 记录(IPv6)的解析是很麻烦的,所以这个适合就有了 DDNS 技术。 DDNS 全称也叫做动态域名解析,相当于每隔一段时间主动去我们的云厂商控制台里面配置域名解析,哪怕我们的域名变了也可以保证及时同步解析,让我们的域名始终指向正确的 IP 地址。 公网 IPv4
因为网络的发展,全球的 IPv4 资源都十分紧张。早几年的电信宽带还是自带公网 IPv4 的,虽然不是固定的,但是配置 1 个 DDNS 解析还是极好的。但是现在 2023 年了,如今的个人家庭宽带带公网 IPv4 的可能性已经不大了,但是好在 IPv6 技术的出现。
公网 IPv6
因为 IPv6 的资源非常非常多,而且国家也强制了运营商需要分配 IPv6 资源,所以如今家用宽带基本上都是自带外网的 IPv6 资源的。IPv6 资源分发到每个家里可以理解是一个资源池,哪怕光猫下面连接路由器,路由器下面再接一些设备,也可以保证这些设备也获取到独立的公网 IPv6 地址。没错!IPv6 的普及也就是万物互联时代的开始。
PVE 开启 IPv6
那么既然 IPv6 资源这么多,怎么保证我们的 PVE 也有自己的 IPv6 地址呢? 其实很简单,PVE 本身也是默认开始了 IPv6 配置和转发的,我们只需要使用如下命令自动配置 SLAAC IPv6 地址即可: - echo "net.ipv6.conf.all.accept_ra=2" >> /etc/sysctl.conf
- echo "net.ipv6.conf.default.accept_ra=2" >> /etc/sysctl.conf
- echo "net.ipv6.conf.vmbr0.accept_ra=2" >> /etc/sysctl.conf
- echo "net.ipv6.conf.all.autoconf=1" >> /etc/sysctl.conf
- echo "net.ipv6.conf.default.autoconf=1" >> /etc/sysctl.conf
- echo "net.ipv6.conf.vmbr0.autoconf=1" >> /etc/sysctl.conf
复制代码然后重启 PVE 后即可看到我们的 IPv6 公网地址了:
PVE 安装 Docker因为 DDNS-GO 是目前比较好用的 DDNS 解析工具,考虑到 PVE 底层就是 Debian,我们使用 Docker 来部署 DDNS-GO 会更加简单方便一点,PVE 安装 Docker 也比较简单方便,使用官方脚本即可一键安装了: - curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
复制代码 通常情况,https://get.docker.com 已经无法访问了。
我这里分步来解决。
浏览器打开https://get.docker.com
保存页面为docker,注意没有后缀
然后上传到linux服务器随便一个常用目录(比如/home),执行
- bash docker --mirror Aliyun
复制代码 这样就解决了官网无法直接访问的问题,注意,不能保证一直能用,有的地方docker hub也在下架。
Docker 安装 DDNS-GO
众所周知 Docker 官方源很早之前就被官方封禁了。国内拉取 Docker 镜像必须依赖国内镜像源:比如网易、中科大、阿里等。但是最近大家应该都遇到了无法拉取 Docker 镜像的问题,即使换了国内源也会拉取失败。就我目前的测试来看:国内的 Docker 镜像源疑似集体停止服务。而且这一切发生得静悄悄,没有任何相关公告。
我们去搜索引擎寻找镜像源,为了加速镜像拉取,你可以使用以下命令设置 registry mirror:
修改文件 /etc/docker/daemon.json
- {
- "registry-mirrors" : ["https://dockerhub.icu"]
- }
复制代码 安装好 Docker 的话,使用如下命令即可部署搭建出 DDNS-GO 服务:
- docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go
复制代码 默认大家都是有 Docker 基础的,国光简单解释一下几个参数的作用:
--restart=always:表示随 Docker 服务启动就开启自启这容器
--net=host :表示使用 host 网络,即和主机共享 IP,而我们传统的 -p 走的是 bridge 桥接模式,这样就无法获取到公网的 IPv6 地址 (PS:Windows/Mac桌面版的 Docker不支持--net=host)
DDNS-GO 的简单使用
在浏览器中打开 http://主机IP:9876
DDNS-GO 的使用非常简单,首先填写我们域名厂商的 AK 和 SK 即可:
因为国光的家庭带宽无公网的 IPv4,所以这里只开启 IPv6 地址:
- 一般来说通过网卡获取的 IPv6 地址要准确一点
- Domains 直接填写我们想要解析的 IPv6 地址即可,DDNS-GO 会自动带着我们的 AK 和 SK 去控制台帮我们添加解析记录
使用 Docker 按照上述教程安装 DDNS-GO 的话,我们的配置文件默认明文保存在:
- cat /opt/ddns-go/.ddns_go_config.yaml
复制代码
这样就算配置了密码,忘记了查看一下这个文件即可,同时也要记住不要随便泄露这个文件,毕竟里面带着我们的 AK 和 SK 信息。
DDNS IPv6 解析效果DDNS-GO 会在阿里云控制台里面自动添加 AAA IPv6 的解析记录: 然后我们就可以在有 IPv6 公网的网络环境随时随地访问我们的 PVE 控制台了:
|