使用华为云 DNS 拉平 CNAME 记录(CDN 场景)
接上一篇文章使用 DNSPod 拉平 CNAME 记录(CDN 场景)这篇文章将介绍如何使用华为云 DNS 拉平 CNAME 记录(CDN 场景)。
操作场景
本文将指导您如何使用华为云 DNS 的 API 实现拉平 CNAME 记录,以解决相关记录冲突的问题。
方法说明
不再重复说明了,如有兴趣请看使用 DNSPod 拉平 CNAME 记录(CDN 场景)
前提条件
- 域名解析托管在华为云 DNS
项目地址
https://github.com/KincaidYang/CNAMEFlattening
操作步骤
获取脚本
Flame 版本
该版本适用于腾讯云 CDN、华为云 CDN
IPv4 脚本:
1 | wget https://dl.r2wind.cn/script/CNAMEFlattening/HuaweiCloud/Flame/Huaweicloud-Flame-IPv4.py |
IPv6 脚本:
1 | wget https://dl.r2wind.cn/script/CNAMEFlattening/HuaweiCloud/Flame/Huaweicloud-Flame-IPv6.py |
Frost 版本
该版本适用于腾讯云 EdgeOne、阿里云 CDN、天翼云 CDN
IPv4 脚本:
1 | wget https://dl.r2wind.cn/script/CNAMEFlattening/HuaweiCloud/Frost/Huaweicloud-Frost-IPv4.py |
IPv6 脚本:
1 | wget https://dl.r2wind.cn/script/CNAMEFlattening/HuaweiCloud/Frost/Huaweicloud-Frost-IPv6.py |
使用 git clone 命令下载脚本
使用 git clone 命令:
1 | git clone https://github.com/KincaidYang/CNAMEFlattening.git |
配置变量
打开脚本,根据脚本提示修改如下变量。
1 | # 配置参数 |
本站示例配置
1 | # 配置参数 |
说明:
若觉得下方用于 ECS 协议的 IP 子网存在问题,可自行修改。
安装依赖
脚本使用 Python3(一般镜像都会预装 Python3)、requests 库、华为云DNS SDK 若未安装请执行以下命令安装。
1 | # CentOS/RedHat: |
说明:
某些系统下可能需要将 pip3 替换为 pip。
导入记录
使用前请您前往华为云 DNS 控制台添加或使用下方模板导入记录,否则脚本无法正常运行。
下载记录模板
IPv4模板:https://dl.r2wind.cn/template/HuaweicloudDNS-IPv4.xlsx
IPv6模板:https://dl.r2wind.cn/template/HuaweicloudDNS-IPv6.xlsx
说明:
导入前请自行修改模板中的域名,模板中的域名为域名前缀,如’www’等,根域名请留空。
导入前请自行修改模板中的记录值为当前 CDN 节点 IP,否则会影响域名正常访问。(节点 IP 可以通过nslookup查询CDN CNAME地址获取)
若需要导入的记录已在控制台添加过,请删除原有记录后再导入。
导入记录
- 登录华为云 DNS 控制台。
- 点击对应的域名
- 切换到批量导入/导出选项卡,点击批量导入上传模板
- 等待导入完成,请注意查看导入结果,若有导入失败的记录,查看原因修正后手动添加记录,不要重复导入。
调试脚本
请先在本地使用编辑器(如VScode)调试脚本,若调试成功则可继续部署。
若脚本正常运行,您将看到类似如下输出:
部署脚本
部署运行
脚本使用 cron 定时运行,故您需要安装 cron。
1 | # CentOS/RHEL |
安装完成后,您需要编辑 crontab 文件,添加定时任务。
1 | crontab -e |
在 crontab 文件中添加如下内容:
1 | */5 * * * * python3 /root/HuaweicloudDNSCDN-IPv4.py |
说明:
本配置每 5 分钟运行一次,您可以根据需要自行修改。
请将 /root/DNSPodCDNv4.py 替换为您的脚本路径。
若您使用的是 IPv6 脚本,请将上述内容替换为 */5 * * * * python3 /root/HuaweicloudDNSCDN-IPv6.py
验证效果
您可以在 华为云 DNS 控制台查看对应域名的相关记录,若记录值已经更新为 CDN 节点 IP,则说明脚本运行成功。
问题反馈
若您在使用过程中遇到任何问题,欢迎您提交 Issue。