首页 > 系统相关 >Windows通过dynv6提供免费的IPv6动态域名解析(DDNS)服务(注册服务的方式运行)

Windows通过dynv6提供免费的IPv6动态域名解析(DDNS)服务(注册服务的方式运行)

时间:2024-08-15 16:22:34浏览次数:18  
标签:Windows IPv6 域名解析 ipv6 token address 地址 -- dynv6

Dynv6 IPv6 Updater

项目简介

Dynv6Updater 是一个用于自动更新 Dynv6 域名的 IPv6 地址的 Python 脚本。它会定期从指定的网卡中获取 IPv6 地址,并将其更新到 Dynv6 的域名解析记录中。本项目通过 NSSM 将 Python 脚本注册为 Windows 服务,以实现长期稳定运行。

特性

  • 自动获取 IPv6 地址: 根据提供的 MAC 地址,从系统中获取相应网卡的 IPv6 地址。
  • 自动更新 Dynv6 记录: 将获取到的 IPv6 地址发送到 Dynv6 平台,以更新域名的 IPv6 解析记录。
  • 定时运行: 脚本会每隔一段时间(默认30秒)运行一次,确保域名解析记录始终是最新的。

使用方法

环境依赖

运行该脚本需要以下依赖:

  • Python 3.x
  • requests

安装 requests 库:

以下2选一

pip install requests
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple

运行脚本

编写脚本保存为dynv6_updater.py,不需要对脚本有任何更改。

import re
import subprocess
import requests
import time
import argparse

class Dynv6Updater:
    def __init__(self, mac_address, token, domain):
        self.mac_address = mac_address  # MAC地址
        self.token = token  # Dynv6的token
        self.domain = domain  # 域名

    def get_ipv6_address(self):
        try:
            # 使用ipconfig命令获取网卡信息
            result = subprocess.run(['ipconfig', '/all'], capture_output=True, text=True)
            if result.returncode == 0:
                output = result.stdout
                # 使用正则表达式匹配适配器段落
                adapters = re.findall(r'适配器 .*?:\n(.*?)\n\n', output, re.DOTALL)
                for adapter in adapters:
                    # 检查是否包含给定的MAC地址
                    if self.mac_address in adapter:
                        # 查找IPv6地址
                        ipv6_match = re.search(r'IPv6 地址.*?:(.*?)(?:\n|$)', adapter)
                        if ipv6_match:
                            ipv6_address = ipv6_match.group(1).strip().split('(首选)')[0]
                            return ipv6_address
                return "未找到匹配的网卡地址"
            else:
                return "无法执行ipconfig命令"
        except Exception as e:
            return f"发生错误:{str(e)}"

    def send_dynv6_update_request(self, ipv6):
        try:
            # 构建URL
            url = f"http://dynv6.com/api/update?hostname={self.domain}&token={self.token}&ipv6={ipv6}&ipv6prefix={ipv6}"
            print('构建URL:', url)

            # 发送GET请求
            response = requests.get(url)

            # 返回响应内容
            return response.text
        except Exception as e:
            return f"请求失败:{str(e)}"

    def run(self, interval=30):
        while True:
            try:
                # 获取IPv6地址
                ipv6_address = self.get_ipv6_address()
                print("MAC地址", self.mac_address, "对应的IPv6地址为:", ipv6_address)
                if ipv6_address and "未找到匹配的网卡地址" not in ipv6_address and "无法执行ipconfig命令" not in ipv6_address:
                    # 发送更新数据
                    response_text = self.send_dynv6_update_request(ipv6_address)
                    print("Dynv6响应:", response_text)
                else:
                    print("未获取到有效的IPv6地址:", ipv6_address)
            except Exception as e:
                print(f"运行时发生错误: {e}")
            finally:
                # 等待指定的时间间隔
                print(f"等待 {interval} 秒...")
                time.sleep(interval)

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='Dynv6 IPv6 Updater')
    parser.add_argument('--mac_address', required=True, help='网卡的MAC地址')
    parser.add_argument('--token', required=True, help='Dynv6的token')
    parser.add_argument('--domain', required=True, help='Dynv6的域名')

    args = parser.parse_args()

    # 创建Dynv6Updater对象并运行
    updater = Dynv6Updater(args.mac_address, args.token, args.domain)
    updater.run(interval=30)  # 运行,每30秒更新一次

使用以下命令运行脚本:

python dynv6_updater.py --mac_address <MAC地址> --token <Dynv6 Token> --domain <域名>

参数说明

  • --mac_address:网卡的 MAC 地址,用于识别需要获取 IPv6 地址的网卡。
  • --token:您的 Dynv6 API Token,用于授权更新操作。
  • --domain:您希望更新的 Dynv6 域名。

示例

假设您的网卡 MAC 地址为 00:1A:2B:3C:4D:5E,Dynv6 Token 为 your_token_here,域名为 example.dynv6.net,您可以使用如下命令启动脚本:

python dynv6_updater.py --mac_address 00:1A:2B:3C:4D:5E --token your_token_here --domain example.dynv6.net

注意事项

你可以通过文章最后 部分了解MAC地址,Dynv6 Token,Dynv6 Token,域名的获取方法

日志输出

运行脚本后,您会在控制台看到类似以下的输出:

MAC地址 00:1A:2B:3C:4D:5E 对应的 IPv6 地址为:  240e::1a2b:3c4d:5e6f:7g8h
构建 URL: http://dynv6.com/api/update?hostname=example.dynv6.net&token=your_token_here&ipv6= 240e::1a2b:3c4d:5e6f:7g8h&ipv6prefix=240e::1a2b:3c4d:5e6f:7g8h
Dynv6 响应: OK
等待 30 秒...

注意事项

  • 请确保您提供的 MAC 地址和 Dynv6 Token 是正确的,否则脚本可能无法正常工作。
  • 如果脚本未能获取 IPv6 地址,可能是因为未找到匹配的网卡,或未能成功执行 ipconfig 命令。

Windows 服务注册

步骤 1: 下载并安装 NSSM

  1. 访问 NSSM 官网 下载适用于您的系统的 NSSM 版本(通常是 win64win32),并解压缩到一个文件夹中,比如 C:\nssm

步骤 2: 准备 Python 环境和脚本

  1. 确保 Python 已安装:

    • 确保您的系统已经安装了 Python,并且所有需要的库(如 requests)都已经安装。
  2. 保存 Python 脚本:

    • 将您的 Python 脚本保存到一个特定的目录,比如 C:\scripts\dynv6_updater.py

步骤 3: 使用 NSSM 注册服务

  1. 打开命令提示符:

    • 以管理员身份打开命令提示符。
  2. 导航到 NSSM 所在目录:

    • 进入 NSSM 所在的目录,例如:

      cd C:\nssm\win64
      

    以上1、2步骤也可以在资源管理器中进入到nssm.exe 所在目录后按住shift键不动右键选择在此处打开 Powershell 窗口(S)

  3. 注册服务:

    • 运行以下命令来注册您的 Python 脚本为服务:

      .\nssm.exe install UpdateIpv6Service
      

      这会弹出 NSSM 的服务配置窗口。

  4. 配置服务:

    • 在 NSSM 服务配置窗口中,进行以下设置:

      • Application Path: 指定 Python 解释器的路径,例如 C:\Python39\python.exe
      • Startup directory: 指定 Python 脚本所在的目录,例如 C:\scripts\
      • Arguments: 输入 Python 脚本的路径和参数,例如 dynv6_updater.py --mac_address 00:1A:2B:3C:4D:5E --token your_token_here --domain example.dynv6.net

      最终构建的结果如下

      C:\Python39\python.exe C:\scripts\dynv6_updater.py --mac_address 00:1A:2B:3C:4D:5E --token your_token_here --domain example.dynv6.net
      

      注意事项

      建议install前先检查构建的结果在Powershell 窗口(S)下是否能正常运行

      在cmd使用以下命令获取python解释器路径

      where python
      
  5. 设置服务启动类型:

    • 切换到 “Details” 标签页,找到 “Startup type” 选项,并将其设置为 “Automatic”,这将使服务在系统启动时自动启动。
  6. 保存服务:

    • 配置完成后,点击 “Install service” 按钮,NSSM 会将该服务注册到 Windows 服务中。

步骤 4: 启动服务并验证

  1. 启动服务:

    • 在命令提示符中,使用以下命令启动服务:

       .\nssm.exe start UpdateIpv6Service
      
    • 您也可以在 Windows 服务管理器 (services.msc) 中手动启动服务。

  2. 验证服务运行:

    • 打开 Windows 服务管理器 (services.msc),按U键查找名为 UpdateIpv6Service 的服务,并确认其状态为“正在运行”(Running)。
    • 确认服务的 启动类型 显示为“自动”(Automatic)。

步骤 5: 设置日志记录(可选)

  1. 配置日志输出:

    • 打开 NSSM 的配置窗口:

      .\nssm.exe edit UpdateIpv6Service
      
    • “I/O” 标签页中,可以设置标准输出(stdout)和标准错误(stderr)的日志文件路径,以便记录服务的输出信息。

步骤 6: 重启系统并验证

  1. 重启计算机:

    • 重新启动计算机,确保服务在系统启动时自动启动。
  2. 检查服务状态:

    • 重启后,再次打开 Windows 服务管理器 (services.msc),确认服务 UpdateIpv6Service 的状态为“正在运行”(Running)。

通过这些步骤,您的 Python 脚本现在已经成功注册为一个在 Windows 系统启动时自动运行的服务,并且可以通过 NSSM 进行管理和监控。

附:以下为帮助操作

卸载服务

.\nssm.exe stop UpdateIpv6Service
.\nssm.exe remove UpdateIpv6Service

获取dynv6的token

dynv6
网站:
https://dynv6.com/zones

创建域名

image.png

创建token

image.png
image.png
image.png
image.png

安装python环境。

下载地址
https://www.python.org/downloads/
点击downlaod下载安装即可
image.png

安装python第三方库

requests

  • 简介: requests 库是一个流行的第三方库,用于处理 HTTP 请求。
  • 用途: 发送 GET、POST 等 HTTP 请求,处理响应数据。
  • 安装方法: 你需要使用 pip 来安装 requests 库。
pip install requests
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple

获得网卡mac地址

用于定位解析那张网卡
在win运行cmd,在cmd终端执行ipconfig /all 命令查看网卡的mac地址
image.png

标签:Windows,IPv6,域名解析,ipv6,token,address,地址,--,dynv6
From: https://blog.csdn.net/qq_25759279/article/details/141220138

相关文章

  • Windows11 微软Microsoft官方制作系统U盘方法,系统安装最详细教程
    准备一个8G容量以上的U盘制作系统盘注意,在制作系统盘时会格式化U盘,所以最好准备个空U盘,请做好备份!防止资料丢失。因为做系统盘要清空原有U盘的所有数据。制作系统盘windows系统一般建议安装最新版本,如果习惯使用win10可以安装win10版本,如果是12代之后的英特尔CPU最好安装win11,对......
  • 解决 Docker CE 在无根模式(rootless)下无法通过 IPv6 拉取映像的问题
    折腾一天快把我逼疯了本来Docker对IPv6的支持就不好,再来个rootless,雪上加霜首先,我们要区分DockerEngine和里面的Image。拉取映像是DockerEngine在工作,也就是那个Daemon本身,而不是某个container或image。RootlessDocker使用RootlessKit来管理用户命名......
  • Windows11 微软Microsoft官方系统安装、重装操作教程
    01系统镜像下载推荐到微软中国官网下载Windows正版系统,或者可以到第三方的系统镜像下载站获取下载链接,使用迅雷工具进行下载,我这里推荐两个下载站,如果不想弄迅雷下载那么麻烦,也可以用我的123盘分享下载还是那句话,非常不建议下载各种奇葩定制系统,大部分系统中有夹带私货,安全性和......
  • windows下yolov8训练环境配置
    安装anaconda3condacreate-nyolov8python=3.8##进入yolov8虚拟环境activateyolov8pipinstallultralyticscondainstallchardet安装pytorch、cudahttps://pytorch.org/get-started/locally/condainstallpytorchtorchvisiontorchaudiopytorch-cuda=11.......
  • 在 Ubuntu 上使用 bash 访问 Windows 的 Program Files (x86) 目录时,遇到 “未预期的
    ubuntu进入windowsProgramFiles(x86)目录时提示bash:未预期的符号“(”附近有语法错误 是因为目录名中包含了空格和特殊字符(如括号)。在 bash 中,处理这些字符时需要特别注意。以下是解决方法:使用引号:用引号将路径括起来,以处理目录中的空格和特殊......
  • 类Unix和Windows的区别
    类Unix和Windows的区别类Unix系统通常指那些遵循Unix设计原则的操作系统,如Linux、macOS、FreeBSD、Solaris等。Windows属于WindowsNT操作系统家族,不是类Unix系统。WindowsNT系列则有自己独特的设计和架构,不遵循Unix的设计。主要区别内核架构:Windows:基于Windows......
  • windows-g下载js库使用时报错:无法加载文件 D:\code\node\node_global\create-reac
    无法加载文件D:\code\node\node_global\create-react-app.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅https:/go.microsoft.com/fwlink/?LinkID=135170中的about_Execution_Policies。当我们在windows上-g(全局)安装一个js库时,执行会报这个错误,然后我们看......
  • windows保姆级的pycharm+anaconda搭建python虚拟环境
    (一)pycharm安装1.下载(1)从官网下载 ,一般来说选择社区版就够用了。我这里选择2024.1.6的windows版本OtherVersions-PyCharmGetpastreleasesandpreviousversionsofPyCharm.https://www.jetbrains.com/pycharm/download/other.html 2.安装(1)双击下载好的pycharm安......
  • Windows:hosts文件作用,程序员开发需要掌握哪些内容
    一、hosts文件的基本概念和作用1.1、基本概念:hosts文件是一个没有扩展名的系统文件,位于:Windows系统的:C:\Windows\System32\drivers\etc\hostsMacOSX和Linux操作系统:Hosts文件位于/etc/hosts。1.2、主要作用:hosts文件用于将网址域名与其对应的IP地址建立一个关联“数据库......
  • [Windows][代码]Windows使用bat文件删除文件
     在Windows操作系统中通过命令提示符(cmd)删除文件和文件夹的批处理脚本。定义基础路径setbasePath=D:\soft\        这行代码设置了基础路径变量basePath,其值为D:\soft\。删除指定文件夹内的所有文件:del"%basePath%\server\temp\*.*"/f/s/q/a       ......