这是一个基于 Python 的用于 Windows 平台的动态 DNS (DDNS) 客户端,它允许您使用从本地网络接口获取的 IP 地址,通过 TSIG 认证安全地更新 DNS 'A' 记录。
- 安全更新: 使用 TSIG (Transaction SIGnature) 确保 DNS 更新请求的真实性和完整性。
- 灵活配置: 支持通过
config.toml配置文件和命令行参数进行设置。 - 自动 IP 检测: 能够自动从指定的网络接口获取非保留的 IPv4 地址。
- 协议支持: 支持通过 UDP 或 TCP 协议与 DNS 服务器通信。
- 日志记录: 将操作日志同时输出到控制台和
ddns.log文件,并支持info和debug两种日志级别。 - 依赖明确: 使用
pydantic进行配置管理,dnspython处理 DNS 通信,psutil获取网络信息。
您可以下载 Release 页面 预编译的可执行文件, 解压后修改 config.example.toml 文件配置程序参数并保存为 config.toml,然后运行 ddns.exe 即可推送更新。推荐使用计划任务来定时更新, 可参考 Windows 计划任务 配置。
可以采取源码直接运行或者打包后运行的方式来使用 DDNS 客户端。以下是详细步骤:
环境要求: Python 3.12 或更高版本。
-
克隆仓库
git clone 'https://github.com/ardenet/ddns.git' cd ddns -
安装依赖 项目依赖项在
pyproject.toml中定义。您可以使用uv或者pip进行安装:# 要使用pyinstaller进行打包,需要安装pyinstaller, 添加 `--dev` 参数;不需要则不添加dev参数,pip安装时相同 uv sync [--dev] # 或 pip install . [--group dev]
-
直接运行或打包程序后运行 可以直接使用 Python 运行
main.py程序,或者使用 PyInstaller 打包程序后运行。打包后的程序在/dist目录下。pyinstaller --name ddns --onefile --noconsole main.py
在安装根目录下创建一个名为 config.toml 的文件。该文件用于配置程序的主要参数, 具体参考 config.example.toml。
您也可以通过命令行参数来运行程序,命令行参数会覆盖 config.toml 文件中的同名配置。
| 参数 | 描述 |
|---|---|
--name-server |
DNS服务器地址 |
--zone |
DNS区域 |
--hostname |
主机名 |
--ttl |
DNS记录的TTL |
--timeout |
连接超时时间(秒) |
--protocol |
通讯协议 (tcp 或 udp) |
--interface |
网络接口名称 |
--log-level |
日志级别 (info 或 debug) |
--tsig-name |
TSIG密钥名称 |
--tsig-algorithm |
TSIG算法 |
--tsig-secret |
TSIG密钥 (Base64编码) |
您可以将 DDNS 客户端设置为 Windows 计划任务,以便定时更新 DNS 记录。
-
打开 任务计划程序 (
taskschd.msc)。 -
右键单击 任务计划程序库 并选择 创建基本任务...。
-
输入任务名称和描述,触发器(Trigger) 选择 当特定事件被记录时 类型,设置日志为 Microsoft-Windows-DHCP-Client/Operational, 源为 Dhcp-Client,事件ID为 50028 (IP address change,IP地址更改)。
*注意:如果源只有 Dhcpv6-Client 选项,请重新选择日志,有两个 Microsoft-Windows-DHCP-Client/Operational。
-
操作 页面选择 启动程序 操作类型,输入
ddns.exe的路径完成或者输入pythonw路径(防止出现运行的黑框), 并将添加参数指向 ddns 主程序的路径(<path to ddns>/main.py),将起始于指向 ddns 程序的项目根目录(<path to ddns>)。 -
最后保存并完成创建
完成计划任务的设置之后还需要打开对应的日志记录,Windows 默认未开启 Microsoft-Windows-DHCP-Client/Operational 记录,所以如果没有开启日志记录,任务计划应该永远不会自动触发。
-
打开 事件查看器(
eventvwr.msc)。 -
打开 应用程序与服务日志 > Microsoft > Windows
-
找到 Dhcp-Client, 选中该条目下的 Microsoft-Windows-DHCP-Client/Operational
-
右键选择 启用日志, 或者在右侧的 操作 面板选择 启用日志
如果您遇到任何问题,请在 GitHub issues 中提交, 如果有精力我会回复处理,不过这个项目本身就是自用的,可能没有那么多精力维护。
我们欢迎任何形式的贡献!如果您想为这个项目做出贡献,请遵循以下步骤:
- Fork 本仓库。
- 创建一个新的分支 (
git checkout -b feature/YourFeature)。 - 提交您的更改 (
git commit -m 'Add some feature')。 - 将您的分支推送到远程仓库 (
git push origin feature/YourFeature)。 - 创建一个新的 Pull Request。



