Script bash DNS performance

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:

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 1

 

Script bash DNS performance

Requisitos previos:

  1. Comando «bc«
  2. Utilidad «dnsutils» en Debian, Ubuntu y derivados.
  3. Utilidad «bind-utils» en Centos, Fedora, openSuse, etc…

Debian, Ubuntu, y derivados.

sudo apt-get install bc dnsutils

CentOS y derivados.
yum install bc bind-utils

Fedora y derivados.
dnf install dc bind-utils

OpenSuse, Suse y derivados.
zypper install dc bind-utils

 

Una vez instalados los requisitos, creamos el scrip bash dns performance.

nano testdns.sh

Copia y pega lo siguiente.
#!/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.

Script bash DNS performance 2

 

Lo ejecutamos:

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.

 

2 Comentarios

  1. Pere
    28/11/2019
    • sololinux
      28/11/2019

Agregar comentario