ddns-go

command module
v0.0.0-...-1a3b310 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 14, 2025 License: GPL-2.0 Imports: 7 Imported by: 0

README

ddns-go

介绍

使用go语言编写的腾讯云域名解析管理脚本

使用说明

使用帮助信息

Usage of ddns-go:
  -c string
        设置配置文件路径 (default "/opt/apps/com.liumou.ddns-tencent/ddns.toml")
  -debug
        显示程序运行详细日志信息
  -list
        显示域名列表
  -sec int
        下一次更新间隔时间(秒) (default 60)
  -service
        是否为服务模式,设置为true时会在系统启动时自动执行DNS更新
  -show
        显示程序简介
  -u6 string
        设置IPV6查询接口地址 (default "http://ipv6.liumou.site:22011/api")
  -v    显示版本信息

配置参数

通过环境变量配置

环境变量优先级最高,当同时设置了环境变量和配置文件,优先级为环境变量 > 配置文件

环境变量名 说明 必选 默认值 参考值
UrlIp6Api IPV6接口地址 可选 https://ipv6.icanhazip.com 备注: 接口返回数据格式必须和默认值的一致,备用: http://ipv6.liumou.site:22010/api
TXY_KEY 腾讯云密钥 必选 - 备注: 腾讯云密钥,如何获取请参考: https://cloud.tencent.com/document/product/302/7299
TXY_ID 腾讯云ID 必选 - 备注: 腾讯云ID,如何获取请参考: https://cloud.tencent.com/document/product/302/7299
TYPE IP类型 必选 - 备注: A(只更新IPV4),AAAA(只更新IPV6),ALL(双栈)
DOMAIN 域名 必选 - 备注: 域名,例如: liumou.site
Remark 备注 可选 - 备注: 备注信息
Sub 子域名 必选 - 备注: 子域名,例如: ipv4,ipv6,ddns4,ddns6
Sub4 IPV4专属子域名 必选 - 备注: 子域名,例如: ipv4,ddns4
Sub6 IPV6专属子域名 必选 - 备注: 子域名,例如: ipv6,ddns6
sec 下次更新间隔时间(秒) 可选 60 备注: 默认60秒,可自行修改
debug 显示程序运行详细日志信息 可选 - 备注: 默认开启,开启后,会显示程序运行详细日志信息
Delete 是否先删除记录再重新添加 可选 - 备注: 默认为false,不删除,true为删除
通过配置文件

配置文件优先级为: 环境变量 > 配置文件 > 默认值

默认使用: /opt/apps/com.liumou.ddns-tencent/ddns.toml

[domain]
# 设置域名,例如 liumou.site
Domain="liumou.site"
# 预设字段,留空即可
Sub=""
# 设置IPV4专属子域名,例如 ipv4
Sub4="ddns4"
# 设置IPV6专属子域名,例如 ipv6
Sub6="ddns6"
# 设置备注
Remark="模板"
# Type 设置IP类型
## ALL(双栈)
## A(只更新IPV4)
## AAAA(只更新IPV6)
Type="A"
[login]
# 设置Key
Key="Keys"
# 设置ID
Id="Ids"
[option]
# 设置是否删除
# true:删除
# false:不删除
Delete=false
安装-通过Docker(推荐)

镜像大小

root@tb4:/data/ddns# docker images | grep ddns
ccr.ccs.tencentyun.com/liumou/ddns                                         latest                   99fb42d31284   15 minutes ago   15.9MB
root@tb4:/data/ddns# 

运行命令

通过环境变量配置
docker run -tid --name ddns --net=host -e TXY_KEY=<Keys> \
-e TXY_ID=<Ids> -e DOMAIN=liumou.site -e TYPE=A -e Sub=ddns4 \
-e Sub4=ddns4 -e Sub6=ddns6 -e Remark="模板"  ccr.ccs.tencentyun.com/liumou/ddns
通过配置文件映射
docker run -tid --name ddns --net=host -v `pwd`/ddns.toml:/opt/apps/com.liumou.ddns-tencent/ddns.toml ccr.ccs.tencentyun.com/liumou/ddns

当需要更新IPV6的时候,必须使用 --net=host 网络模式,否则IPV6将无法获取宿主机的实际IP

必须在当前路径先创建ddns.toml文件

效果

root@tb4:/data/ddns# docker run -tid --name ddns --net=host -v `pwd`/ddns.toml:/opt/apps/com.liumou.ddns-tencent/ddns.toml ccr.ccs.tencentyun.com/liumou/ddns
b2e8aaacf58d98a02113034e6103e1ca8a1a2b76770882939c8f12aa697b7551
root@tb4:/data/ddns# docker logs -f ddns 
https://liumou.site
[2025-05-04 18:14:24] [INFO] [ddns:61] ddns-go v3.2.7
[2025-05-04 18:14:25] [DEBG] [ipv4:133] 获取到本机公网IPv4地址: 171.37.180.100
[2025-05-04 18:14:25] [INFO] [start:16] 正在更新V4记录:  A
[2025-05-04 18:14:25] [INFO] [update:24] 正在更新记录
ddns4.liumou.site -> 171.37.180.100
[2025-05-04 18:14:25] [DEBG] [update:28] 171.37.180.100  ->  171.37.180.100
[2025-05-04 18:14:25] [INFO] [update:29] IP地址未发生变化,无需更新
[2025-05-04 18:14:25] [INFO] [start:69] 正在更新V6记录:  AAAA
[2025-05-04 18:14:25] [INFO] [update:24] 正在更新记录
ddns6.liumou.site -> 2408:825c:8e2:f91f:6a1d:efff:fe35:39ae
[2025-05-04 18:14:25] [DEBG] [update:28] 2408:825c:8e2:f91f:6a1d:efff:fe35:39ae  ->  2408:825c:8e2:f91f:6a1d:efff:fe35:39ae
[2025-05-04 18:14:25] [INFO] [update:29] IP地址未发生变化,无需更新
[2025-05-04 18:14:25] [INFO] [ddns:84] 本次更新完成,正在等待下次更新,当前设置等待时间:  60 秒
root@tb4:/data/ddns# 

效果

root@tb4:/data/ddns# echo '[domain]
# 设置域名,例如 liumou.site
Domain="liumou.site"
# 预设字段,留空即可
Sub=""
# 设置IPV4专属子域名,例如 ipv4
Sub4="ddns4"
# 设置IPV6专属子域名,例如 ipv6
Sub6="ddns6"
# 设置备注
Remark="模板"
# Type 设置IP类型
## ALL(双栈)
## A(只更新IPV4)
## AAAA(只更新IPV6)
Type="A"
[login]
# 设置Key
Key="Keys"
# 设置ID
Id="Ids"
[option]
# 设置是否删除
# true:删除
# false:不删除
Delete=false' > ddns.toml
root@tb4:/data/ddns# docker run -tid --name ddns --net=host -v `pwd`/ddns.toml:/opt/apps/com.liumou.ddns-tencent/ddns.toml ccr.ccs.tencentyun.com/liumou/ddns
1bae890bed8d77d8e3ccf11c42abacc25ee0814bc7fcaeb5854a8a8881e5e10d
root@tb4:/data/ddns# docker logs -f ddns
https://liumou.site

[2025-04-21 21:19:11] [EROR] [check:25] 请先编辑配置文件:  /opt/apps/com.liumou.ddns-tencent/ddns.toml
当前错误是设置子域名的值,例如:www
root@tb4:/data/ddns# 

当首次启动的时候,会提示错误,请先编辑配置文件,此时根据提示完成配置修改

安装-Linux

假设已经下载好适合当前环境的ddns-go程序,并重命名为ddns-go,且将此程序放在PATH环境变量中的任意一个目录

安装-通过DEB的方式安装

首先前往发行版页面下载 https://gitee.com/liumou_site/ddns-go/releases

然后安装

sudo dpkg -i com.liumou.ddns-tencent_amd64-linux_3.2.3.deb
root@Debian12:/data# dpkg -i com.liumou.ddns-tencent_amd64-linux_3.2.3.deb 
Selecting previously unselected package com.liumou.ddns-tencent.
(Reading database ... 152186 files and directories currently installed.)
Preparing to unpack com.liumou.ddns-tencent_amd64-linux_3.2.3.deb ...
正在进行安装之前的删除操作...
正在检测程序运行状态...
程序已关闭,可以继续安装
安装之前 [ 安装目录 ] 删除成功: /opt/apps/com.liumou.ddns-tencent/ 
安装之前 [ 软连接 ] 删除成功: to_bin=/usr/bin/ddns-tencent 
安装之前 [ 包信息 ] 删除成功: /var/lib/dpkg/info/com.liumou.ddns-tencent.* 
安装之前的删除操作结束!
Unpacking com.liumou.ddns-tencent (3.2.3) ...
Setting up com.liumou.ddns-tencent (3.2.3) ...
正在执行安装配置 - postinst
正在创建软连接...
ln -s /opt/apps/com.liumou.ddns-tencent/com.liumou.ddns-tencent_linux /usr/bin/ddns-tencent
软连接成功: /usr/bin/ddns-tencent
正在创建用户: ddns
用户创建成功
可使用下面的命令查看服务日志
ddns-tencent-log # 查看日志
ddns-tencent-restart # 重启服务
ddns-tencent-enable # 设置开机启动
ddns-tencent-disable # 取消开机启动
ddns-tencent-stop # 停止服务
ddns-tencent-status # 查看服务状态
安装配置执行结束!
installed successfully
请先编辑该文件再启动
/opt/apps/com.liumou.ddns-tencent/ddns.toml

启动服务之前,请先编辑环境变量文件

vim /opt/apps/com.liumou.ddns-tencent/ddns.toml
状态管理
ddns-tencent-restart  # 启动服务
ddns-tencent-status # 查看服务状态
ddns-tencent-stop # 停止服务
ddns-tencent-enable # 设置开机启动
ddns-tencent-disable # 取消开机启动
ddns-tencent-log # 查看运行日志(后面50条)
查看运行日志
journalctl -u com.liumou.ddns-tencent.service  | grep ERROR

效果

root@ddns:~# journalctl -u com.liumou.ddns-tencent.service  | grep ERROR
Mar 27 10:10:19 ddns ddns-tencent[618]: + echo 'ERROR TXY_KEY is empty'
Mar 27 10:10:19 ddns ddns-tencent[618]: ERROR TXY_KEY is empty
Mar 27 10:10:19 ddns ddns-tencent[618]: + echo 'ERROR : Please configure the file first : /opt/apps/com.liumou.ddns-tencent/.txy.env'
Mar 27 10:10:19 ddns ddns-tencent[618]: ERROR : Please configure the file first : /opt/apps/com.liumou.ddns-tencent/.txy.env
Mar 27 10:10:19 ddns ddns-tencent[619]: + echo 'ERROR TXY_KEY is empty'
Mar 27 10:10:19 ddns ddns-tencent[619]: ERROR TXY_KEY is empty
Mar 27 10:10:19 ddns ddns-tencent[619]: + echo 'ERROR : Please configure the file first : /opt/apps/com.liumou.ddns-tencent/.txy.env'
Mar 27 10:10:19 ddns ddns-tencent[619]: ERROR : Please configure the file first : /opt/apps/com.liumou.ddns-tencent/.txy.env
Mar 27 10:10:19 ddns ddns-tencent[620]: + echo 'ERROR TXY_KEY is empty'
Mar 27 10:10:19 ddns ddns-tencent[620]: ERROR TXY_KEY is empty
Mar 27 10:10:19 ddns ddns-tencent[620]: + echo 'ERROR : Please configure the file first : /opt/apps/com.liumou.ddns-tencent/.txy.env'
Mar 27 10:10:19 ddns ddns-tencent[620]: ERROR : Please configure the file first : /opt/apps/com.liumou.ddns-tencent/.txy.env
Mar 27 10:10:19 ddns ddns-tencent[621]: + echo 'ERROR TXY_KEY is empty'
Mar 27 10:10:19 ddns ddns-tencent[621]: ERROR TXY_KEY is empty
Mar 27 10:10:19 ddns ddns-tencent[621]: + echo 'ERROR : Please configure the file first : /opt/apps/com.liumou.ddns-tencent/.txy.env'
Mar 27 10:10:19 ddns ddns-tencent[621]: ERROR : Please configure the file first : /opt/apps/com.liumou.ddns-tencent/.txy.env
Mar 27 10:10:20 ddns ddns-tencent[622]: + echo 'ERROR TXY_KEY is empty'
Mar 27 10:10:20 ddns ddns-tencent[622]: ERROR TXY_KEY is empty
Mar 27 10:10:20 ddns ddns-tencent[622]: + echo 'ERROR : Please configure the file first : /opt/apps/com.liumou.ddns-tencent/.txy.env'
Mar 27 10:10:20 ddns ddns-tencent[622]: ERROR : Please configure the file first : /opt/apps/com.liumou.ddns-tencent/.txy.env

二进制裸程序运行

首先前往发行版页面下载可执行文件 https://gitee.com/liumou_site/ddns-go/releases 或者使用下面的命令

wget -O /usr/bin/ddns-go https://gitee.com/liumou_site/ddns-go/releases/download/v3.2.2/ddns-go_3.2.2_linux-X86_64

具体链接请根据版本号及系统类型、架构自行选择,这里仅以最常见的linux-amd64为例

然后赋予可执行权限

chmod +x /usr/bin/ddns-go

然后执行下面的命令完成模板创建

mkdir -p /opt/apps/com.liumou.ddns-tencent
echo '[domain]
# 设置域名,例如 liumou.site
Domain="liumou.site"
# 预设字段,留空即可
Sub=""
# 设置IPV4专属子域名,例如 ipv4
Sub4="ddns4"
# 设置IPV6专属子域名,例如 ipv6
Sub6="ddns6"
# 设置备注
Remark="模板"
# Type 设置IP类型
## ALL(双栈)
## A(只更新IPV4)
## AAAA(只更新IPV6)
Type="A"
[login]
# 设置Key
Key="Keys"
# 设置ID
Id="Ids"' > /opt/apps/com.liumou.ddns-tencent/ddns.toml

然后使用编辑器编辑ddns.toml文件

nano ddns.toml
[root@Halo20 ~]# ddns-go -c ddns.toml -service
https://liumou.site
[2025-04-24 13:29:05] [INFO] [ddns:61] ddns-go v3.2.5
[2025-04-24 13:29:05] [INFO] [gf] [v1.3.2] [extern:304] 该路径不存在
[2025-04-24 13:29:06] [INFO] [service:97] ddns-go服务创建成功并已设置为开机自启
[2025-04-24 13:29:06] [INFO] [service:98] 配置文件路径: /etc/ddns-go/config.toml
[2025-04-24 13:29:06] [INFO] [service:99] ddns-go服务路径: /usr/lib/systemd/system/ddns-go.service
[2025-04-24 13:29:06] [INFO] [service:100] 启动命令: systemctl start ddns-go.service
[root@Halo20 ~]# systemctl status ddns-go
● ddns-go.service - ddns-go
     Loaded: loaded (/usr/lib/systemd/system/ddns-go.service; enabled; preset: disabled)
    Drop-In: /run/systemd/system/service.d
             └─zzz-lxc-service.conf
     Active: active (running) since Thu 2025-04-24 13:29:06 UTC; 11s ago
   Main PID: 6879 (ddns-go)
      Tasks: 6 (limit: 100530)
     Memory: 6.6M (peak: 7.1M)
        CPU: 21ms
     CGroup: /system.slice/ddns-go.service
             └─6879 /usr/bin/ddns-go -c /etc/ddns-go/config.toml

Apr 24 13:29:06 Halo20 systemd[1]: Started ddns-go.
Apr 24 13:29:06 Halo20 ddns-go[6879]: https://liumou.site
Apr 24 13:29:06 Halo20 ddns-go[6879]: [2025-04-24 13:29:06] [INFO] [ddns:61] ddns-go v3.2.5
Apr 24 13:29:06 Halo20 ddns-go[6879]: [2025-04-24 13:29:06] [INFO] [start:63] 正在更新V6记录
Apr 24 13:29:06 Halo20 ddns-go[6879]: tb4.halo6.liumou.site -> 2408:825c:8e1:d0e2:be24:11ff:fe32:338b
Apr 24 13:29:06 Halo20 ddns-go[6879]: [2025-04-24 13:29:06] [INFO] [update:27] IP地址未发生变化,无需更新
Apr 24 13:29:06 Halo20 ddns-go[6879]: [2025-04-24 13:29:06] [INFO] [ddns:84] 本次更新完成,正在等待下次更新,当前设置等待时间:  60 秒
[root@Halo20 ~]#

Windows

需要打开终端,然后在终端中运行,不建议直接双击exe文件运行

.\ddns_windows-amd64.exe 
PS D:\Code\gitee\go\ddns-go> go run .\ddns.go -c .\client\ddns.toml
https://liumou.site
[2025-04-24 20:35:12] [INFO] [ddns:59] ddns-go v3.2.5
[2025-04-24 20:35:16] [DEBG] [ipv4:133] 获取到本机公网IPv4地址: 171.37.177.164
[2025-04-24 20:35:16] [INFO] [start:46] 正在更新V4记录
ddns.liumou.site -> 171.37.177.164
[2025-04-24 20:35:16] [INFO] [update:27] IP地址未发生变化,无需更新
[2025-04-24 20:35:16] [INFO] [start:79] 正在更新V6记录
ddns6.liumou.site -> 2408:825c:8e1:99a9:df9d:8a13:c1f7:902d
[2025-04-24 20:35:16] [INFO] [update:27] IP地址未发生变化,无需更新
[2025-04-24 20:35:16] [INFO] [ddns:75] 本次更新完成,正在等待下次更新,当前设置等待时间:  60 秒

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL