自动更新 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日

相关推荐

  • 路由器第三方固件OpenWRT有哪些用途?

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

    2023年4月16日
    00
  • 远程访问工作室服务器的完美指南:中秋节也能保持高效工作

    当节日临近,我们往往会面临一些特殊情况,例如需要远程连接到办公室的服务器或工作站。这可能是因为你需要处理紧急事务,或者只是想在度过节日的同时保持工作的灵活性。无论何种原因,我将在本文中为你介绍一些解…

    2023年9月27日
    00
  • 手把手教你建立个人网站:零基础搭建WordPress网站

    大家好,我是一名混迹网络多年的IT从业者,如今又成为IT圈的一员。我曾经搭建过各种大小的网站,今天我想为你们详细讲解如何从零开始建立个人网站。如果你有一定的动手能力,相信看完这篇教程后,你就能轻松搭建自…

    2023年9月28日
    00
  • 如何自动化发送数据库查询结果邮件:简单教程

    数据库查询是许多自由职业者和远程工作者日常工作中的一项重要任务。然而,手动执行这些查询并将结果发送给特定的收件人可能会非常耗时,特别是当这个任务需要定期执行时。为了提高工作效率,我们将学习如何使用Pyt…

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

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

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

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

    2023年10月21日
    00
  • 解决IDM(internet download manager)自动弹出自动更新的提示

    故事发生在一个寒冷的冬日。你正专心工作或享受着一部电影,突然,一个熟悉的弹窗出现在屏幕上。它来自你最喜欢的下载软件,IDM(Internet Download Manager)。虽然IDM是一款非常优秀的下载工具,但这个弹窗已经出…

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

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

    2024年1月13日
    00
  • 大众智慧诊所管理软件 v4.2 – 为医务人员打造的专业管理工具

    在医疗领域,随着科技的进步,电子化管理已成为不可或缺的一环。然而,对于许多诊所、门诊和医务室来说,找到一款功能全面、易于操作的管理软件一直是一个挑战。幸运的是,我们今天将介绍的《大众智慧诊所管理软件…

    2023年10月28日
    00
  • DDns打造基于ipv6的多终端跨平台远程桌面办公环境

    有一天,你突然意识到,你的工作需要更多的灵活性。你需要能够随时随地访问自己的办公环境,无论你身在何处。这时,远程桌面就成了你的不二选择。但是,你遇到了一个问题:IPv4地址有限,而且在全球范围内逐渐枯竭…

    2022年2月25日
    00