前言
有一台HKBN的nat机器,动态ipv4+静态ipv6,机器的配置也比较低1c521内存5G硬盘,由于ipv4经常变动,使用ddns服务可以自动获得你的公网 IPv4 或 IPv6 地址,并解析到对应的域名服务,此时我们就可以用一个域名来代替这个ip了,ip再怎么变动都不会影响,同时添加TG消息提醒ip变动。
DDNS-GO项目地址:https://github.com/jeessy2/ddns-go
DDNS-GO通知TG项目地址:https://github.com/WingLim/ddns-telegram-bot
前期准备
一个域名并托管好。我用的是cloudflare,所以本次也是使用cloudflare作为演示。
获取域名API
在域名首页往下拉找到该域名的API

创建令牌

点击这项

选择域名

然后点击继续直至创建令牌

注意!!!
此令牌只展示一次,所以需要自行先保存至别处,下次就无法再显示。如果忘记,只能重新创建令牌!
域名解析
在域名的DNS出进行解析,这个域名就是用来代替本机动态IPV4的,所以小黄云一定要关闭!!!
假设本次域名是a.bb.cc

根据自己的情况填写并保存。
再解析多一个给一会反代DDNS-GO的面板用。这台机器有一个静态ipv6,那么就可以用ipv6。
假设本次域名是d.bb.cc

自己填写名称和ipv6。
DDNS-GO安装
项目官方有Docker和下载二进制文件的安装方式,由于这台机器配置比较低,所以本次采取下载二进制文件的安装方式,也可以自行查看项目文档采用Docker的安装方式。
演示系统:Debian13
下载并解压
创建并进入目录
mkdir -p /opt/ddns-go && cd /opt/ddns-go下载DDNS-GO
先确认 CPU 架构(例如本次的机器就是 x86_64/amd64)
从 Releases下载自己CPU架构的文件,例如我的是ddns-go_6.13.3_linux_x86_64.tar.gz。
wget https://github.com/jeessy2/ddns-go/releases/download/v6.13.3/ddns-go_6.13.3_linux_x86_64.tar.gz解压
tar -zxvf ddns-go_6.13.3_linux_x86_64.tar.gz解压后有需求的话可以把ddns-go_6.13.3_linux_x86_64.tar.gz压缩包给删除了,接下来已经用不到。
安装服务
防火墙放行端口
如果开启了防火墙(如 nftables 或 ufw),需要放行默认端口 9876。如果没有开启防火墙,忽略即可。如果使用反代的话,同样忽略即可。
如果使用的是ufw
ufw allow 9876赋予权限
chmod +x ddns-go安装
ddns-go自带服务安装功能,非常方便,它会自动配置 systemd 实现开机自启。
这一步会自动注册 systemd 服务
sudo ./ddns-go -s install提示安装成功:Installed ddns-go service successfully! Please open the browser and configure it
启动服务
systemctl start ddns-go此时正常就可以使用http://IP:9876打开后台了。
但是,官方建议:
建议在启用公网访问时,使用 Nginx 等反向代理软件启用 HTTPS 访问,以保证安全性。
所以我们还需要反代启用HTTPS访问,增加安全性。
而且,像我本次的情况:
这机器没有公网ipv4,是nat v4,且只有一个ipv6,此时我本地没有ipv6
服务商nat v4端口也没有给我9876端口,也无法9876映射到别的端口
所以此时我是无法登录DDNS-GO的后台的。
这种情况,反代便可同时解决以上的问题。
其它命令
停止
systemctl stop ddns-go重启
systemctl restart ddns-go反代
Ningx、Caddy、Nginx Proxy Manager都可以。
此处为了操作简单且通俗易懂,使用Caddy进行反代。
安装Caddy
返回
cdCaddy官网安装教程:点击打开,找到自己对应系统的安装方式,如Debian, Ubuntu, Raspbian适用的:
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
chmod o+r /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy等待安装完成,在浏览器输入你的ip,会显示:

到此Caddy安装成功。
配置Caddy
域名 {
reverse_proxy localhost:9876
}把域名修改成刚才解析ipv6的AAAA类型的完整域名,也就是上面的假设的d.bb.cc,自己是什么域名,改成自己的就好。
打开Caddy的配置文件:
nano /etc/caddy/Caddyfile把修改好的配置信息粘贴到最后去,然后Ctrl+x确认保存并退出。
重启Caddy:
systemctl reload caddy此时,直接在浏览器输入你的域名即可。
面板设置
配备管理员账号

根据字面意思提示输入用户名和密码,第一次进入会把该用户默认设置为管理员。
第一次配置时,需要在5分钟内日配置完成,超时的话无法保存,此时可以重启DDNS-GO服务或者从内网尝试配置,一般重启重启DDNS-GO服务即可。
重启
systemctl restart ddns-go配置面板
有3个地方需要设置

选择对应的DNS服务商,本次使用的Cloudflare,选择Cloudflare
在Token处填入一开始获取的域名API令牌
在对应的IPV4或者IPV6处填写刚才不开小黄云的域名,也就是上面的假设的
a.bb.cc
填写后保存即可,保存后会自动执行DDNS-GO服务,此时面板会有对应的提示。
再返回Cloudflare可以看到,此时刚才的域名已经换成了本机的IPV4地址

TG通知
官方有多种通知方式,可以在IP变动是获得通知,此处以TG示例,下图是现有的通知方式:

DDNS-GO通知TG项目地址:https://github.com/WingLim/ddns-telegram-bot
获取Webhook URL
TG上先关注机器人:@DDNSGoBot
打开并启用 @DDNSGoBot
发送
/gethook命令,此时会获得Webhook URL

获取RequestBody
TG项目已经提供了RequestBody信息,按需使用对应的就可以
{
"ipv4": {
"result": "#{ipv4Result}",
"addr": "#{ipv4Addr}",
"domains": "#{ipv4Domains}"
},
"ipv6": {
"result": "#{ipv6Result}",
"addr": "#{ipv6Addr}",
"domains": "#{ipv6Domains}"
}
}例如本次是ipv4的,那么RequestBody就是
{
"ipv4": {
"result": "#{ipv4Result}",
"addr": "#{ipv4Addr}",
"domains": "#{ipv4Domains}"
}
}填写Webhook URL和RequestBody
在DDNS-GO面板的Webhook处把刚才的Webhook URL和RequestBody填到对应的地方

点击模拟测试Webhook按钮测试

提示此消息即大功告成!
评论区