# ddns-py **Repository Path**: libcsp/ddns-py ## Basic Information - **Project Name**: ddns-py - **Description**: No description available - **Primary Language**: Python - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-03 - **Last Updated**: 2026-08-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ddns-py ## 介绍 ddns-py 是一个基于 Python 的动态域名解析服务,用于替代 ddns-go。 由于之前使用 ddns-go 时发现腾讯云的解析服务存在一些问题,经常出错,因此萌生了自己开发一个动态域名解析工具的想法。ddns-py 的设计理念是:**代码即配置**,用户可以直接修改配置文件来调整参数,无需复杂的编译过程。Python 代码通过虚拟环境可以一键运行,即使是初学者也能轻松上手。 目前支持腾讯云 DNS 解析,其他云服务商(阿里云、Cloudflare)的支持欢迎社区贡献。 ## 软件架构 - **Python 3.14.6** - 核心运行环境 - **requests 2.31.0** - HTTP 网络请求库 - **psutil 1.7.0** - 系统信息获取,用于解析本地网卡 IP 地址 ### 目录结构 ``` ddns-py/ ├── config/ # 配置文件目录 │ ├── __init__.py │ ├── model.py # 数据模型定义 │ └── settings.py # 主配置文件 ├── dns/ # DNS 供应商实现 │ ├── __init__.py │ ├── aliyun.py # 阿里云 DNS 解析 │ ├── cloudflare.py # Cloudflare DNS 解析 │ ├── dns_strategy.py # IP 获取策略 │ └── tencent_cloud.py # 腾讯云 DNS 解析 ├── util/ # 工具模块 │ ├── __init__.py │ ├── ip_cache.py # IP 缓存管理 │ └── net_ip_utils.py # 网络 IP 工具 ├── main.py # 程序入口 ├── run.bat # Windows 启动脚本 └── ip_cache.json # IP 缓存文件 ``` ## 安装教程 ### Windows 系统 双击运行 `run.bat` 即可启动服务。 ### Linux 系统 ```bash python main.py ``` 或使用虚拟环境: ```bash python -m venv .venv source .venv/bin/activate # Linux/Mac # 或 .venv\Scripts\activate # Windows pip install -r requirements.txt python main.py ``` ## 使用说明 ### 配置参数 打开 `config/settings.py` 文件,根据实际需求修改配置参数: ```python # 启用或关闭服务 active=True # True 启用,False 关闭 # 要解析的网卡名称(支持 IPv4/IPv6) interface="以太网" # Windows 网卡名称 # interface="eth0" # Linux 网卡名称 # 域名(不带前缀) domain="infpa.cc" # 解析记录配置 records={ "AAAA": ["www", "@"], # IPv6 记录 # "A": ["www", "@"] # IPv4 记录(取消注释启用) } # 云服务商 API 密钥 secret_id="XXXXXXX" secret_key="XXXXXXXXXX" ``` ### 腾讯云配置示例 ```python active=True interface="以太网" domain="example.com" records={ "AAAA": ["www"], "A": ["@", "blog"] } secret_id="YOUR_SECRET_ID" secret_key="YOUR_SECRET_KEY" ``` ### 阿里云配置示例 在 `dns/aliyun.py` 中配置解析逻辑后,在 `config/settings.py` 中设置: ```python # 切换到阿里云 supplier="aliyun" secret_id="YOUR_ALIYUN_ACCESS_KEY_ID" secret_key="YOUR_ALIYUN_ACCESS_KEY_SECRET" ``` ### Cloudflare 配置示例 ```python # 切换到 Cloudflare supplier="cloudflare" secret_id="YOUR_CLOUDFLARE_API_TOKEN" secret_key="" # Cloudflare 使用 API Token ``` ## 工作原理 1. **IP 获取**:程序通过 `dns_strategy.py` 中的策略,根据网卡名称获取本地 IPv4 或 IPv6 地址 2. **缓存机制**:使用 `ip_cache.py` 缓存上次解析的 IP,避免重复解析 3. **DNS 解析**:调用对应云服务商的 API 更新 DNS 记录 4. **多线程支持**:每个激活的 DNS 提供商在独立线程中运行 ## 参与贡献 1. Fork 本仓库 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交变更 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 创建一个 Pull Request 当前贡献者:**zhu bin** ## 许可证 本项目遵循项目仓库中的 LICENSE 文件所述的许可证。 ## 联系方式 - 项目地址:https://gitee.com/libcsp/ddns-py - 问题反馈:请通过 Gitee Issues 提交