Arquivo de dezembro \07\UTC 2009

Testando a velocidade de DNSs diferentes.

Por ocasião do lançamento do Google DNS, há uma variedade de artigos na internet com benchmarks afirmando e também desmentindo a supremacia do Google DNS sobre outros DNSs. Como confiar nestes testes ou afirmações ?
Não confie, teste você mesmo e chegue a sua própria conclusão. O melhor resultado para você pode não ser o melhor resultado para outros e parece que os artigos que afirmam este ou outro DNS ignoram isso. Vamos fazer um teste ?

No Linux há diversas formas de testar os acessos a internet e também DNSs, no entanto, esses programas publicam números e se não houver quem os interpretes é inútil passar o comando dig, traceroute e afins a vocês. Existe um programa melhor que testa os DNSs na Internet e resume qual está sendo melhor naquele instante, estou falando do programa Domain Name Speed Benchmark.

Existem duas opções para executar este programa, uma é por script e a outra por GUI. Com a execução por script, ele depende de várias aplicações instaladas em seu computador e que quando executado, testa os seus DNSs e depois concluí com o resultado. Outra opção é uma GUI criada com o mesmo proposito, só que graficamente e com uma única dependência. Neste artigo, vou mostrar a opção de execução com a GUI.

Passo 1) Edite o /etc/resolv.conf e adicione/verifique todos os DNSs que queira testar.
Dê um ALT+F2 e execute ‘gksudo gedit /etc/resolv.conf’, meu próprio arquivo está assim :

# Meus DNSs em /etc/resolv.conf
nameserver 192.168.1.10 # DNS Local
nameserver 200.176.2.10 # Telefonica Speedy Business 1
nameserver 200.176.2.12 # Telefonica Speedy Business 2
nameserver 208.67.222.222 # OpenDNS 1
nameserver 208.67.220.220 # OpenDNS 2
nameserver 8.8.8.8 # Google DNS 1
nameserver 8.8.4.4 # Google DNS 2
nameserver 200.204.0.10 # Telefonica DNS publico 1
nameserver 200.204.0.138 # Telefonica DNS publico 2

Mantenha essa lista aberta porque mais tarde, voce usará o programa DNSBench e precisará relembrar destes endereços e possivelmente edita-los.

Passo 2) Instale o WINE em seu sistema, vá em Sistema->Administração->Gerenciador de pacotes Synaptic e procure pelo WINE e a seguir marque e aplique sua instalação :

Pelo terminal :

sudo apt-get install wine

O WINE é um port do WIN32API, seu proposito é tornar aplicativos desenvolvidos para Windows rodáveis onde o WINE for suportado. O aplicativo Domain Name Speed Benchmark foi feito com essa compatibilidade Windows/Linux+Wine.

Passo 3) Descarregue o programa, ele está no rodapé dessa página :

http://www.grc.com/dns/benchmark.htm

Ou se preferir o link direto :

http://www.grc.com/dev/DNSBench.exe

Passo 4) Execute o programa diretamente com o clique direito do mouse sobre o arquivo DNSBench.exe :
Executando o DNS Bench com o WINE com o clique direito do mouse

Passo 5) Procedimentos para a execução do DNSBench :

1) Clique na guia “Nameservers” para ajustar os objetos de análises, faça o dessa forma :

a) Clique em “Add/Remove” e selecione a opção “Remove System’s Name Servers
b) Também clique na opção “Remove Public NameServers
c) A essa altura você estará sem DNS para realizar o teste
d) Clique em “Add/Remove” e acrescente os IPs/endereços de DNS que você pretende agregar ao teste, lembra do seu /etc/resolv.conf ? Pois é, use ele para lembrar dos que você tem usado (e também poderá adicionar outros). No final, a sua tela ficará mais ou menos assim :

As barras coloridas e seus círculos possuem uma legenda, basta clicar com o botão direito em cima delas, mas resumidamente mostram dados cacheados e não-cacheados.

2) Clique no botão “Run Benchmark” e aguarde uma barra de progresso que avancará até a conclusão do teste.
3) Clique na guia “Conclusions” e leia os resultados conclusivos, há muita informação em inglês que são importantes, mas se você não sabe ler em inglês avance o texto para algo mais ou menos assim :

O texto acima concluiu que para mim, os melhores DNS foram o da telefônica (incrível, não ?) : 200.176.2.10 e 200.176.2.12

Baseado na conclusão acima, adicione os melhores DNSs ao seu /etc/resolv.conf, cujo arquivo você deixou aberto. Mantenha-os como primeiros da lista e só mude a ordem quando executar novamente o mesmo teste e determinar que o melhor DNS mudou novamente.

No Ubuntu ou qualquer Linux configurado para receber a lista de DNS por DHCP, essa alteração de DNS diretamente no arquivo /etc/resolv.conf valerá apenas até a próxima requisição de DHCP Request. Sim, quando seu micro for reconectado a rede, ela se perderá. Para manter firmes esses DNSs, há um esquema diferente para cada distribuição Linux, no Ubuntu você terá de ir até o Network Manager que geralmente está na bandeja do sistema, clicar com o botão direito sobre o ícone e escolher a opção “Editar conexões“, na guia “Com fio” (ou sem fio se sua conexão for wireless) selecionar o item “Auto eth0” e clicar no botão editar. Em “Editando auto-eth0”, selecione a guia “Configurações IPv4” e mude o método de “Automatico(DHCP)” para “Somente endereços (DHCP) automáticos“. Fazendo isso, o campo de “Servidores DNS” estará livre para edição, o qual você acrescentará os DNS preferenciais separados por virgula, ex :

Pronto ! Com o esquema acima, o Network Manager sempre manterá seus DNSs mesmo que o servidor DHCP passe indicações diferentes.

Em meu teste, voce deve se recordar, eu solicitei para remover os DNSs públicos, porém você pode decidir não fazer isso e concluir que alguns deles são as melhores opções disponíveis atualmente para você.

Ao trocar um DNS por outro, tenha em mente que alguns DNS possuem vantagens e desvantagens. Por exemplo, o OpenDNS pode filtrar conteúdo impróprio, páginas de fishing, etc… Servidores de DNS como os da telefônica possuem o famoso “sequestro de DNS”, ou seja, quando digitado um endereço errado você é redirecionado para uma página de busca escolhido por eles.

Bom teste a todos.

10 Comentários