目录

  • 前言
  • 准备条件
  • 添加域名
  • 获取账户API_Key
  • 创建脚本
  • 执行脚本
  • 自动化设置
    • 开机启动
    • 定时启动(每五分钟启动一次)
  • 参考链接

前言

为什么需要DDNS?
当然是你没有固定的公网IP地址,这是就需要DDNS,使DNS服务器准确解析你的IP

准备条件

  • 将域名接入Cloudflare
  • 服务器存在Python3环境

添加域名

  1. 打开Cloudflare官网并登录
  2. 点击需要DDNS的主域名再在选择栏选择DNS


3. 添加一条域名解析, 名称和IP地址可自定义

4. 打开开发者工具点击Network
5. 点击刚刚添加的域名,再重新随便写入一个IP地址,并保存

6. 回到network面板,如示例图示

https://dash.cloudflare.com/api/v4/zones/111/dns_records/222

其中111为区域 ID, 222为DNS解析ID
将这两个ID记下来, 等一会要用

获取账户API_Key

点击右上角用户头像—我的个人资料—上方栏我API令牌

创建脚本

在代码main区域内填写对信息:

区域 ID, DNS解析ID, 账号注册邮箱, API_Key, 解析的域名
注意:区域 ID, DNS解析ID, API_Key 是固定不变的
而DNS解析ID, 解析域名等在每条解析下是不一样的

# -*- coding = utf-8 -*-
# @Author: yinzs Wang
# @Time: 2021/1/31 8:41
# @File: DDNS_IPV6.py
# @Software: PyCharmimport urllib3
import jsondef askApi(accountInfo, dnsInfo):apiUrl = 'https://api.cloudflare.com/client/v4/zones/%s/dns_records/%s' % (accountInfo['zones'], dnsInfo['dns_records'])dnsInfo.pop('dns_records')body = json.dumps(dnsInfo)headers = {'user-agent': 'Mozilla/5.0','X-Auth-Email': accountInfo['email'],'X-Auth-Key': accountInfo['api'],'Content-Type': 'application/json'}res = urllib3.PoolManager().request("PUT", apiUrl, body=body, headers=headers)if res.status == 200:return print(dnsInfo['name'] + ": Success!")else:return print(dnsInfo['name'] + ": Fail!")if __name__ == '__main__':# 获取IP地址ipv4 = urllib3.PoolManager().request(method="GET", url="https://ipv4.icanhazip.com").data.decode().rstrip()ipv6 = urllib3.PoolManager().request(method='GET', url='http://ipv6.icanhazip.com').data.decode().rstrip()# 账户信息(固定)(全部填写)accountInfo = {'email': 'example@qq.com','zones': 'example','api': 'example'}# 请求api实现DDNS 域名解析信息(变化)(按需填写)askApi(accountInfo, dnsInfo={'dns_records': 'example',# DNS解析ID'type': 'A',# A 记录'name': 'example.cc', #解析的域名'content': ipv4, #ipv4地址'ttl': 120,# TTL'proxied': True # 是否开启Cloudflare})askApi(accountInfo, dnsInfo={'dns_records': 'example','type': 'AAAA','name': 'ddns.example.cc','content': ipv6,'ttl': 120,'proxied': True})

执行脚本

先用SSH链接服务器,执行下面的代码

mkdir -p data/python3/ddns
vim

添加修改后脚本代码

:wq data/python3/ddns/ddns.py

python3 data/python3/ddns/ddns.py

如果显示 Success! 代表程序执行成功, 这时去Cloudflare查看域名IPV6地址是否改变:
        如果改变, 那么恭喜你DDNS可以使用,
        否则检查自己操作是否有误或者脚本失效

自动化设置

开机启动

vi /etc/rc.d/rc.local

/bin/python3 /data/python3/ddns/ddns.py

:wq

定时启动(每五分钟启动一次)

crontab -e

*/5 * * * * /bin/python3 /data/python3/ddns/ddns.py

:wq

service crond restart

参考链接

  • 基于 Cloudflare DNS API 部署 IPv6 DDNS

利用Cloudflare + Python 免费开启(IPV4/IPV6)DDNS相关推荐

  1. 校园网环境下通过OpenWrt软路由利用DNSPod实现QNAP NAS远程IPv4+IPv6双栈访问

    起因是我在宿舍部署了一台NAS,定期对我的个人数据进行备份,同时在NAS上搭建了文件服务器.工作站.个人多媒体中心以及git等服务,但是因为校园网ipv4无法给上级路由配置端口转发,IPv6只能获取到 ...

  2. 威联通nas的ipv4+ipv6双栈https证书ddns折腾记录

    IPV4+IPV6公网DDNS搭配https 背景 起因 目标 方案 过程 光猫配置 路由器配置 Let's Encrypt证书申请 DDNS配置 301永久重定向 证书文件使用 nginx反向代理 ...

  3. 校验Ipv4 ipv6的格式 python

    校验Ipv4 ipv6的格式 python 1.校验Ipv4的格式 #校验Ipv4的格式 def checkipv4(ipv4):matchobj = re.match(r'^(((\d{1,2})| ...

  4. linux关闭ipv6显示以及开启ipv4地址

    linux关闭ipv6显示以及开启ipv4地址 关闭ipv6 1.使用ifconfig(或者IP addr)命令查看网卡信息,如果出现inet6 fe80::20c:29ff:fed0:3514,说明 ...

  5. 【DDNS】Python实现阿里云域名DDNS

    第一步:拥有阿里云域名,设置阿里云域名管理账号 转载自:https://www.jianshu.com/p/b8e01206f58c 1.1 登录阿里云控制台 1.2 在产品与服务中搜"访问 ...

  6. 使用acmesh免费开启https(详细概念介绍与操作步骤记录)

    前言 记录一次使用acme.sh免费开启https的过程,前半部分列举一些用到的概念,后半部分记录具体操作步骤.文章已调整好线性阅读顺序,按顺序阅读即可.流程中涉及的概念会尽量进行讲解,以减少阅读此篇 ...

  7. 利用Cloudflare为基于GitHub Pages的Hexo博客添加HTTPS支持

    文章目录 ● 前言 ● 注册 Cloudflare ● 添加站点 ● 修改DNS ● 开启 HTTPS ● 重定向强制 HTTPS HTTP(超文本传输协议),是一个基于请求与响应,无状态的,应用层的 ...

  8. Python+阿里云DNS 搭建DDNS动态域名解析

    家用的动态公网IP在断电以及一段时间后会变化,现在家宽公网IP开网盘以及代理管得越来越严格,已经有检测到被封的案例 上海检测web封停 这让我这种挂种子的PT党(迫真)感到害怕 以前我把国外的免费域名 ...

  9. jellyfin使用ipv6+DDNS实现外网访问

    前言 原本使用frp的方案进行外网访问jellyfin,但是阿里云的轻量服务器的带宽只有5M,只能支持看1080p的视频,看4K有点吃力,为了有更好的观影体验,选择ipv6+DDNS的方式实现外网访问 ...

最新文章

  1. 通过Excel生成批量SQL语句
  2. iOS iOS-System-Services(系统信息)
  3. android 之 Activity管理与Intent的六大属性
  4. ERP failure: Error when opening an RFC connection
  5. grpc ssl使用
  6. 【服务器】挖矿病毒 kdevtmpfsi(一针见效)
  7. VUE3@clli组件样式、全局组件、配置打包
  8. 给你个选择Mac的理由,浅谈Macos系统的优点
  9. sql中如何将视图中某一字段相同的数据合并 不同内容的字段相加_Tableau基础如何合并你的数据?理解与逻辑(上)...
  10. java jbpm工作流_[JAVA] Jbpm工作流引擎原理及Jbpm复杂流程实现视频课程
  11. 线性回归——多重共线性
  12. DeDeCMS二次开发教程之程序安装
  13. ipv6的127位掩码如何表示_子网掩码是什么
  14. RHCE考试分开三个阶段
  15. Linux Ubuntu 添加创建新用户步骤 安装 go
  16. 基础35 空心三角形
  17. 弹窗代码大全window.open
  18. java开发任务必备的工具_Web常用开发工具有哪些?常用工具推荐
  19. Leetcode 334.递增的三元子序列
  20. BKD tree构造过程

热门文章

  1. Android获取当前时间戳(四种方法)
  2. 六顶思考帽(一)-----白色
  3. 从单体架构迁移到微服务
  4. 见识与格局,决定你能走多远
  5. 怎么音频翻译?这些音频翻译软件值得一试
  6. smart rtmpd 服务器配置文件说明及优化方法介绍
  7. powershell 简单实现核算单位往来(对账)
  8. 智慧政务大数据 政务综合服务平台建设项目方案书(word)
  9. ksweb调试php,KSWEB PHP+MySQL環境搭建及應用
  10. 关于Donews的记忆---人生一世