博文背景
浙江理工大学为了防止我们利用DNS的53端口漏洞进行不花钱上网,同时也是为了保护网络安全,学校对公网出口的基于53端口的服务进行了屏蔽,对校内提供两台DNS服务器进行域名解析服务,一台是10.11.248.114一台是10.11.248.115,这两台也可以对内网域名提供解析服务。另外还有一台服务器是10.11.246.95,是老师给我提供的测试服务器,我对它安装了DNS服务器,上游查询来自223.5.5.5服务器。校园网有时候网页打开转半天很慢,只用speedtest.cn进行测速发现带宽并不慢,所以考虑是否是DNS响应缓慢,故CV和修改了一份DNS性能测试脚本,供浙江理工大学使用。
具体操作
#!/usr/bin/env bash
command -v bc > /dev/null || { echo "bc was not found. Please install bc."; exit 1; }
{ command -v drill > /dev/null && dig=drill; } || { command -v dig > /dev/null && dig=dig; } || { echo "dig was not found. Please install dnsutils."; exit 1; }
NAMESERVERS=`cat /etc/resolv.conf | grep ^nameserver | cut -d " " -f 2 | sed 's/\(.*\)/&#&/'`
PROVIDERS="
10.11.248.114#114
10.11.248.115#115
10.11.246.95#95
"
# Domains to test. Duplicated domains are ok
DOMAINS2TEST="www.baidu.com www.aliyun.com cloud.tencent.com www.ustc.edu.cn www.qq.com www.zju.edu.cn"
totaldomains=0
printf "%-18s" ""
for d in $DOMAINS2TEST; do
totaldomains=$((totaldomains + 1))
printf "%-8s" "test$totaldomains"
done
printf "%-8s" "Average"
echo ""
for p in $NAMESERVERS $PROVIDERS; do
pip=${p%%#*}
pname=${p##*#}
ftime=0
printf "%-18s" "$pname"
for d in $DOMAINS2TEST; do
ttime=`$dig +tries=1 +time=2 +stats @$pip $d |grep "Query time:" | cut -d : -f 2- | cut -d " " -f 2`
if [ -z "$ttime" ]; then
#let's have time out be 1s = 1000ms
ttime=1000
elif [ "x$ttime" = "x0" ]; then
ttime=1
fi
printf "%-8s" "$ttime ms"
ftime=$((ftime + ttime))
done
avg=`bc -lq <<< "scale=2; $ftime/$totaldomains"`
echo " $avg"
done
exit 0;
下面是我2020年10月18日的测试结果: