第一节:前期准备
linux环境:ubuntu-18.04.6-desktop-amd64
虚拟机系统:VMware® Workstation 17 Pro
1.1 快速配置国内源
1.2 软件包安装
root@ubuntu:/# apt install git
root@ubuntu:/# apt-get install autoconf
root@ubuntu:/# apt-get install automake
root@ubuntu:/# apt-get install libtool
root@ubuntu:/# apt-get install make
root@ubuntu:/# apt-get install pkg-config
root@ubuntu:/# apt-get install check
root@ubuntu:/# apt-get install g++
root@ubuntu:/# apt-get install librsync-dev
root@ubuntu:/# apt-get install libz-dev
root@ubuntu:/# apt-get install libssl-dev
root@ubuntu:/# apt-get install uthash-dev
root@ubuntu:/# apt-get install libyajl-dev
第二节:dnsperf安装
2.1 代码克隆至本地
root@ubuntu:/# git clone https://github.com/DNS-OARC/dnsperf.git
安装过程中可能出现“无法连接到github”或者“gnutls_handshake() failed: Error in the pull function.”的情况,如果出现,需要将虚拟机的443端口映射到物理主机上,方可正常克隆。
2.2 编译安装
root@ubuntu:/# cd /dnsperf/ r
oot@ubuntu:/dnsperf# ./autogen.sh
root@ubuntu:/dnsperf# ./configure
root@ubuntu:/dnsperf# make
root@ubuntu:/dnsperf# make install
2.3 问题解决
./autogen.sh出现报错
报错:./autogen.sh: 19: ./autogen.sh: autoreconf: not found
解决方法:执行apt-get install automake autoconf libtool命令
./configure出现报错
第一种:
报错:configure: error: cannot find install-sh, install.sh, or shtool in "." "./.." "./../.."
问题原因:configure脚本的自动构建系统有问题
解决方法:执行autoreconf -vif命令重建
第二种:
报错:./configure: line 5859: syntax error near unexpected token `disable-static'
./configure: line 5859: `LT_INIT(disable-static)'
问题原因:软件包缺失,脚本无法执行
解决方法:apt-get install make pkg-config check g++ librsync-dev libz-dev libssl-dev uthash-dev libyajl-dev,如果执行完前面的命令还不行,再执行一遍autoreconf -vif
第三种:
报错:configure: error: libck headers not found
问题原因:没有libck-dev软件包
解决方法:执行apt install libck-dev
第四种:
报错:configure: error: nghttp2 headers not found
问题原因:没有libnghttp2-dev软件包
解决方法:执行apt install libnghttp2-dev
第三节:dnsperf使用
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 | 打印帮助 |
探测目标文件内容
# 一行只能有两列,之后的列会被忽略
www.app1.com A
www.bbb2.com AAAA
测试用例
dnsperf -d test.txt -s 202.108.57.48 -c100000 -Q100000 -l6000