Melhor maneira de configurar o cache do DNS?

28

Para acelerar as pesquisas de DNS, quero instalar um cache ou proxy de DNS.

Eu posso ver pelo menos três programas que acho que farão o trabalho: bind9, pdnsd ou dnsmasq.

Gostaria de garantir que, se eu instalar um, não o deixe mal configurado do ponto de vista de desempenho ou segurança. Então, o que as pessoas recomendariam e existem alterações na configuração que devo fazer imediatamente após a instalação?


fonte
Para uma estação de trabalho, certo? Ou estamos falando de LAN / ISP?
Sim, isso é para acelerar estações de trabalho individuais, não para uma LAN.

Respostas:

15
  1. Instalar bind9
  2. Aponte resolv.conf para 127.0.0.1

Para fazer isso, siga estas etapas:

Para instalar o Bind9

  1. Abra o "Ubuntu Software Center" (Aplicativos-> Ubuntu Software Center)
  2. Procurar por bind9
  3. Marque para exibir "Itens técnicos"
  4. Marque bind9 e instale-o

Atualize o /etc/resolv.conf

  1. Abra o Gerenciador de Rede (Sistema-> Preferências-> Gerenciador de Rede)
  2. Encontre sua conexão e edite-a (com ou sem fio)
  3. Alterne a guia "Configuração IPV4"
  4. No campo "Servidores DNS", escreva 127.0.0.1

Está feito!

Testar

Abra o gnome-terminal (Aplicativos> Acessórios> Terminal) e digite

dig ubuntu.com 

(se você não o tiver, instale o pacote dnsutils conforme explicado em bind9)

Veja as últimas respostas, como exemplo:

Minha primeira consulta no ubuntu.com

;; Query time: **209 msec**
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Jan 22 12:20:12 2011
;; MSG SIZE  rcvd: 196

Minha segunda consulta:

;; Query time: **0 msec**
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Jan 22 12:18:23 2011
;; MSG SIZE  rcvd: 156

O servidor 127.0.0.1 significa que você está resolvendo localmente. Dê uma olhada no tempo de consulta (cercado por **), o segundo é armazenado em cache.

Lin
fonte
Obrigado Igor. Tentei essa abordagem e funciona bem para pesquisas de nome, mas não parece armazenar em cache pesquisas de endereço IP reversas. Como eu faria isso usando o bind9?
Isso não fez nada na minha configuração. Tempo de consulta ainda é ~ 100ms
Ashfame
Vocês dois: se não parece funcionar, verifique de que escavação do servidor diz que obteve a resposta. Se não indicar 127.0.0.1, você não o configurou corretamente. Nota: As instruções para configurar o resolv.conf podem ser diferentes para diferentes versões do Ubuntu.
thomasrutter
Então você está executando um servidor de nomes em cache na caixa de interface gráfica? Sim, é possível, é claro. Provavelmente, a maioria das pessoas lendo isso terá uma instalação do servidor - e a GUI é opcional. Um simples sudo apt install bind9e sudo nano /etc/resolv.confdeve ser adicionado à sua resposta como alternativas.
Bshea 2/17
Fiz tudo, mas a instalação não está funcionando. Eu fiz resolv.confpara 127.0.0.1, finalmente. Isso pode falhar? dig ubunut.comdiz "conexão expirou; nenhum servidor pode ser alcançado"
Satya Prakash
9

Eu recomendaria dnsmasq,

Veja um bom tutorial aqui; http://embraceubuntu.com/2006/08/02/local-dns-cache-for-faster-browsing/

Você pode querer ler uma comparação aqui;

http://en.wikipedia.org/wiki/Comparison_of_DNS_server_software

dblang
fonte
Eu uso o dnsmasq para o cache do DNS. Também fornecido mapeamentos de locais / etc / hosts e DHCP (opcionalmente usando / etc / éteres.)
BillThor
Tentei o dnsmasq e funciona bem como o bind9 para armazenar em cache as pesquisas de nome, mas também não parece armazenar em cache as pesquisas de endereço IP. Isso é possível usando o dnsmasq?
11
Cuidado com o Network Manager substituindo seu resolv.conf toda vez que ele é iniciado.
daithib8
6

"Para acelerar as pesquisas de DNS, quero instalar um cache ou proxy de DNS."

Está bem. Mas há uma maneira mais fácil também. O uso do OpenDNS e / ou dos servidores de nomes do Google será mais rápido que o seu próprio cache local para nomes que já existem nos caches do OpenDNS / Google. Usar 208.67.222.222, 208.67.220.220 e / ou 8.8.8.8 como o nome serve será mais rápido quase o tempo todo. Você pode testar isso time nslookup www.google.com 208.67.222.222para testar a velocidade em um dos servidores de nomes do OpenDNS, time nslookup www.google.com 8.8.8.8no Google ou time nslookup www.google.com 127.0.0.1no cache local. Quando digo mais rápido, quero dizer tecnicamente mais rápido e não muito mais rápido que uma pessoa pode facilmente notar uma diferença.

"Posso ver pelo menos três programas que farão o trabalho: bind9, pdnsd ou dnsmasq."

Você está aberto para a parte dnscache do djbdns? Instruções abaixo. No entanto, ele não salva o cache sem um patch ...

sudo apt-get remove bind9 dnsmasq-base
sudo apt-get install djbdns dnscache-run
sudo killall -9 dnsmasq
sudo update-rc.d -f bind9 remove

Em seguida, precisaremos informar o sistema para usar nosso cache.

sudo gedit /etc/resolv.conf

Edite o arquivo para se parecer com este exemplo. Esse arquivo define quais servidores de nomes usar, o domínio padrão e o sufixo de pesquisa. O sufixo de pesquisa possibilita executar consultas usando apenas a parte do nome do host de um nome de domínio totalmente qualificado. Por exemplo, 'nslookup www' se torna automaticamente 'nslookup www.example.com' quando example.com é o valor do parâmetro "search".

nameserver 127.0.0.1      # Use the local resolver first.
nameserver 208.67.222.222 # OpenDNS
nameserver 8.8.8.8        # Google
domain example.com
search example.com

Isso é um pouco chique, mas precisamos obter os servidores de nome raiz mais recentes.

sudo dnsip $(dnsqr ns . | sed -e '/answer/!d;s/\(.*\)NS \(.*\)/\2/') | sudo tee /etc/dnscache/root/servers/@

Eu acho que o arquivo resolv.conf é substituído quando usamos o DHCP. Eu escolho me fornecer um endereço IP estático e remover o software que o esmaga, editando o arquivo de interfaces para configurar o endereço IP estático. Mas você pode tentar trabalhar com o Network Manager se quiser.

sudo apt-get purge network-manager network-manager-gnome
sudo gedit /etc/network/interfaces

Meu arquivo de interfaces tem a seguinte aparência, mas modifique o seu para sua configuração.

# Loopback
#
auto lo
iface lo inet loopback

# First network card (attached to NAT router, attached to cable internet)
#
auto eth0
iface eth0 inet static
address 192.168.1.254
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

Agora vamos reiniciar.

sudo reboot

Agora você está usando um resolvedor local e os servidores raiz mais recentes. Mas você notará se tentar o OpenDNS e o Google de fato responderem mais rapidamente (para nomes que estão em seus caches, que são todos os domínios mais populares). Não há configuração adicional que possa fazer com que o software se torne mais seguro do que já é.


fonte
Obrigado Christopher. Você pode explicar por que o DNS do Google é mais rápido que o meu cache local? Eu acredito que é rápido, mas como poderia ser mais rápido ir até o servidor deles do que ir para o cache local?
Eric Johnson
Porque as chances são muito boas de que ele já tem a resposta sem precisar procurar novamente.
@ Christopher: Mas uma vez que o cache local o possui, as pesquisas são instantâneas. Se você usa o DNS do Google, aguarde 80 ms sempre que fizer uma consulta.
Zan Lynx
@Zan Lynx Sim ... então faça seu cache local perguntar ao Google. Woo-hoo!
6
Embora o @ user8290 tenha razão, não diria que usar o GoogleDNS é mais rápido que o local. Sim, o google tem os resultados armazenados em cache, mas vamos lá - se a sua velocidade internacional é ruim, não importa, mesmo que o Google tenha todos os resultados de DNS do mundo. As redes locais geralmente têm 100mbps +, portanto, pedir uma resposta ao servidor DNS da rede local será pelo menos 10 vezes mais rápido do que pedir 8.8.8.8/8.8.4.4 (dependendo da velocidade internacional). Obviamente, isso significa que você tem o resultado armazenado em cache no servidor DNS.
tftd
3

Estou usando o " dnscache " ( pacote "dnscache-run" ) e é muito simples. Não há necessidade de configurar nada.
Ele captura as petições de DNS ( porta 53 ) e armazena em cache as respostas, na próxima vez que o Linux solicitar esse domínio, o dnscache retornará o IP imediatamente.
Embora existam dois parâmetros que podem ser alterados para melhorar este programa:

echo 16000000 > /etc/sv/dnscache/env/CACHESIZE
echo 16777216 > /etc/sv/dnscache/env/DATALIMIT
Juan Simón
fonte
0

Qualquer que seja a ferramenta usada, verifique se a porta 53 não está ativada no seu firewall. Convém permitir apenas o host com acesso de saída ao cache.

O DNSMasq é fácil de configurar e bem documentado. Se você instalá-lo em um firewall, especifique as interfaces às quais deseja vincular a exclusão da interface da Internet.

A ligação é mais difícil de configurar e pode ser um exagero como cache para uma rede pequena. Eu acredito que a configuração padrão é apenas o cache. Você pode adicionar uma ACL para restringir quais endereços podem usar seu servidor.

BillThor
fonte
0

O pacote dnscache-run teve menos conflitos com outros pacotes, como libvirt, que usam redes de ponte e dnsmasq.

sudo apt-get install dnscache-run

Este pacote remove o resolvconf (/etc/resolv.conf) e você precisará usar o / etc / network / interfaces ou o gerenciador de rede para visualizar sua configuração.

rickfoosusa
fonte