Docker部署ddns-go,动态域名解析公网IPv6地址
ddns-go,自动获得你的公网 IPv4 或 IPv6 地址,并解析到对应的域名服务。
嫌IPv6地址太难记?ddns来解决,将家里的公网IPv6地址用起来吧!
前言
为什么需要DDNS
因为一般家庭或企业用户所获得的的广域网ip并非固定,而是会时常变化,一旦变化,我们的域名针对ip的A类解析记录就会失效,因此我们需要DDNS(动态域名解析服务),在ip变动时自动更改我们的域名解析记录值。
ddns-go项目地址:
GitHub地址:https://github.com/jeessy2/ddns-go
Gitee地址:https://gitee.com/OtherCopy/ddns-go
视频地址
本期教程辅以视频,链接:https://www.bilibili.com/video/BV1S24y1q79Z
前置准备
公网IP
首先,需要保证家里有公网IP地址,现在大多数家里是有动态公网IPv6地址的。
我们可以在控制台输入一下命令查看一下当前机子的IP
- Windows:
ipconfig
- Linux:
ip addr
找到对应的网络适配器查看IP,若是公网IPv6会有以下特征:
运营商 | 特征 |
---|---|
电信 | 240e开头 |
移动 | 2409开头 |
联通 | 2408开头 |
接下来,让我们访问这个网站https://ipw.cn/ipv6ping/,这是一个测试IPv6地址能否被ping通的网站,如果你的IPv6已经能被ping通,那说明这已经能当一个公网IP使用了,可跳过检查防火墙这一步。
检查防火墙
若没有被ping通,也不用着急,这是因为家里复杂的网络环境,各个节点可能存在的防火墙,致使该ip可能在外面并不能被ping通,此时细心检查家里光猫、路由器、主机的防火墙设置,具体可以按光猫->路由器->主机的顺序逐一ping其ip地址,若有一ping不通则是上一级防火墙没关。
这里我举个以我这里关闭防火墙的例子:
- 光猫:取消勾选
使能IPv6防火墙控制转发报文
- 路由器:
关闭防火墙
- 主机:
关闭防火墙
win:Windows安全中心->防火墙与安全保护->关闭公用网络防火墙
linux:sudo ufw disable
安全性问题:有人会担心防火墙全关了是不是不安全了?对于大部分人而言,由于公网IPv6地址每隔个两三天就会变一次,所以不用太担心被暴力攻击,但如果对安全性十分敏感,可以自行控制开放部分内网IP或者端口,但本文章内容重点并不在于此,请自行研究,
环境配置
为了方便使用,采用docker compose
部署,所以需要先安装docker
# 安装docker
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
tips:若没有curl命令,执行
sudo apt install curl
安装curl,再执行上面两条命令即可。
安装
可以选择docker compose
或docker
二选一,我比较推荐docker compose
安装,维护简单,且不用打一长串的参数命令行。
docker compose安装
选择一个放置目录,比如~/data/docker_data/
,新建一个文件夹放置ddns-go
mkdir ddns-go
cd ddns-go
在ddns-go文件夹中创建docker-compose.yml
文件,内容如下:
version: "3.9"
services:
ddns-go:
image: jeessy/ddns-go
restart: always
network_mode: "host"
volumes:
- ./ddns-go_data:/root
ps:以下有关docker的命令最好都在root用户下执行,由于涉及一些文件操作,不提供root权限可能存在文件权限问题。
docker compose up -d
在浏览器中打开http://主机IP:9876
,修改你的配置,成功
Note
建议在启用公网访问时,使用 Nginx 等反向代理软件启用 HTTPS 访问,以保证安全性。
docker安装
挂载主机目录, 使用docker host模式。可把 /opt/ddns-go
替换为你主机任意目录, 配置文件为隐藏文件
docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go
在浏览器中打开http://主机IP:9876
,修改你的配置,成功
使用
配置
安装完成后,我们可以访问http://主机IP:9876
进入ddns-go管理页面。
这里我以腾讯DNSPod管理的域名为例,进入腾讯DNSPod账号中心
->API密钥
->DNSPod Token
->创建密钥
保存下来ID
和Token
,这将是ddns-go修改dns解析的凭证,回到ddns-go的管理面板,DNS服务商选择Dnspod(腾讯云)
,输入对应的ID
和Token
根据自身需求配置ipv6,在Domains
中配置域名。
其他配置:根据自己的需要配置下禁止公网访问和登录用户名密码,防止被攻击篡改。
点击Save
保存。
成功后,应该能在自己的DNS解析处看到该域名当前的解析记录,并再次访问https://ipw.cn/ipv6ping/网站,ping一下这个域名,大功告成!
更新
docker compose pull
docker compose up -d
卸载
docker compose down
停止
docker compose stop
重启
docker compose restart