Script bash DNS performance.
Te presento un sencillo script bash, con el que podrás medir el rendimiento de tus propias dns y otras alternativas.
Puedes agregar, borrar, modificar las dns incluidas en el script, que son las siguientes:
- CloudFlare – 1.1.1.1
- Level3 – 4.2.2.1
- Google – 8.8.8.8
- Quad9 – 9.9.9.9
- Freenom – 80.80.80.80
- OpenDNS – 208.67.222.123
- Norton – 199.85.126.20
- CleanBrowsing – 185.228.168.168
- Yandex – 77.88.8.7
- AdGuard – 176.103.130.132
- Neustar – 156.154.70.3
- Comodo – 8.26.56.26
El script que vamos a ver, primero nos ofrecerá el resultado de las dns con las cuales estamos trabajando en primer lugar, después el resto (dns performance mediante el script bash).
Script bash DNS performance
Requisitos previos:
- Comando “bc“
- Utilidad “dnsutils” en Debian, Ubuntu y derivados.
- Utilidad “bind-utils” en Centos, Fedora, openSuse, etc…
1 | sudo apt-get install bc dnsutils |
CentOS y derivados.
1 | yum install bc bind-utils |
Fedora y derivados.
1 | dnf install dc bind-utils |
OpenSuse, Suse y derivados.
1 | zypper install dc bind-utils |
Una vez instalados los requisitos, creamos el scrip bash dns performance.
1 | nano testdns.sh |
Copia y pega lo siguiente.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | #!/usr/bin/env bash # execute testdns.sh 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=" 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 " # Dominios test. DOMAINS2TEST="www.google.com amazon.com facebook.com www.youtube.com www.reddit.com wikipedia.org twitter.com gmail.com www.google.com whatsapp.com" 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; |
Guarda y cierra el editor.
Lo ejecutamos:
1 | bash testdns.sh |
ejemplo de salida…
test1 test2 test3 test4 test5 test6 test7 test8 test9 test10 Average
1.1.1.1 42 ms 42 ms 43 ms 43 ms 43 ms 44 ms 42 ms 42 ms 42 ms 42 ms 42.50
1.0.0.1 42 ms 43 ms 43 ms 43 ms 42 ms 42 ms 42 ms 42 ms 43 ms 42 ms 42.40
cloudflare 43 ms 42 ms 42 ms 46 ms 42 ms 44 ms 42 ms 42 ms 43 ms 42 ms 42.80
level3 54 ms 54 ms 55 ms 54 ms 54 ms 54 ms 54 ms 56 ms 55 ms 55 ms 54.50
google 47 ms 43 ms 41 ms 54 ms 53 ms 79 ms 41 ms 50 ms 43 ms 41 ms 49.20
quad9 43 ms 43 ms 45 ms 43 ms 44 ms 43 ms 44 ms 45 ms 44 ms 43 ms 43.70
freenom 37 ms 102 ms 274 ms 39 ms 38 ms 299 ms 37 ms 185 ms 37 ms 81 ms 112.90
opendns 57 ms 51 ms 53 ms 63 ms 53 ms 177 ms 52 ms 54 ms 57 ms 49 ms 66.60
norton 43 ms 42 ms 45 ms 43 ms 43 ms 43 ms 43 ms 42 ms 43 ms 43 ms 43.00
cleanbrowsing 44 ms 49 ms 51 ms 47 ms 47 ms 49 ms 49 ms 51 ms 47 ms 47 ms 48.10
yandex 77 ms 77 ms 58 ms 77 ms 89 ms 221 ms 58 ms 58 ms 77 ms 77 ms 86.90
adguard 28 ms 69 ms 27 ms 28 ms 30 ms 171 ms 28 ms 28 ms 28 ms 156 ms 59.30
neustar 42 ms 43 ms 42 ms 43 ms 43 ms 43 ms 43 ms 42 ms 43 ms 43 ms 42.70
comodo 58 ms 58 ms 86 ms 60 ms 60 ms 57 ms 55 ms 57 ms 55 ms 58 ms 60.40
Como puedes ver en las dos primeras lineas yo utilizo las dns de cloudflare, tal como recomendamos en un articulo anterior.
Espero te resulte de utilidad el script dns performance.