首页 > 编程知识 正文

github地址,智能DNS管理系统

时间:2023-05-05 16:29:13 阅读:118625 作者:1006

智能DNS

使用场景

smartdns是以python语言编写并基于twisted框架实现的dns服务器,支持针对不同的dns请求根据配置返回不同的分析结果。 smartdns获取dns请求的源IP或客户端IP (支持dns协议的请求为客户端IP ),基于本地静态IP库获取请求IP (如国家、州、城市、ISP )的特性,并基于调度

smartdns使用场景:

服务的多个房间的业务调度,例如将通信流量调度到通信房间或将通信流量调度到通信房间

用户访问控制将用户调度到离用户最近或链接质量最高的节点。

举个简单的例子,我们的网站test.test.com同时配置在电信和联通两个机房。 该网站在电信机房ip为1.1.1.1,联通机房ip为2.2.2.2,通过smartdns进行该网站域名解析时判断源ip为电信ip时可以返回1.1.1.2

支持的功能

支持查询a、SOA和NS记录,支持DNS前端功能

性能

虚拟机的2.4G CPU可以处理1000QPS的查询请求,打开调试日志可以达到800QPS。 由3-5台DNS服务器组成的群集现在可以满足大多数站点的需要。

现在,我们实现了小流量测试go语言和实现的smartdns,可以达到3wQPS以上。 后续测试稳定后将变为开源,敬请期待:)

原理

smartdns响应dns请求的处理流程如下。

IPPool类的初始化和基于该类的FindIP方法的分析处理是smartdns中最重要的两个要素,以下详细说明这两个要素。 可以在代码中知道其他特性,例如继承twisted的dns相关类,重写处理dns请求的方法,升级twisted代码以支持edns请求的解决和处理等。 edns知识可以戳到这里: DNS支持edns-client-subnet

IPPool初始化

ip.csv的内容格式如下:

2000001,2000010,中国,陕西,西安,电信

其中每个字段的含义分别是IP段开始、IP段结束、IP段所属的国家、IP段所属的省、IP段所属的城市、IP段所属的ISP

a.yaml配置文件格式:

test.test.com:

ttl: 3600

efault:5.5.5.52.2.2

中国、广东、联通: 1.1.1.1 3.3.3.1

中国、广东、电信: 1.1.1.2 3.3.3.2

配置中区域信息的key包含四个字段,每个字段具有不同的权重。

国家: 8

省: 4

城市: 2

运营商: 1

在初始化阶段,将生成名为iphash的dict。 具体数据结构如下图所示。

其中,iphash的key是ip.csv的各记录的开头IP,value是一个list,list长度为6,list的前五个字段分别以该key为开头,表示IP记录的IP段的截断、IP设置IP段所属的城市,IP段所属的ISP;第六个字段为value为长度为2的列表;IP混列[ IP段开始][6][域名1][0]为域名1在该IP段中的第一个字段

IP混列初始化过程中最重要的是计算IP混列[ IP段开始][6][域名1]的最佳解析。 最简单、最直接的方法是直接遍历域名1的所有调度配置,选择满足条件、总权重最高的解决方案。 在该方式中,将IP混列整体的时间复杂度作为o(XYZ ),将x作为ip.csv记录数,将y作为域名总数,将z作为各域名的调度结构数进行记录。 为了优化启动速度,优化了寻找最佳解决方案的方法。 生成一个树,通过dict预先模拟每个域名的调度配置,如果需要优化解,则最多搜索15次即可获得最佳结果,即时间复杂度为o(15xy ),而不是遍历所有调度配置,并参考IPPool

有了初始化的IP哈希数据结构,每当处理请求时,由o(1)来确定请求IP在哪个IP段中,找到IP段的头IP,从IP哈希检索最佳分析,以及检索最佳分析的过程。 具体流程如下。

代码

安装

依赖关系:

python 2.6或2.7

扭曲12.2.0

zope.interface 4.0.1

安装:

将git clone smartdns移动到本地路径,移动到script目录,然后运行install_smartdns.sh,以管理与python环境相关的依赖关系,而不影响系统环境

启动:

进入smartdns自由荔枝的路由,运行sh run_dns.sh后,smartdns将启动

测试

本地测试dig test.test.com @127.0.0.1

或者将构建的smartdns添加到测试域名的ns中进行测试。

支持

github: xhdty8

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。