最近想要找一个能够自动测试 DNS 速度的工具,最好还能自动找出速度最快的 DNS 的工具,最终结果是没找到特别满意的,但是在 Github 上有一个项目,算是基本能够满足需求。

工具的名字是:dnsperftest ,Mac 上使用起来也比较简单。

安装依赖

1
brew install bc bind

下载项目

1
git clone --depth=1 https://github.com/cleanbrowsing/dnsperftest/

修改 DNS 名单

脚本里默认带的 DNS 都是国外的,我在中国大陆不需要,先进去把 DNS 改成常用的几个,比如:

阿里: 223.5.5.5223.6.6.6

114:114.114.114.114

腾讯:119.29.29.29

百度: 180.76.76.76

执行 cd dnsperftest 进入到项目录中,vim dnstest.sh 进行修改,将原来的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
PROVIDERSV4="
1.1.1.1#cloudflare
4.2.2.1#level3
8.8.8.8#google
9.9.9.9#quad9
80.80.80.80#freenom
208.67.222.123#opendns
199.85.126.20#norton
185.228.168.168#cleanbrowsing
77.88.8.7#yandex
176.103.130.132#adguard
156.154.70.3#neustar
8.26.56.26#comodo
45.90.28.202#nextdns
"

修改为:

1
2
3
4
5
6
PROVIDERSV4="
223.5.5.5#alidns
119.29.29.29#dnspod
180.76.76.76#baidu
114.114.114.114#114
"

如果你有想要参与测速的其它 DNS 也可以加进去,每行一个,格式是:IP#别名

测速

修改好测速脚本以后,就可以执行命令进行测速了:

1
bash ./dnstest.sh | sort -k 22 -n

这行 Shell 命令会先执行测速脚本,然后将结果按平均值列进行数值升序排序,我的结果是这样:

1
2
3
4
5
6
7
8
9
bash ./dnstest.sh |sort -k 22 -n
test1 test2 test3 test4 test5 test6 test7 test8 test9 test10 Average
198.18.0.2 1 ms 1 ms 1 ms 1 ms 1 ms 1 ms 1 ms 1 ms 1 ms 1 ms 1.00
alidns 83 ms 83 ms 83 ms 83 ms 81 ms 93 ms 81 ms 81 ms 81 ms 98 ms 84.70
114 90 ms 97 ms 87 ms 86 ms 88 ms 92 ms 90 ms 91 ms 99 ms 90 ms 91.00
cloudflare 141 ms 134 ms 131 ms 138 ms 147 ms 133 ms 136 ms 136 ms 133 ms 135 ms 136.40
google 133 ms 137 ms 131 ms 142 ms 132 ms 171 ms 132 ms 145 ms 134 ms 139 ms 139.60
baidu 89 ms 303 ms 112 ms 119 ms 85 ms 130 ms 103 ms 429 ms 84 ms 117 ms 157.10
dnspod 128 ms 77 ms 314 ms 77 ms 79 ms 154 ms 324 ms 1000 ms 82 ms 1000 ms 323.50