跨region的智能DNS解决方案(二)-CRUD

简介: 项目背景:考虑到高可靠等诸多问题,在公有云或私有云上可能有两地三中心等多种架构模式。 需求在不同地区的实例节点如何通过相同域名解析到本地的A记录或者云产品的CNAME,并实现高可靠。 本文通过named服务实现上述功能,此外由于容器以及kubernetes的流行CoreDNS也是很好的选型在此不做赘述。

跨region的智能DNS解决方案(二)-CRUD

对named进行CRUD操作

上文介绍了如何完整的安装named服务,如果有安装不明白的地方请参考:跨region的智能DNS解决方案(一)本章将对之前部署完毕的named服务进行域名记录的CRUD操作。

通过shell脚本来进行CRUD

通过bash命令或者shell脚本来进行CRUD操作的核心命令为nsupdate
构造命令如下:

nsupdate [ -d ] [ [ -y keyname:secret ] [ -k keyfile ] ] [ -v ]
[ filename ]
-d 调试模式.
-k 从keyfile文件中读取密钥信息.
-y keyname是密钥的名称,secret是以base64编码的密钥.
-v 使用TCP协议进行nsupdate.默认是使用UDP协议.
依照上文所部署的情况,key文件所在路径为/etc/named/keys/keys
执行命令为:
cat >> hangzhou.sre.so-zhangjiakou << EOF
server 10.1.0.100
update add hangzhou.sre.so. 1 A 10.3.3.3
send
quit
EOF
cat >> hangzhou.sre.so-hangzhou << EOF
server 10.1.0.100
update add hangzhou.sre.so. 1 A 10.4.3.3
send
quit
EOF
#指定张家口的key将域名添加到张家口的view上
nsupdate -k /etc/named/keys/keys/Kkey_sreso_zhangjiakou-cloud.+157+34623.key hangzhou.sre.so-zhangjiakou
#指定杭州的key将域名添加到杭州的view上
nsupdate -k /etc/named/keys/keys/Kkey_sreso_hangzhou-cloud.+157+57601.key hangzhou.sre.so-hangzhou

通过python来进行CRUD

dnspython是Python实现的一个DNS工具包,它支持几乎所有的记录类型,可以用于查询、传输并动态更新ZONE信息,同时支持TSIG(事务签名)验证消息和EDNS0(扩展DNS)。在系统管理方面,我们可以利用其查询功能来实现DNS服务监控以及解析结果的校验,可以代替nslookup及dig等工具,轻松做到与现有平台的整合。

pip install dnspython 

具体使用请参考github

# 添加transfer.key内容 key名称key内容


import sys
import dns.update
import dns.query
import dns.resolver
import dns.tsigkeyring

keyring = dns.tsigkeyring.from_text({
    'key_sreso_hangzhou-cloud': 'mu+qLSESeR4AHbFdEiUs73xx1ODWeb9WzhfcNPSO0r/8OqTTNrnahHpe/4peySKMbhnJCnqsZxAzPjiVOPNHlg=='
#    'key_sreso_default': 'rkUWa/RQB+Rnil5kWvP/vBMEmEETx3NPmuuxSWbWLHsCp+fI93HqMdpqIm/zSKcvNsts1NYsnzulNW7nqyIVtg=='
#     'key_sreso_zhangjiakou-cloud': 'mspmOPCmYFQuDWJYoauzIT8rPXCP+RTUHW0sDwM++IzLt/syidjSrQ5SjsOqeO+LJNGKhR3g+hO7FDzN04b2gQ=='
    })

# 实例化一个DNS对象
update = dns.update.Update('sre.so.', keyring=keyring)
update.replace('aliyun', 1, 'A', sys.argv[1])

response = dns.query.tcp(update, '10.1.0.100', timeout=10)

源码解析:
replace方法传参第一个必须是name(也就是域名)后面依次可以为
记录值
ttl+记录值
ttl+记录类型+记录值

如何检测DNS

通过dig命令加指定key的方式可以返回对应的记录结果。
也可以通过dig axfr 加指定key的方式可以返回根域所有记录结果。

dig命令详解

dig(选项)(参数)

选项

@<服务器地址>:指定进行域名解析的域名服务器;
-b:当主机具有多个IP地址,指定使用本机的哪个IP地址向域名服务器发送域名查询请求;
-f<文件名称>:指定dig以批处理的方式运行,指定的文件中保存着需要批处理查询的DNS任务信息;
-P:指定域名服务器所使用端口号;
-t<类型>:指定要查询的DNS数据类型;
-x:执行逆向域名查询;
-4:使用IPv4;
-6:使用IPv6;
-h:显示指令帮助信息。

参数

1 主机:指定要查询域名主机;
2 查询类型:指定DNS查询的类型;
3 查询类:指定查询DNS的class;
4 查询选项:指定查询选项。

dig -k /etc/named/keys/keys/Kkey_sreso_hangzhou-cloud.+157+57601.key mvp.sre.so @10.1.0.100
; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> -k /etc/named/keys/keys/Kkey_sreso_hangzhou-cloud.+157+57601.key mvp.sre.so @10.1.0.100
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54843
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;mvp.sre.so.            IN    A

;; ANSWER SECTION:
luolmvpi.sre.so.        1    IN    A    1.1.3.41

;; TSIG PSEUDOSECTION:
key_sreso_hangzhou-cloud. 0    ANY    TSIG    hmac-md5.sig-alg.reg.int. 1568890339 300 16 p9ctS8CcZcbzwUA+q1UOoA== 54843 NOERROR 0

;; Query time: 0 msec
;; SERVER: 10.1.0.100#53(10.1.0.100)
;; WHEN: Thu Sep 19 18:52:19 CST 2019
;; MSG SIZE  rcvd: 151

dig axfr -k /etc/named/keys/keys/Kkey_sreso_hangzhou-cloud.+157+57601.key sre.so @10.1.0.100
;; global options: +cmd
sre.so.            600    IN    SOA    sre.so. root.sre.so. 2019012811 28800 14400 3600000 86400
sre.so.            600    IN    NS    ns1.sre.so.
mvp.sre.so.        1    IN    A    1.1.3.41
ns1.sre.so.        600    IN    A    10.1.0.100
mvp.sre.so.sre.so.    1    IN    A    1.1.3.41
pytho11n.sre.so.sre.so.    300    IN    A    1.1.1.1
pytho11nasfa.sre.so.sre.so. 1    IN    A    1.1.1.1
python.sre.so.sre.so.    300    IN    A    1.1.1.1
wangmvp.sre.so.sre.so. 1    IN    A    1.1.1.4
sre.so.            600    IN    SOA    sre.so. root.sre.so. 2019012811 28800 14400 3600000 86400
key_sreso_hangzhou-cloud. 0    ANY    TSIG    hmac-md5.sig-alg.reg.int. 1568891019 300 16 +gfZ2D9TorSB+2m4mQ3DaQ== 7853 NOERROR 0
;; Query time: 0 msec
;; SERVER: 10.1.0.100#53(10.1.0.100)
;; WHEN: Thu Sep 19 19:03:39 CST 2019
;; XFR size: 10 records (messages 1, bytes 394)

Q&A

  • 日志返回deny 请检查key的权限是否为600
  • dig axfr 不能正常返回,请确认所在服务器是否在view的acl范围内
相关文章
|
7月前
|
传感器 人工智能 物联网
穿戴科技新风尚:智能服装设计与技术全解析
穿戴科技新风尚:智能服装设计与技术全解析
546 85
|
7月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
7月前
|
算法 前端开发 定位技术
地铁站内导航系统解决方案:技术架构与核心功能设计解析
本文旨在分享一套地铁站内导航系统技术方案,通过蓝牙Beacon技术与AI算法的结合,解决传统导航定位不准确、路径规划不合理等问题,提升乘客出行体验,同时为地铁运营商提供数据支持与增值服务。 如需获取校地铁站内智能导航系统方案文档可前往文章最下方获取,如有项目合作及技术交流欢迎私信我们哦~
399 1
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
DeepSeek 实践应用解析:合力亿捷智能客服迈向 “真智能” 时代
DeepSeek作为人工智能领域的创新翘楚,凭借领先的技术实力,在智能客服领域掀起变革。通过全渠道智能辅助、精准对话管理、多语言交互、智能工单处理、个性化推荐、情绪分析及反馈监控等功能,大幅提升客户服务效率和质量,助力企业实现卓越升级,推动智能化服务发展。
259 1
|
9月前
|
Serverless 对象存储 人工智能
智能文件解析:体验阿里云多模态信息提取解决方案
在当今数据驱动的时代,信息的获取和处理效率直接影响着企业决策的速度和质量。然而,面对日益多样化的文件格式(文本、图像、音频、视频),传统的处理方法显然已经无法满足需求。
325 4
智能文件解析:体验阿里云多模态信息提取解决方案
|
9月前
|
文字识别 开发者 数据处理
多模态数据信息提取解决方案评测报告!
阿里云推出的《多模态数据信息提取》解决方案,利用AI技术从文本、图像、音频和视频中提取关键信息,支持多种应用场景,大幅提升数据处理效率。评测涵盖部署体验、文档清晰度、模板简化、示例验证及需求适配性等方面。方案表现出色,部署简单直观,功能强大,适合多种业务场景。建议增加交互提示、多语言支持及优化OCR和音频转写功能...
295 3
多模态数据信息提取解决方案评测报告!
|
11月前
|
监控 关系型数据库 MySQL
MySQL自增ID耗尽应对策略:技术解决方案全解析
在数据库管理中,MySQL的自增ID(AUTO_INCREMENT)属性为表中的每一行提供了一个唯一的标识符。然而,当自增ID达到其最大值时,如何处理这一情况成为了数据库管理员和开发者必须面对的问题。本文将探讨MySQL自增ID耗尽的原因、影响以及有效的应对策略。
490 3
|
11月前
|
存储 人工智能 自然语言处理
高效档案管理案例介绍:文档内容批量结构化解决方案解析
档案文件内容丰富多样,传统人工管理耗时低效。思通数科AI平台通过自动布局分析、段落与标题检测、表格结构识别、嵌套内容还原及元数据生成等功能,实现档案的高精度分块处理和结构化存储,大幅提升管理和检索效率。某历史档案馆通过该平台完成了500万页档案的数字化,信息检索效率提升60%。
350 5
|
11月前
|
存储
文件太大不能拷贝到U盘怎么办?实用解决方案全解析
当我们试图将一个大文件拷贝到U盘时,却突然跳出提示“对于目标文件系统目标文件过大”。这种情况让人感到迷茫,尤其是在急需备份或传输数据的时候。那么,文件太大为什么会无法拷贝到U盘?又该如何解决?本文将详细分析这背后的原因,并提供几个实用的方法,帮助你顺利将文件传输到U盘。
|
11月前
|
消息中间件 缓存 安全
Future与FutureTask源码解析,接口阻塞问题及解决方案
【11月更文挑战第5天】在Java开发中,多线程编程是提高系统并发性能和资源利用率的重要手段。然而,多线程编程也带来了诸如线程安全、死锁、接口阻塞等一系列复杂问题。本文将深度剖析多线程优化技巧、Future与FutureTask的源码、接口阻塞问题及解决方案,并通过具体业务场景和Java代码示例进行实战演示。
177 3

相关产品

  • 云解析DNS
  • 推荐镜像

    更多
  • DNS