利用Cloudflare + Python 免费开启(IPV4/IPV6)DDNS
目录
- 前言
- 准备条件
- 添加域名
- 获取账户API_Key
- 创建脚本
- 执行脚本
- 自动化设置
- 开机启动
- 定时启动(每五分钟启动一次)
- 参考链接
前言
为什么需要DDNS?
当然是你没有固定的公网IP地址,这是就需要DDNS,使DNS服务器准确解析你的IP
准备条件
- 将域名接入Cloudflare
- 服务器存在Python3环境
添加域名
- 打开Cloudflare官网并登录
- 点击需要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相关推荐
- 校园网环境下通过OpenWrt软路由利用DNSPod实现QNAP NAS远程IPv4+IPv6双栈访问
起因是我在宿舍部署了一台NAS,定期对我的个人数据进行备份,同时在NAS上搭建了文件服务器.工作站.个人多媒体中心以及git等服务,但是因为校园网ipv4无法给上级路由配置端口转发,IPv6只能获取到 ...
- 威联通nas的ipv4+ipv6双栈https证书ddns折腾记录
IPV4+IPV6公网DDNS搭配https 背景 起因 目标 方案 过程 光猫配置 路由器配置 Let's Encrypt证书申请 DDNS配置 301永久重定向 证书文件使用 nginx反向代理 ...
- 校验Ipv4 ipv6的格式 python
校验Ipv4 ipv6的格式 python 1.校验Ipv4的格式 #校验Ipv4的格式 def checkipv4(ipv4):matchobj = re.match(r'^(((\d{1,2})| ...
- linux关闭ipv6显示以及开启ipv4地址
linux关闭ipv6显示以及开启ipv4地址 关闭ipv6 1.使用ifconfig(或者IP addr)命令查看网卡信息,如果出现inet6 fe80::20c:29ff:fed0:3514,说明 ...
- 【DDNS】Python实现阿里云域名DDNS
第一步:拥有阿里云域名,设置阿里云域名管理账号 转载自:https://www.jianshu.com/p/b8e01206f58c 1.1 登录阿里云控制台 1.2 在产品与服务中搜"访问 ...
- 使用acmesh免费开启https(详细概念介绍与操作步骤记录)
前言 记录一次使用acme.sh免费开启https的过程,前半部分列举一些用到的概念,后半部分记录具体操作步骤.文章已调整好线性阅读顺序,按顺序阅读即可.流程中涉及的概念会尽量进行讲解,以减少阅读此篇 ...
- 利用Cloudflare为基于GitHub Pages的Hexo博客添加HTTPS支持
文章目录 ● 前言 ● 注册 Cloudflare ● 添加站点 ● 修改DNS ● 开启 HTTPS ● 重定向强制 HTTPS HTTP(超文本传输协议),是一个基于请求与响应,无状态的,应用层的 ...
- Python+阿里云DNS 搭建DDNS动态域名解析
家用的动态公网IP在断电以及一段时间后会变化,现在家宽公网IP开网盘以及代理管得越来越严格,已经有检测到被封的案例 上海检测web封停 这让我这种挂种子的PT党(迫真)感到害怕 以前我把国外的免费域名 ...
- jellyfin使用ipv6+DDNS实现外网访问
前言 原本使用frp的方案进行外网访问jellyfin,但是阿里云的轻量服务器的带宽只有5M,只能支持看1080p的视频,看4K有点吃力,为了有更好的观影体验,选择ipv6+DDNS的方式实现外网访问 ...
最新文章
- 通过Excel生成批量SQL语句
- iOS iOS-System-Services(系统信息)
- android 之 Activity管理与Intent的六大属性
- ERP failure: Error when opening an RFC connection
- grpc ssl使用
- 【服务器】挖矿病毒 kdevtmpfsi(一针见效)
- VUE3@clli组件样式、全局组件、配置打包
- 给你个选择Mac的理由,浅谈Macos系统的优点
- sql中如何将视图中某一字段相同的数据合并 不同内容的字段相加_Tableau基础如何合并你的数据?理解与逻辑(上)...
- java jbpm工作流_[JAVA] Jbpm工作流引擎原理及Jbpm复杂流程实现视频课程
- 线性回归——多重共线性
- DeDeCMS二次开发教程之程序安装
- ipv6的127位掩码如何表示_子网掩码是什么
- RHCE考试分开三个阶段
- Linux Ubuntu 添加创建新用户步骤 安装 go
- 基础35 空心三角形
- 弹窗代码大全window.open
- java开发任务必备的工具_Web常用开发工具有哪些?常用工具推荐
- Leetcode 334.递增的三元子序列
- BKD tree构造过程