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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 项目背景:考虑到高可靠等诸多问题,在公有云或私有云上可能有两地三中心等多种架构模式。 需求在不同地区的实例节点如何通过相同域名解析到本地的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范围内
相关文章
|
2月前
|
前端开发 安全 JavaScript
官网构建不再难:全方位解析高效解决方案,让企业形象在线上‘大放异彩’
【8月更文挑战第29天】企业门户网站是展示品牌和传递信息的重要窗口,其构建需综合考虑技术选型、内容管理和用户交互等。本文从内容管理系统(CMS)、前端框架、响应式设计、SEO优化及安全防护等方面,评估高效构建方案。WordPress适合快速搭建内容丰富的网站,而Drupal则适用于复杂内容管理和定制化需求;React和Vue提高前端开发效率,Bootstrap助力响应式布局;SEO技术和工具提升搜索引擎排名;SSL/TLS证书和Web应用防火墙保障安全。通过综合应用这些技术,企业可构建功能全面、体验优秀的门户网站。
31 1
|
2月前
|
数据采集 人工智能 自然语言处理
全球首篇!调研近400篇文献,鹏城实验室&中大深度解析具身智能
【8月更文挑战第17天】在人工智能领域,具身智能正成为研究焦点。它强调智能体在现实世界中的感知与交互。近期,鹏城实验室与中山大学联合发布的首篇全球具身智能综述,调研近400篇文献,总结了该领域的理论和技术进展。文章探讨了具身感知、交互及仿真到现实的适应性等关键议题,并指出了面临的挑战如数据质量、模型泛化等,为通向通用人工智能铺路。论文已发表于IEEE会议记录中。
179 60
|
2月前
|
机器学习/深度学习 人工智能 监控
|
29天前
|
域名解析 监控 负载均衡
智能DNS解析:自动选择最快服务器的奥秘
【9月更文挑战第7天】智能DNS解析是一种根据用户网络环境和服务器负载动态选择最佳服务器的技术,显著提升了访问速度与稳定性。本文详细介绍了其工作原理,包括实时监控、数据分析和路由选择,并探讨了自动选择最快服务器背后的算法策略,如负载均衡、地理位置识别及实时测试。附带示例代码帮助理解其基本实现过程。
63 0
|
2月前
|
域名解析 监控 负载均衡
【域名解析DNS专栏】智能DNS解析:自动选择最快服务器的奥秘
在互联网中,智能DNS解析作为一项先进技术,根据用户的网络环境和服务器负载情况,自动挑选最优服务器进行域名解析,显著提升访问速度与体验。其工作原理包括实时监控服务器状态、分析数据以选择最佳路由。通过负载均衡算法、地理位置识别及实时性能测试等策略,确保用户能获得最快的响应。这项技术极大提高了互联网服务的稳定性和效率。
106 5
|
2月前
|
开发者 图形学 iOS开发
掌握Unity的跨平台部署与发布秘籍,让你的游戏作品在多个平台上大放异彩——从基础设置到高级优化,深入解析一站式游戏开发解决方案的每一个细节,带你领略高效发布流程的魅力所在
【8月更文挑战第31天】跨平台游戏开发是当今游戏产业的热点,尤其在移动设备普及的背景下更为重要。作为领先的游戏开发引擎,Unity以其卓越的跨平台支持能力脱颖而出,能够将游戏轻松部署至iOS、Android、PC、Mac、Web及游戏主机等多个平台。本文通过杂文形式探讨Unity在各平台的部署与发布策略,并提供具体实例,涵盖项目设置、性能优化、打包流程及发布前准备等关键环节,助力开发者充分利用Unity的强大功能,实现多平台游戏开发。
54 0
|
2月前
|
图形学 机器学习/深度学习 人工智能
颠覆传统游戏开发,解锁未来娱乐新纪元:深度解析如何运用Unity引擎结合机器学习技术,打造具备自我进化能力的智能游戏角色,彻底改变你的游戏体验——从基础设置到高级应用全面指南
【8月更文挑战第31天】本文探讨了如何在Unity中利用机器学习增强游戏智能。作为领先的游戏开发引擎,Unity通过ML-Agents Toolkit等工具支持AI代理的强化学习训练,使游戏角色能自主学习完成任务。文章提供了一个迷宫游戏示例及其C#脚本,展示了环境观察、动作响应及奖励机制的设计,并介绍了如何设置训练流程。此外,还提到了Unity与其他机器学习框架(如TensorFlow和PyTorch)的集成,以实现更复杂的游戏玩法。通过这些技术,游戏的智能化程度得以显著提升,为玩家带来更丰富的体验。
40 0
|
2月前
|
Java Spring 监控
危机时刻,Spring框架如何拯救你的应用?深入探讨健康检查与自我修复功能
【8月更文挑战第31天】在现代软件架构中,应用的稳定性和可用性至关重要。本文介绍Spring框架中的健康检查与自我修复机制,通过Spring Boot Actuator的`/health`端点监控应用状态,并结合Spring Cloud Hystrix实现服务容错和断路器功能,提高应用健壮性。借助这些工具,开发者能轻松监控应用健康状况并在发现问题时自动采取措施,确保服务高可用性。要实现完善的机制,需根据具体应用架构和需求进行配置和扩展。
40 0
|
2月前
|
开发者 测试技术 Android开发
Xamarin 开发者的五大常见问题及解决方案:从环境搭建到性能优化,全面解析高效跨平台应用开发的技巧与代码实例
【8月更文挑战第31天】Xamarin 开发者常遇问题及解决方案覆盖环境搭建至应用发布全流程,助新手克服技术难关。首先需正确安装配置 Visual Studio 及 Xamarin 支持,设置 iOS/Android 测试环境。利用 Xamarin.Forms 和 XAML 实现高效跨平台开发,共享 UI 和业务逻辑代码。针对性能优化,采取减少 UI 更新、缓存计算结果等措施,复杂问题则借助 Xamarin Profiler 分析。
36 0
|
3月前
|
监控 数据挖掘 数据安全/隐私保护
ERP系统中的客户投诉管理与解决方案解析
【7月更文挑战第25天】 ERP系统中的客户投诉管理与解决方案解析
168 1

相关产品

  • 云解析DNS
  • 推荐镜像

    更多
    下一篇
    无影云桌面