自动更新 DNS 解析工具:DDNS

如果你需要自动将域名解析到本机的 IP 地址,支持 IPv4 和 IPv6,并且希望能够在内网和公网 IP 之间切换,那么你可以考虑使用 DDNS 这个工具。DDNS 具有许多强大的功能,包括代理模式和自动创建域名记录,同时支持多个域名和多级域名解析。

项目概述

DDNS 是一个自动更新 DNS 解析的工具,它可以帮助你将域名解析到你的本机 IP 地址。无论是内网 IP 还是公网 IP,IPv4 还是 IPv6,DDNS 都能轻松应对。此外,DDNS 还支持代理模式,多个域名的管理,自动创建新记录等多种功能。

主要特性

DDNS 具有以下主要特性:

1. 兼容和跨平台

  • 可以以可执行文件的形式使用,无需安装 Python 环境。
  • 跨平台支持,可以在 Windows、Linux 和 macOS 上运行。
  • 支持 Python 2 和 Python 3。
  • 可以通过 pip 安装。
  • 提供 Docker 镜像支持。

2. 域名支持

  • 支持多个域名解析。
  • 支持多级域名解析。
  • 可以自动创建新的域名记录。

3. IP 类型

  • 支持内网 IPv4 和 IPv6。
  • 支持公网 IPv4 和 IPv6,并且支持自定义 API。
  • 支持自定义命令和正则表达式选取。

4. 网络代理

  • 支持 HTTP 代理。
  • 可以配置多个代理并自动切换。

5. 服务商支持

  • 支持多个 DNS 服务提供商,包括 DNSPOD、阿里 DNS、DNS.COM、CloudFlare、HE.net 和华为云。

6. 其他功能

  • 可以设置定时任务,定期更新 DNS 解析。
  • 支持 TTL 配置。
  • 可以使用本地文件缓存,减少 API 请求次数。
  • 当 IP 地址发生变化时,可以触发自定义回调 API。

如何使用

安装

你可以根据需要选择以下一种方式来安装 DDNS:

  • 使用 pip 安装(需要 pip 或 easy_install):
pip install ddns
  • 使用二进制版(单文件,无需 Python 环境),根据你的操作系统选择下载:

  • 使用源码运行(需要 Python 环境):

    1. 克隆或下载此仓库并解压。
    2. 运行 ./run.py(在 Windows 上双击 run.bat 或运行 python run.py)。
  • 使用 Docker(需要安装 Docker):

    使用环境变量或配置文件启动 Docker 容器。以下是两种方式的示例:

    • 使用环境变量:
    docker run -d \
      -e DDNS_DNS=dnspod \
      -e DDNS_ID=12345 \
      -e DDNS_TOKEN=mytokenkey \
      -e DDNS_IPV4=ddns.newfuture.cc \
      -e DDNS_IPV6=ddns.newfuture.cc \
      --network host \
      newfuture/ddns
    • 使用配置文件:
    docker run -d \
      -v /path/to/config.json:/config.json \
      --network host \
      newfuture/ddns

快速配置

  1. 申请 API Token 并将其填写到对应的 idtoken 字段中。具体的申请步骤取决于你选择的 DNS 服务提供商。以下是一些常见的 DNS 服务商的申请链接:

  2. 修改配置文件,设置 ipv4ipv6 字段,将待更新的域名添加到列表中。具体的配置方式可以参考配置说明。

详细配置

DDNS 支持多种配置方式,包括命令行参数、JSON 配置文件和环境变量。以下是配置参数的详细说明:

  • id(必须):API 访问 ID,根据你的 DNS 服务提供商申请获得。
  • token(必须):API 授权 token,根据你的 DNS 服务提供商申请获得。注意:不要将此字段泄露。
  • dns:DNS 服务商的名称,可选值包括 "dnspod"、`

"dnspod_com""alidns""dnscom""cloudflare""he""huaweidns""callback"`。

  • ipv4:IPv4 域名列表,可以添加多个域名。
  • ipv6:IPv6 域名列表,可以添加多个域名。
  • index4:IPv4 获取方式,可选值包括 "0""1""2""3""default""public""url:xxx""regex:xxx""cmd:xxx""shell:xxx"
  • index6:IPv6 获取方式,可选值包括 "0""1""2""3""default""public""url:xxx""regex:xxx""cmd:xxx""shell:xxx"
  • ttl:DNS 解析 TTL 时间,可以设置为一个数字,不设置则采用 DNS 默认策略。
  • proxy:HTTP 代理地址,可以配置多个代理,使用分号 ; 分隔。例如,"127.0.0.1:1080;DIRECT"
  • debug:是否开启调试模式,可以设置为 truefalse
  • cache:是否启用本地文件缓存,可以设置为 truefalse,默认为 true。你也可以指定一个具体的缓存文件位置。

index4 和 index6 参数说明

  • 数字(0123 等):表示第 i 个网卡的 IP 地址。
  • 字符串 "default"(或者无此项):表示系统访问外网的默认 IP。
  • 字符串 "public":表示使用公网 IP(使用公网 API 查询,URL 的简化模式)。
  • 字符串 "url:xxx":打开 URL xxx(例如,"url:http://ip.sb"),从返回的数据中提取 IP 地址。
  • 字符串 "regex:xxx":使用正则表达式提取 IP 地址(例如,"regex:192.*")。
  • 字符串 "cmd:xxx":执行命令 xxx 并将其标准输出作为目标 IP。
  • 字符串 "shell:xxx":在系统 shell 中运行命令 xxx 并将其标准输出作为目标 IP。
  • false:强制禁止更新 IPv4 或 IPv6 的 DNS 解析。
  • 列表:按顺序执行列表中的 index 规则,并将首次获得的结果作为目标 IP。

自定义回调配置说明

如果你需要在 IP 地址发生变化时触发自定义回调 API,可以配置以下参数:

  • id 字段填写回调地址,以 HTTP 或 HTTPS 开头。推荐使用 HTTPS 方式的回调 API。当 token 字段非空并且 URL 参数包含常量字符串时,这些常量会被替换为实际值。
  • token 字段为 POST 参数,如果为空或不存在,则使用 GET 方式发起回调。回调参数采用 JSON 格式编码。当 JSON 的首层参数值包含常量字符串时,这些常量会被程序替换为实际值。

以下是常量名称及其对应的常量内容:

  • __DOMAIN__:DDNS 域名。
  • __RECORDTYPE__:DDNS 记录类型。
  • __TTL__:DDNS TTL 时间。
  • __TIMESTAMP__:请求发起时间戳(包含小数部分)。
  • __IP__:获取的对应类型的 IP 地址。

配置示例

{
  "$schema": "https://ddns.newfuture.cc/schema/v2.8.json",
  "id": "12345",
  "token": "mytokenkey",
  "dns": "dnspod",
  "ipv4": ["ddns.newfuture.cc", "ipv4.ddns.newfuture.cc"],
  "ipv6": ["ddns.newfuture.cc", "ipv6.ddns.newfuture.cc"],
  "index4": 0,
  "index6": "public",
  "ttl": 600,
  "proxy": "127.0.0.1:1080;DIRECT",
  "debug": false
}

定时任务

你可以通过脚本设置定时任务,使 DDNS 定期检查 IP 并自动更新。默认情况下,DDNS 每隔 5 分钟执行一次定时任务。以下是不同操作系统下的设置方式:

Windows

  • 推荐以系统管理员身份运行 task.bat(右键点击并选择“以管理员身份运行”)。
  • 以当前用户身份运行定时任务,双击或运行 task.bat(请注意,运行时可能会弹出黑色命令行窗口)。

Linux

  • 使用 init.dcrontab

    sudo ./task.sh
  • 使用 systemd

    • 安装服务:
    sudo ./systemd.sh install
    • 卸载服务:
    sudo ./systemd.sh uninstall

    该脚本安装的文件符合 Filesystem Hierarchy Standard (FHS) 标准,可执行文件位于 /usr/share/DDNS 目录下,配置文件位于 /etc/DDNS 目录下。

Docker

Docker 镜像已默认启用每 5 分钟执行一次的定时任务,无需额外参数。

常见问题

Windows Server [SSL: CERTIFICATE_VERIFY_FAILED]

如果在 Windows Server 上遇到此错误,请注意 Windows Server 默认的安全策略会禁止信任未添加的 SSL 证书。你可以使用系统自带的 Internet Explorer 浏览器访问一次对应的 API 地址以解决此问题:

问题排查和反馈

如果遇到问题,可以按照以下步骤进行排查和反馈:

  1. 首先,确认问题是否由系统或网络环境引起。
  2. GitHub Issues 中搜索是否有类似的问题。
  3. 如果无法解决或者确定是 bug,请新建一个 Issue 并提供以下信息:

    • 版本和运行方式。
    • 操作系统环境。
    • 出错日志(去掉 idtoken 的配置文件内容)。
    • 如果是源码运行,请提供使用的 Python 环境信息。

以上就是 DDNS 的详细配置和使用说明,希望能够帮助你顺利使用该工具管理 DNS 解析。如果你有更多问题或需要进一步的帮助,请随时联系开发者或在 GitHub 上提出问题。祝你使用愉快!

本文由作者 王大神 原创发布于 大神网的AI博客。

转载请注明作者:王大神

原文出处:自动更新 DNS 解析工具:DDNS

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2023年9月10日
下一篇 2023年9月10日

相关推荐

  • 如何使用Python和Shell脚本创建定时任务备份和数据库压缩工具

    有一天,你突然意识到你的数据库中存储着宝贵的数据,但你不确定这些数据是否安全。你开始考虑如何创建一个自动化的备份和数据库压缩工具,以确保数据的安全性和可用性。本文将向您介绍如何使用Python和Shell脚本创…

    2023年10月13日
    00
  • 穿越商标的火海:Twitter变X的冒险之路

    全球最富有的创业家之一,域名大师埃隆·马斯克,突然宣布了一项令人震惊的计划:将社交媒体巨头Twitter改名为“X”。这一决定引发了轩然大波,不仅因为这个改名涉及了一场商标战争,还因为X.com域名的前主人曾是PayPa…

    2023年7月25日
    00
  • 一个域名的故事:C.MD的兴衰

    在数字化时代,域名已经成为了互联网世界的黄金地址,它们不仅代表着网站和在线身份,还承载着无数个人和企业的梦想。然而,就在不久前,一个备受关注的域名,C.MD,竟然陷入了一个令人惋惜的状态——赎回期。这个域…

    2023年10月21日
    00
  • 在Ubuntu上使用Shell脚本和定时任务管理数据库:自动化数据处理的完美解决方案

    在现代信息时代,数据管理和处理对于各种组织和个人都至关重要。Ubuntu是一种功能强大的操作系统,而Shell脚本和定时任务是自动化数据管理的强大工具。本教程将向您展示如何在Ubuntu上使用Shell脚本和定时任务来有…

    2023年10月12日
    00
  • 如何通过Python自动启动小米电视上的指定APP

    大家好,今天我要和你分享一个有趣的技巧,可以帮助你自动启动小米电视上的指定APP。你是否曾经遇到过小米电视更新后,导致已安装的APP被分类,难以找到的问题?如果是的话,这篇教程将为你提供一种解决方案。 背景…

    2023年9月19日
    00
  • 如何自动加密和删除文件夹中的文件

    你是否曾经担心过将重要文件存储在电脑上,担心它们可能被他人访问或丢失?在本教程中,我们将介绍如何使用Python编写一个自动化脚本,将文件夹中的文件压缩、加密,并安全地删除原始文件,以保护你的数据。让我们…

    2023年10月4日
    00
  • 路由器第三方固件OpenWRT有哪些用途?

    在数字时代,家庭网络已经变得不可或缺。现在的家庭不仅需要强大而稳定的Wi-Fi信号,还需要一些高级的网络管理工具来满足日常需求。路由器第三方固件OpenWRT是一款开源的嵌入式操作系统,它可以为您的路由器提供更…

    2023年4月16日
    00
  • 如何使用Python实现自动化定时发微博?实用指南

    本文将详细介绍如何使用Python实现自动化定时发微博,从准备工作到代码实现,以及如何设置定时任务。适合那些希望通过技术手段简化社交媒体管理的用户。文章包含详细的代码示例和操作步骤,助你轻松掌握这一技能。 …

    2024年5月26日
    00
  • Windows 11自动更新引发用户不满:一场硬盘的夜间巡演

    Windows 11,微软的最新操作系统,自发布以来一直备受关注。然而,近期一些用户却对其自动更新机制表示不满。在这篇文章中,我们将探讨Windows 11自动更新的问题,以及用户们的不满情绪。同时,我们还将提供一些建…

    2024年1月13日
    00
  • 优化家庭服务器服务端口管理:让一切变得井然有序

    大家好,我是王大神!今天我将为你分享一些关于优化家庭服务器服务端口管理的技巧。如果你像我一样,家中有多个服务运行在不同的端口上,而且每次都要查找端口号,那么这篇文章将帮助你让一切变得井然有序,让管理…

    2023年9月22日
    00