【DNS】Smart DNS管理系统

简介

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

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

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

特点

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

架构

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

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

【DNS】Smart DNS管理系统_第1张图片

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

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

功能简介

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

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

集群(Cluster)
【DNS】Smart DNS管理系统_第2张图片

服务节点(Server)
【DNS】Smart DNS管理系统_第3张图片

视图(View)
【DNS】Smart DNS管理系统_第4张图片

域(Zone)
【DNS】Smart DNS管理系统_第5张图片

记录(Record)
【DNS】Smart DNS管理系统_第6张图片

审计(Audit)
【DNS】Smart DNS管理系统_第7张图片

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

参考文档

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

你可能感兴趣的:(dns,dnspython,django,bind9)