通过dynv6提供ipv6的ddns动态解析服务

dynv6的操作

解析提供者:
dynv6
网站:
https://dynv6.com/zones

创建域名

image.png

创建token

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

win主机上的操作

安装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

编写python代码

vim test.py
如下代码只需在入口函数处填写mac_address和token信息即可。

import re
import subprocess
import requests

def get_ipv6_address(mac_address):
    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 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(ipv6, token, domain):
    # 构建URL
    url = f"http://dynv6.com/api/update?hostname={domain}&token={token}&ipv6={ipv6}&ipv6prefix={ipv6}"
    print('构建URL',url)

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

    # 返回响应内容
    return response.text


if __name__ == "__main__":
    print('begin...')
    
    # 需要填写的参数
    # 替换成你要更新ipv6所属网卡的MAC地址
    mac_address = "mac"
    # 替换成你的token
    token = 'token'
    #填写你要解析的域名
    domain='domain'
    
    #获取ipv6地址
    ipv6_address = get_ipv6_address(mac_address)
    print("MAC地址", mac_address, "对应的IPv6地址为:", ipv6_address)
    ipv6 = ipv6_address
    # 发送更新数据
    response_text = send_dynv6_update_request(ipv6, token, domain)
    print(response_text)



长期运行方式

注册服务的方式运行(建议),注意目标链接的python代码不一致。

https://blog.csdn.net/qq_25759279/article/details/141220138?spm=1001.2014.3001.5501

创建计划任务方式

image.png
image.png

编辑常规

image.png

新建触发器

image.png

新建操作

image.png

编辑条件

image.png

编辑设置

image.png

linux主机上的操作

需安装wget工具

以下是不同Linux发行版安装wget工具的命令:

Ubuntu/Debian
sudo apt update  # 更新包列表
sudo apt install wget  # 安装wget

CentOS/RHEL

CentOS 7及以下版本:

sudo yum install wget  # 使用yum安装wget

CentOS 8及更新版本:

sudo dnf install wget  # 使用dnf安装wget

创建shell脚本

vim update_ipv6.sh
#!/bin/bash

# dynv6的API更新令牌
token='填写你的令牌'
hostname='填写你的域名'
# 网卡名
interf='ovs_bond0'

# 提取ovs_bond0接口的第一个全球IPv6单播地址
ipv6=$(ip -6 addr show dev $interf | grep 'inet6' | grep 'dynamic mngtmpaddr noprefixroute' | grep -v 'fe80' | grep -v 'deprecated' | awk '{print $2}' | cut -d/ -f1 | head -n 1)

# 打印提取到的IPv6地址
echo "Extracted IPv6: $ipv6"



# 使用wget命令更新dynv6的A记录
wget --no-check-certificate -q -O dynv6.log  "http://dynv6.com/api/update?hostname=$hostname&token=$token&ipv6=$ipv6&ipv6prefix=$ipv6"

chmod +x update_ipv6.sh

添加脚本到 crontab

  1. 先确保脚本有可执行权限:
chmod +x update_ipv6.sh
  1. 使用 crontab -e 命令编辑 crontab
crontab -e
  1. 添加以下行来安排脚本每天运行:
5 * * * * /path/to/your/update_ipv6.sh

这里要填写update_ipv6.sh脚本的绝对路径,pwd命令可查看当前目录路径。

  1. 保存并退出编辑器。新的 crontab 作业表将自动生效。

说明:crontab 的格式

每行 crontab 作业表的格式如下:

* * * * * command_to_execute
- - - - -
| | | | |
| | | | +---- 一周中的某一天 (0 - 7) (Sunday is both 0 and 7)
| | | +------ 一个月中的某一天 (1 - 31)
| | +-------- 一年中的某一月 (1 - 12)
| +---------- 一天中的某一小时 (0 - 23)
+------------ 一小时中的某一分钟 (0 - 59)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值