请访问原文链接:https://sysin.org/blog/ddns-go/,查看最新版。原创作品,转载请保留出处。

作者主页:www.sysin.org

这是一个简单好用的 DDNS 动态域名服务工具,可以自动更新域名解析到公网 IP,目前支持Alidns(阿里云)Dnspod(腾讯云)Cloudflare。并且是免费和开源的!

如果你的域名注册不在上述服务商,也是可以使用的,将域名解析转入到上述服务商的免费解析服务即可,参看以下文档:

v1.0.0 发布

  • f4d91a5 feat: 在网页中快速查看最近50条日志
  • v1.0.0 发布意味着正式版本

1. ddns-go 功能特性

  • 自动获得你的公网 IPv4 或 IPv6 并解析到域名中
  • 支持 Mac、Windows、Linux 系统,支持 ARM、x86 架构
  • 支持的域名服务商 Alidns(阿里云) Dnspod(腾讯云) Cloudflare
  • 间隔 5 分钟同步一次
  • 支持多个域名同时解析,公司必备
  • 支持多级域名
  • 网页中配置,简单又方便
  • 网页中方便快速查看最近 50 条日志

2. 系统中使用

动态 DNS 解析,通常可能是用在家里的电脑,没有固定公网 IP,但是需要远程访问的场景,以下以 macOS 和 Windows 为例,详细说明一下具体使用方法:

2.1 macOS

  • 下载:
wget https://github.com/jeessy2/ddns-go/releases/download/v1.0.0/ddns-go_1.0.0_Darwin_x86_64.tar.gz
tar -zxvf ddns-go_1.0.0_Darwin_x86_64.tar.gz
mv ddns-go /usr/local/bin/
#运行
ddns-go
#此时将用默认浏览器打开:http://127.0.0.1:9876/
  • 添加自动启动:

如果用户登录启动,创建 plist 文件如下:

vi ~/Library/LaunchAgents/ddns-go.plist

如果系统启动时自动运行,创建 plist 文件如下:

sudo vi /Library/LaunchDaemons/ddns-go.plist

内容如下:

<?xml version="1.0"encoding="utf-8"?>
<!DOCTYPE plist PUBLIC"-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>KeepAlive</key>
        <true/>
        <key>RunAtLoad</key>
        <true/>
        <key>Label</key>
        <string>com.jeessy2.ddns-go</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/local/bin/ddns-go</string>
        </array>
    </dict>
</plist>

检查 plist 语法是否正确

plutil ~/Library/LaunchAgents/ddns-go.plist

修改文件权限

chmod 644 ~/Library/LaunchAgents/ddns-go.plist

添加自启动项

launchctl load ~/Library/LaunchAgents/ddns-go.plist

启动自启动项

launchctl start ddns-go

删除自启动项

launchctl unload ~/Library/LaunchAgents/ddns-go.plist

查看当前所有自启动项

launchctl list

2.2 Windows

1、下载(Win64为例):https://github.com/jeessy2/ddns-go/releases/download/v1.0.0/ddns-go_1.0.0_Windows_x86_64.tar.gz

2、解压到 C:\Program Files\ddns-go\ 文件夹下

3、点击 ddns-go.exe 右键,发送到 - 桌面快捷方式,可以直接双击运行

4、如果需要自动启动:

在开始菜单的搜索栏内或者在“运行”窗口内输入以下命令后回车:shell:Common Startup,打开启动文件夹。

将应用软件生成快捷方式放入C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp 文件夹(需要管理员权限)。

如果没有管理员权限,“运行”:shell:startup

将打开:C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 文件夹

将应用软件快捷方式放到这里即可。

5、开机自启动(不需要用户登录),可以使用任务计划程序

任务计划程序 ~> 创建任务

常规:【不管是否用户登录都要运行 ,使用高级权限运行】

触发器:【新建:触发器 ~> 启动时 】

操作:【新建:操作 ~> 启动程序,浏览到应用程序所在路径】

2.3 获取域名 API 访问凭据

根据你的域名所在服务商,打开页面,登录后,根据提示获取凭据,然后填写到 ddns-go 的配置页面中即可。

Alidns(阿里云)

https://ram.console.aliyun.com/manage/ak

AccessKey ID

AccessKey Secret

Dnspod(腾讯云)

https://console.dnspod.cn/account/token

ID

Token

Cloudflare

https://dash.cloudflare.com/profile/api-tokens

Token

2.4 添加解析

在 IPv4 或者 IPv6(如果有)下,Domains 中填写 dns 解析条目即可。

示例:www.domain.com,也可以解析多条,一行一条,点击“SAVE”,右侧提示解析成功!

此时,回到域名解析服务商管理页面,可以看到 dns 条目已经正确添加。

从日志可以看到,应用程序 5 分钟检查一次地址变化并同步地址解析。

2.5 配置文件

cat ~/.ddns_go_config.yaml

可以看到软件使用 yaml 格式保存配置文件,配置参数也很直观。

3. Docker 中使用

docker run -d \
  --name ddns-go \
  --restart=always \
  -p 9876:9876 \
  jeessy/ddns-go
  • 在网页中打开http://主机IP:9876,修改你的配置,成功
  • [可选] docker 中默认不支持 IPv6,需自行探索如何开启

DDNS服务 云服务器 ddns-go_DDNS