DNS压力测试工具

1、dnsperf简介

DNSPerf(DNS Performance)来自Prospect One公司,刚好最近研究 DNS 又想起这项服务。DNSPerf 从全世界超过两百个城市节点来检测各个 DNS 速度、反应时间及上线率(Uptime),除此之外,DNSPerf 还有针对一般使用者会用到的开放式 DNS 解析服务(Public DNS)进行监测记录,比较令我感到意外的是解析速度方面OpenDNS居然还比Google DNS来得更快!有兴趣的朋友可以到 DNSPerf 看看测试结果,对于读者来说还是蛮有参考价值的。dnsperf目前的实现是单进程模式,通过epoll非阻塞地处理网络事件。

2、安装程序

 [root@docker-03 ~]# yum install dnsperf

3、参数详解

 ## Dnsperf 支持下面的这些命令行参数:
 -s    用来指定DNS服务器的IP地址,默认值是127.0.0.1
 -p    用来指定DNS服务器的端口,默认值是53
 -d    用来指定DNS消息的内容文件,该文件中包含要探测的域名和资源记录类型,见下文
 -t    用来指定每个请求的超时时间,默认值是3000ms
 -Q    用来指定本次压测的最大请求数,默认值是1000
 -c    用来指定并发探测数,默认值是100. dnsperf会从-d指定的文件中随机选取100个座位探测域名来发送DNS请求
 -l    用来指定本次压测的时间,默认值是无穷大
 -e    本选项通过EDNS0,在OPT资源记录中运用edns-client-subnet来指定真实的client ip
 -i    用来指定前后探测的时间间隔,因为dnsperf是一个压测工具,所以本选项目前还不支持
 -P    指定用哪个传输层协议发送DNS请求,udp或者tcp。默认值是udp
 -f    指定用什么地址类型发送DNS请求,inet或者inet6。默认值是inet
 -v    除了标准的输出外,还输出每个相应码的个数
 -h    打印帮助

4、数据文件示例

-d选项指定数据文件名,数据文件示例如下,测试的次数和域名拷贝次数要一样:

 # This is a comment and is ommited
 # The columns after column 2 will be ommited if one line contains more than 3 colums.
 www.app1.com A

数据文件中以“#”开头的行被认为是注释行,会被dnsperf忽略。

其中有效数据由两列组成,第一列是查询域名,第二列是查询的资源类型,dnsperf支持的资源类型如下:

ANSMDMFCNAMESOAMBMGMRNULLWKSPTRHINFOMINFOMXTXTAAAASRVNAPTRA6ASFRMAILBMAILAANY

5、性能评测指标

 [root@RedHat_test opt]# dnsperf -c 1000 -d testfile -s 172.17.0.98
 DNS Performance Testing Tool
 Version 2.3.2
 
 [Status] Command line: dnsperf -c1000-dtestfile -s172.17.0.98
 [Status] Sending queries (to 172.17.0.98)
 [Status] Started at: Wed Jan 1515:34:50 2020
 [Status] Stopping after 1run through file
 [Status] Testing complete (end of file)
 
 Statistics:
 
 Queries sent:         325336
 Queries completed:    325336(100.00%)
 Queries lost:         0(0.00%)
 
 Response codes:       NOERROR 325336(100.00%)
 Average packet size: request 29, response 75
 Run time (s):         3.624032
 Queries per second:   89771.834244
 
 Average Latency (s):  0.000990 (min 0.000335, max 0.016325)
 Latency StdDev (s):   0.000441

1、queryperf简介

在bind中,有一款自带的压力测试软件,queryperf。使用这款软件可以对DNS服务器作请求测试,并且使用方法简单,我们可以使用queryperf测试多次,取一个平均值,这样就算结果不准确,也不会和实际情况相差太大。

2、安装程序

 [root@docker-03 ~]# cd /usr/local/src
 [root@docker-03 src]# wget http://ftp.isc.org/isc/bind9/9.12.1/bind-9.12.1.tar.gz
 [root@docker-03 src]# tar -zxvf bind-9.12.1.tar.gz
 [root@docker-03 queryperf]# cd /usr/local/src/bind-9.12.1/contrib/queryperf
 [root@docker-03 queryperf]# ./configure
 [root@docker-03 queryperf]# make
 [root@docker-03 queryperf]# cp queryperf /usr/bin

3、参数详解

 ## queryperf [-d datafile] [-s server_addr] [-p port] [-q num_queries]
 -d: 后面接上一个文件,文件的内容是用户对DNS的请求,一行为一条请求,所以为了测试,我们可以在里面写上几千几万条。
 -s: DNS服务器地址
 -p: DNS服务器端口
 -q: 指定查询的输出的最大数量

4、sh批量生产记录

 [root@docker-03 queryperf]# cat gen_record.sh 
 #!/bin/sh
 #a_record="ns2.paiconf.com"
 
 a_record=$1
 num=$2
 file_path=$3
 
 if[ ${a_record}-a${num}-a${file_path}]; then
 var=1
 while[ $var-le${num}]
 do
 echo"${a_record}A ">> ${file_path}
 var=$(($var+ 1 ))
 done
 else
    echo"use: ./sh [a_record] [num] [file_path]"
 fi

5、使用方法

 [root@docker-03 queryperf]# chmod -R 777 gen_record.sh 
 [root@docker-03 queryperf]# ./gen_record.sh www.baidu.com 10000 dnstest.txt
 [root@docker-03 queryperf]# queryperf -d dnstest.txt -s 172.17.0.98
 
 DNS Query Performance Testing Tool
 Version: $Id: queryperf.c,v 1.12 2007/09/05 07:36:04 marka Exp $
 
 [Status] Processing input data
 [Status] Sending queries (beginning with 172.17.0.98)
 [Status] Testing complete
 
 Statistics:
 
 Parse input file:     once
 Ended due to:         reaching end of file
 
 Queries sent:         10000queries
 Queries completed:    10000queries
 Queries lost:         0queries
 Queries delayed(?):   0queries
 
 RTT max:         0.011268 sec
 RTT min:              0.000267 sec
 RTT average:          0.000417 sec
 RTT std deviation:    0.000466 sec
 RTT out of range:     0queries
 
 Percentage completed: 100.00%
 Percentage lost:        0.00%
 
 Started at:           Wed Jan 1518:31:55 2020
 Finished at:         Wed Jan 1518:31:56 2020
 Ran for:              0.226052 seconds
 
 Queries per second:   44237.609046 qps

如果文章有任何错误欢迎不吝赐教,其次大家有任何关于运维的疑难杂问,也欢迎和大家一起交流讨论。关于运维学习、分享、交流,笔者开通了微信公众号【运维猫】,感兴趣的朋友可以关注下,欢迎加入,建立属于我们自己的小圈子,一起学运维知识。群主还经营一家猫小铺饰品店,喜欢的小伙伴欢迎????前来下单。

扫描二维码

获取更多精彩

运维猫公众号

有需要技术交流的小伙伴可以加我微信,期待与大家共同成长,本人微信:

扫描二维码

添加私人微信

运维猫博主

扫码加微信

最近有一些星友咨询我知识星球的事,我也想继续在星球上发布更优质的内容供大家学习和探讨。运维猫公众号平台致力于为大家提供免费的学习资源,知识星球主要致力于即将入坑或者已经入坑的运维行业的小伙伴。

点击阅读原文  查看更多精彩内容!!!

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DNS代理测试用例可以包括以下几个方面: 1. DNS解析器多样性测试:测试DNS代理是否支持多个不同的解析器,包括常见的DNS服务提供商,如领事,并验证解析结果是否正确。 2. 自定义解析器端口测试:测试DNS代理是否能够正确处理自定义解析器端口,确保代理可以与指定端口的解析器进行通信。 3. SRV和A记录缓存测试:测试DNS代理是否正确地缓存SRV和A记录,以提高解析速度和性能。可以通过连续查询同一个域名来验证缓存的有效性。 4. HTTP代理测试:测试DNS代理是否支持HTTP代理功能,能够正确地将DNS查询请求转发到指定的HTTP代理服务器。 5. 代理选择策略测试:测试DNS代理的代理选择策略,包括循环赛和随机的IP哈希等方法。可以通过多次查询同一个域名,观察代理选择的结果是否符合预期。 总结来说,DNS代理的测试用例应该覆盖解析器多样性、自定义端口、缓存、代理功能和代理选择策略等方面,以确保代理的功能和性能符合要求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [lua-modfin-srv-proxy:动态SRV记录代理的一个小实现,它替换了nginx proxy_pass和静态上游](https://download.csdn.net/download/weixin_42117032/18899242)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [测试用例设计1](https://blog.csdn.net/qq_41963250/article/details/115484619)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值