【DNS】Smart DNS管理系统

简介

在公司业务系统中, DNS是很是重要的服务,公司内各环境的公共服务及http调用可能都会依赖于DNS进行域名解析;因为不一样环境的多样性,须要DNS服务可以针对不一样环境实现智能解析,同时,DNS配置复杂、手工管理风险大,操做失误很容易形成DNS服务瘫痪。html

基于以上需求,我对部门内DNS架构进行了重构,同时,从新开发了DNS管理平台。python

SmartDNS是分布式、高可用的DNS平台,使用Django2.xdnspython1.x进行开发,基于Bind9.x实现,以WEB模式管理,分控制、权威、服务、缓存等四层结构,知足了在复杂环境下的分区解析、快速部署、批量导入、动态更新DNS等需求,极大的提升了运维效率。linux

特色

  • 安全性:除权威节点外,其余节点只支持读操做(权威节点不对外开放)
  • 高性能:基于原生Bind开发,保证性能和稳定,查询可达60000qps
  • 高可用:服务层数据实时同步,可经过负载均衡技术实现高可用
  • 多集群:控制台可支持多集群操做
  • 智能解析:支持视图
  • 审计:可查询操做记录

架构

SmartDNS 参考了 GitHub 的DNS架构,在《DNS Infrastructure at GitHub》这篇文章中,介绍了他们使用Unbound 做为 缓存NSD 做为 边缘节点PowerDNS 做为 权威服务git

因为一直使用Bind9,因此我选择它做为全套DNS的基础服务。在这里 Bind9 可提供权威服务递归服务缓存服务,而web管理则采用自开发形式。github

image001.png

SmartDNS 系统中分为四类主机:控制中心(Control)权威节点(Authority)服务节点(Edge)缓存节点(Cache)web

  • 控制中心 经过 动态更新(nsupdate) 服务,实时更新 权威节点(Authority) 的记录信息。
  • 权威节点 为隐藏的 DNS 主服务器,做为 DNS 数据的规范来源,为 服务节点(Edge) 提供 区域传输(zone transfer) 服务,并提供用于 建立修改删除记录动态更新(nsupdate) 服务;同时可部署在不一样 区域(Region)数据中心(DC)
  • 服务节点 为运行的 DNS 从服务器,用于响应 客户端(Client)缓存节点(Cache) 对DNS区域zone的请求,提供 权威解析 的同时,还提供递归解析缓存 服务。
  • 缓存节点 可做为递归解析器,同时缓存来自 服务层 的响应。

功能简介

WEB 部分部分参考了 hahp的Blogaliyun云解析DNS服务。django

因为公司的运维工做很琐碎,平时又没有时间,因此DNS总体架构设计和系统开发断断续续作了2个来月,并且界面看起来也比较难看,没办法,作Python的基本都是全栈开发;另外我对图中比较敏感的信息作了处理,请谅解;目前项目还处于初期阶段,后续有精力再接着完善。缓存

集群(Cluster)
image002.jpg安全

服务节点(Server)
image003.jpg服务器

视图(View)
image004.jpg

域(Zone)
image005.jpg

记录(Record)
image006.jpg

审计(Audit)
image007.jpg

最后,但愿这篇文章能给看过朋友们一些帮助,谢谢。

参考文档

https://linux.cn/article-8852...
https://www.cnblogs.com/hahp/...
http://bind-dlz.sourceforge.n...

相关文章
相关标签/搜索