跨region的智能DNS解决方案(二)-CRUD
跨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范围内
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java描述设计模式(12):外观模式
本文源码:GitHub·点这里 || GitEE·点这里 一、生活场景 1、场景描述 在移动互联网没有普及之前,去饭店吃饭的流程大致如下:选座位,排队,点菜,结账。后来移动互联网普及,通过手机APP就可以操作这些流程,非常的方便快捷:通过手机可以知道某饭店是不是还有空位,到了饭店之后直接入座,然后通过手机点菜,结账,中间省去了很多繁琐的流程。 2、代码图解 3、代码实现 /** * 外观模式描述饭店就餐流程 */ public class C01_InScene { public static void main(String[] args) { EatAppFacade eatAppFacade = new EatAppFacade () ; eatAppFacade.dining(); } } // 预定 class Booking { private static Booking booking = new Booking() ; public static Booking getInstance (){ return booking ; } public void bookPl...
- 下一篇
25个JavaScript数组方法代码示例
摘要: 通过代码掌握数组方法。 原文:通过实现25个数组方法来理解及高效使用数组方法(长文,建议收藏) 译者:前端小智 Fundebug经授权转载,版权归原作者所有。 要在给定数组上使用方法,只需要通过[].方法名即可,这些方法都定义在 Array.prototype 对象上。在这里,咱们先不使用这些相,反,咱们将从简单的方法开始定义自己的版本,并在这些版本的基础上进行构建。 没有比把东西拆开再重新组装起来更好的学习方法了。注意,当咱们的实现自己的方法时,不要覆盖现有的方法,因为有的库需要它们,并且这样也方便比较咱们自己的方法与原始方法的差异。 所以不要这样命名咱们自定义的方法: Array.prototype.map = function map() { // implementation }; 最好这样命名: function map(array) { // implementation } 咱们也可以通过使用class关键字并扩展Array构造函数来实现咱们的方法,如下所示: class OwnArray extends Array { public constructor(.....
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Mario游戏-低调大师作品
- 2048小游戏-低调大师作品
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Red5直播服务器,属于Java语言的直播服务器