利用Cloudflare + Python 免费开启(IPV4/IPV6)DDNS

您所在的位置:网站首页 cloudflareapi令牌 利用Cloudflare + Python 免费开启(IPV4/IPV6)DDNS

利用Cloudflare + Python 免费开启(IPV4/IPV6)DDNS

2023-09-08 11:36| 来源: 网络整理| 查看: 265

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

前言

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

准备条件 将域名接入Cloudflare服务器存在Python3环境 添加域名 打开Cloudflare官网并登录点击需要DDNS的主域名再在选择栏选择DNS

点击"DNS"示例图 3. 添加一条域名解析, 名称和IP地址可自定义 填写示例图 4. 打开开发者工具点击Network选择Network 5. 点击刚刚添加的域名,再重新随便写入一个IP地址,并保存ipv6示例图 ipv6示例图 6. 回到network面板,如示例图示 步骤示例图

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

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

获取账户API_Key

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

创建脚本

在代码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: PyCharm import urllib3 import json def 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': '[email protected]', '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


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3