Reading Time: 7 minutes

Os DNS resolvers têm muito que se lhe diga, e Nykolas Z, freelance writer no Medium, foi autor de um teste de performance aos mais famosos DNS resolvers. Também foi feito um teste de performance em Portugal, no distrito da Guarda, de forma a testar a eficiência e performance dos DNS resolvers mais populares.

Normalmente, os routers Wi-fi instalados em sua casa, têm configurado o DNS resolver do seu ISP, e por vezes, a resposta dos seus pedidos pode não ser as mais rápida, pois o ISP pode direcionar o tráfego para “aquilo que bem entender”. Não é menos verdade, que grandes empresas tecnológicas também o podem fazer, tal como a Microsoft, Google, Apples, entre outras. Bom, mas não é o objetivo deste artigo discutir essa vertente.

No entanto, a experiência oferecida por estes últimos provedores tende a ser melhorada e não modificada (são eles a garanti-lo). Uma vez que faz parte de uma grande rede DNS e de informação, alguns endereços maliciosos também são bloqueados pelo próprio provedor — principalmente conteúdo adulto — o que oferece uma experiência mais rica e segura para os utilizadores finais e sobre tudo para as famílias e crianças.

Estando de acordo que a escolha de um provedor de DNS popular tende a ser benéfico para a experiência do utilizador enquanto navega na Internert, existe porém um de muitos problemas: ser seletivo e escolher aquele que oferece uma maior performance para a sua zona geográfica. 

Por isso, antes de escolher um provedor, recomendamos testá-lo para ver o quão rápido ele será carregado a partir da sua zona geográfica. Neste artigo, vamos comparar o desempenho bruto de alguns fornecedores populares de vários locais em todo o mundo e ver como eles se comportam uns contra os outros.

dns-resolver

 

Provedores de DNS

Em seguida são elencados os oito principais provedores de DNS gratuitos e que foram avaliados neste estudo.

  • Google 8.8.8.8: Private and unfiltered. Most popular option.
  • CloudFlare 1.1.1.1: Private and unfiltered. New player.
  • Quad9 9.9.9.9: Private and security aware. New player that blocks access to malicious domains.
  • OpenDNS 208.67.222.222: Old player that blocks malicious domains and offers the option to block adult content.
  • Norton DNS 199.85.126.20: Old player that blocks malicious domains and is integrated with their Antivirus.
  • CleanBrowsing 185.228.168.168: Private and security aware. New player that blocks access to adult content.
  • Yandex DNS 77.88.8.7: Old player that blocks malicious domains. Very popular in Russia.
  • Comodo DNS 8.26.56.26: Old player that blocks malicious domains.

A imagem a seguir, apresentamos um rápido overview em relação às suas opções de privacidade.

privacy-dns

Comparação de opções de privacidade.

 

A opção de privacidade acima é baseada na “promessa” dos provedores não registarem nem partilharem os seus pedidos DNS (em suma, todo o seu tráfego de Internet).

 

Testes de performance em diversas localizações geográficas

Os teste de performance foram realizados em 19 pontos geográficos em todo o mundo, sendo o último realizado através do provedor NOWO, no distrito da Guarda, em Portugal, mesmo no interior do país.

Os primeiros 18 testes foram executados pelo autor do artigo, e ela menciona que “foram avaliados provedores VPS + alguns locais de banda larga para tentar consultar o DNS de tantos lugares quanto pudéssemos. Ele nos dirá o quão bem conectados eles estão, onde seus datacenters estão localizados e quão próxima a experiência de alguém nessa área será“.

Locais escolhidos:

  • North America: San Diego, Los Angeles, New York, Toronto, Montreal, Atlanta, Dallas, Fremont, San Francisco
  • Europe: London, Paris, Amsterdam, Frankfurt
  • Asia: Tokyo, Singapore, Bangalore (India), Sydney, Brisbane (Australia)
  • South America: Sao Paulo

 

Resultados

O teste realizado pelo autor foi muito simples. Foram realizados 70 requests de DNS ao longo de uma hora para diferentes domínios populares (google, facebook, twitter, gmail, etc). Foi calculada no final a média de todas as solicitações por local para obter um indicador de desempenho geral por DNS resolver.

Para os 18 testes inicialmente executados pelo autor, todos os provedores (exceto Yandex) tiveram um ótimo desempenho na América do Norte e na Europa. Todos tiveram menos de 15 ms de resposta nos EUA, Canadá e Europa, o que é incrível.

Em suma, nestas posições geográficas, um utilizador final pode escolher qualquer um deles e não notar os poucos ms de diferença na latência. No entanto, a Ásia e a América do Sul fizeram a diferença nas médias globais, pois alguns provedores não estãolá muito bem interligados” por aquelas bandas.

  • CloudFlare was the fastest DNS for 72% of all the locations. It had an amazing low average of 4.98 ms across the globe.
  • Google and Quad9 were close for second and third respectively. Quad9 was faster than Google in North America and Europe, but under performed in Asia / South America.
  • CloudFlare has a strong presence everywhere. While Google and Quad9 had some high response times from some locations, CloudFlare performed well from everywhere.
  • Yandex is only for Russia. It doesn’t leverage Anycast like the other providers, and was very slow from everywhere.
  • CleanBrowsing was the fastest provider offering adult (porn) content filtering.
  • We know we can’t compare these providers 1 to 1, as they all have special features that can add some latency (Quad9 and Comodo blocks access to malicious domains, for example). Take the results as is.

 

Já o teste número 19, efetuado em solo português, nomeadamente no distrito da Guarda, através do ISP NOWO, não foi assim tão veloz como o esperado. Isso também é um factor que demonstra bem a realidade de viver numa cidade do interior do país. Aqui vão os resultados:

                  test1   test2   (...)     test10     Average 
8.8.8.8           49 ms   51 ms    ...       48 ms     53.70
cloudflare        17 ms   19 ms    ...       18 ms     18.10
level3            52 ms   58 ms    ...       53 ms     53.50
google            53 ms   53 ms    ...       51 ms     52.90
quad9             53 ms   48 ms    ...       56 ms     50.90
freenom           120 ms  124 ms   ...      121 ms     136.80
opendns           56 ms   48 ms    ...       49 ms     54.70
norton            31 ms   31 ms    ...       31 ms     31.00
cleanbrowsing     57 ms   64 ms    ...       62 ms     60.40
yandex            90 ms   164 ms   ...      125 ms     118.50
adguard           95 ms   93 ms    ...      135 ms     99.60
neustar           25 ms   25 ms    ...       26 ms     25.90
comodo            1000 ms 1000 ms  ...      1000 ms   1000.00

 

Os resultados em detalhe na seguinte imagem:

dns-performance-guarda-portugal

Cloudflare foi o mais eficiente na média europeia (ver abaixo) — 2.96ms —, mas na verdade foram necessários 18.70 ms até obter a resposta em Portugal. Os resultados para os restantes DNS providers também podem ser analisados na tabela acima.

 

Resultados Globais do Estudo

Global Average
#1 CloudFlare: 4.98 ms
#2 Google: 16.44 ms
#3 Quad9: 18.25 ms
#4 CleanBrowsing: 19.14 ms
#5 Norton: 34.75 ms
#6 OpenDNS: 46.51 ms
#7 Comodo: 71.90
#8 Yandex: 169.91

North America Average
#1 CloudFlare: 3.93 ms
#2 Quad9: 7.21 ms
#3 Norton: 8.32 ms
#4 Google: 8.53 ms
#5 CleanBrowsing: 11.83 ms
#6 OpenDNS: 14.66 ms
#7 Comodo: 25.91 ms
#8 Yandex: 119.09 ms

Europe Average
#1 CloudFlare: 2.96
#2 Quad9: 4.35
#3 CleanBrowsing: 5.74
#4 Google: 7.17
#5 OpenDNS: 8.99
#6 Norton: 10.35
#7 Comodo: 13.06
#8 Yandex: 35.74
Results Data
USA, NewYork
 #1 Quad9 1.50 ms
 #2 CloudFlare 1.57 ms
 #4 Norton_DNS 7.28 ms
 #5 Google_DNS 7.71 ms
 #6 OpenDNS 9.71 ms
 #6 CleanBrowsing 10.85 ms
 #7 Comodo_DNS 12.00 ms
 #8 Yandex_DNS 108.14 ms

USA, San Diego
 #1 CloudFlare 8.57 ms
 #2 Norton_DNS 9.00 ms
 #3 Google_DNS 14.28 ms
 #4 CleanBrowsing 19.28 ms
 #5 OpenDNS 19.42 ms
 #6 Quad9 19.42 ms
 #7 Comodo_DNS 40.00 ms
 #8 Yandex_DNS 193.57 ms

Canada, Toronto
 #1 CloudFlare 3.42 ms
 #2 Google_DNS 9.42 ms
 #3 Norton_DNS 13.00 ms
 #4 CleanBrowsing 13.71 ms
 #5 Quad9 15.28 ms
 #6 OpenDNS 17.85 ms
 #7 Comodo_DNS 21.71 ms
 #8 Yandex_DNS 124.14 ms

Canada, Montreal
 #1 CleanBrowsing 15.28 ms
 #2 Google_DNS 16.71 ms
 #3 CloudFlare 17.00 ms
 #4 Quad9 17.71 ms
 #5 OpenDNS 23.42 ms
 #6 Norton_DNS 25.71 ms
 #7 Comodo_DNS 84.28 ms
 #8 Yandex_DNS 118.85 ms

USA, Atlanta
 #1 Quad9 1.71 ms
 #2 CloudFlare 1.85 ms
 #3 Google_DNS 4.14 ms
 #4 CleanBrowsing 15.42 ms
 #5 Norton_DNS 17.00 ms
 #6 OpenDNS 17.14 ms
 #7 Comodo_DNS 18.57 ms
 #8 Yandex_DNS 127.57 ms

USA, Dallas
 #1 CloudFlare 2.10 ms
 #2 Norton_DNS 3.14 ms
 #3 Quad9 3.42 ms
 #4 OpenDNS 6.71 ms
 #5 Google_DNS 7.14 ms
 #6 CleanBrowsing 10.85 ms
 #7 Comodo_DNS 38.42 ms
 #8 Yandex_DNS 153.28 ms

USA, Fremont
 #1 CloudFlare 2.00 ms
 #2 Norton_DNS 6.14 ms
 #3 Quad9 11.00 ms
 #4 CleanBrowsing 11.85 ms
 #5 Google_DNS 13.71 ms
 #6 Comodo_DNS 22.00 ms
 #7 OpenDNS 24.42 ms
 #8 Yandex_DNS 185.00 ms

USA, San Francisco
 #1 Norton_DNS 2.00 ms
 #2 Quad9 2.14 ms
 #3 CloudFlare 2.85 ms
 #4 Google_DNS 12.28 ms
 #5 CleanBrowsing 21.14 ms
 #6 Comodo_DNS 22.14 ms
 #7 OpenDNS 28.00 ms
 #8 Yandex_DNS 180.42 ms
UK, London
 #1 CloudFlare 1.14 ms
 #2 Quad9 1.85 ms
 #3 CleanBrowsing 2.00 ms
 #4 Norton_DNS 6.57 ms
 #5 Google_DNS 7.71 ms
 #6 Comodo_DNS 9.85 ms
 #7 OpenDNS 9.85 ms
 #8 Yandex_DNS 35.57 ms

France, Paris
 #1 CloudFlare 5.14 ms
 #2 Comodo_DNS 10.00 ms
 #3 Google_DNS 10.14 ms
 #4 Quad9 12.71 ms
 #5 OpenDNS 13.57 ms
 #7 CleanBrowsing 14.85 ms
 #6 Norton_DNS 23.85 ms
 #8 Yandex_DNS 38.14 ms

NL, Amsterdam
 #1 CloudFlare 1.14 ms
 #2 CleanBrowsing 1.14 ms
 #3 Quad9 1.71 ms
 #4 Google_DNS 2.71 ms
 #5 OpenDNS 4.42 ms
 #6 Norton_DNS 9.85 ms
 #7 Comodo_DNS 12.85 ms
 #8 Yandex_DNS 40.42 ms

Germany, Frankfurt
 #1 Norton_DNS 1.14 ms
 #2 Quad9 1.14 ms
 #3 CloudFlare 4.42 ms
 #4 CleanBrowsing 5.00 ms
 #5 Google_DNS 8.14 ms
 #6 OpenDNS 8.14 ms
 #7 Comodo_DNS 19.57 ms
 #8 Yandex_DNS 28.85 ms

Japan, Tokyo
 #1 CloudFlare 2.00 ms
 #2 CleanBrowsing 2.14 ms
 #3 Norton_DNS 6.14 ms
 #4 Google_DNS 17.28 ms
 #5 Quad9 40.57 ms
 #6 Comodo_DNS 124.14 ms
 #7 OpenDNS 125.71 ms
 #8 Yandex_DNS 283.00 ms

Singapore
 #1 CloudFlare 1.14 ms
 #2 Google_DNS 2.00 ms
 #3 Quad9 2.14 ms
 #4 CleanBrowsing 2.28 ms
 #5 OpenDNS 28.14 ms
 #6 Norton_DNS 34.14 ms
 #7 Comodo_DNS 203.71 ms
 #8 Yandex_DNS 343.00 ms

India, Bang
 #1 CloudFlare 7.42 ms
 #2 Norton_DNS 21.28 ms
 #3 Quad9 38.85 ms
 #4 Google_DNS 40.71 ms
 #5 OpenDNS 59.42 ms
 #6 CleanBrowsing 138.71 ms
 #7 Comodo_DNS 150.57 ms
 #8 Yandex_DNS 171.57 ms

Australia, Sydney
 #1 CloudFlare 22.28 ms
 #2 Quad9 25.00 ms
 #3 Google_DNS 26.14 ms
 #4 CleanBrowsing 34.57 ms
 #5 OpenDNS 37.85 ms
 #6 Norton_DNS 164.57 ms
 #7 Comodo_DNS 186.28 ms
 #8 Yandex_DNS 352.14 ms

Australia, Brisbane
 #1 CloudFlare 3.00 ms
 #2 CleanBrowsing 13.57 ms
 #3 Quad9 17.71 ms
 #4 Google_DNS 66.14 ms
 #5 Norton_DNS 160.14 ms
 #6 Comodo_DNS 188.28 ms
 #7 OpenDNS 190.28 ms
 #8 Yandex_DNS 336.71 ms

Brasil, Sao Paulo
 #1 CloudFlare 2.71 ms
 #2 CleanBrowsing 12.00 ms
 #3 Google_DNS 29.71 ms
 #4 Norton_DNS 114.71 ms
 #5 Quad9 114.71 ms
 #6 Comodo_DNS 129.85 ms
 #7 OpenDNS 213.14 ms
 #8 Yandex_DNS 238.14 ms

 

Código Fonte de Teste

O autor do teste disponibilizou o código fonte usado na experiência na sua conta do GitHub. O trecho de código é também disponibilizado em seguida.

#!/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="
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
"

# Domains to test. Duplicated domains are ok
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;

 

 

Pedro Tavares is a professional in the field of information security, working as an Ethical Hacker, Malware Analyst, Cybersecurity Analyst and also a Security Evangelist. He is also a founding member and Pentester at CSIRT.UBI and founder of the security computer blog seguranca-informatica.pt.

In recent years he has invested in the field of information security, exploring and analyzing a wide range of topics, such as pentesting (Kali Linux), malware, hacking, cybersecurity, IoT and security in computer networks.  He is also Freelance Writer.

Read more here.