Configurar um resolvedor de DNS local que armazena em cache apenas por um curto período

2

Estou trabalhando em um aplicativo que será usado para verificar se novos domínios estão configurados corretamente, pois estão configurados para hospedagem. Parte disso verifica a validade dos registros SPF, DomainKey, DKIM, etc.

Atualmente, uso um TTL padrão de uma hora para a maioria desses registros. Ocasionalmente, um erro é encontrado em um dos registros, portanto, ele precisa ser atualizado. Atualmente, se acabei de testar o domínio, tenho que esperar que o registro em cache do resolvedor do sistema expire antes que eu possa verificar se ele está correto com o meu aplicativo. (Sim, eu posso verificar manualmente, mas eu escrevi o aplicativo para que eu não precise).

Eu gostaria de configurar um servidor DNS no sistema para atuar como um resolvedor de cache normal, exceto pelo fato de que ele expirará os registros em no máximo um tempo definido, como cinco minutos, ou simplesmente não armazenará cache. Nem todos os domínios têm DNS hospedado em meus servidores de nomes normais, portanto, esse sistema teria que consultar os servidores de nomes autoritativos de um domínio, em vez de usar resolvedores upstream (que usariam apenas seus registros armazenados em cache).

Esta máquina não está atualmente executando DNS de qualquer tipo para que eu possa instalar o BIND ou o djbdns (ou qualquer outra coisa, se houver uma boa sugestão.

    
por Dave Forgac 17.07.2009 / 03:30

3 respostas

9

Obrigado a todos por sua contribuição e sugestões. Eles me direcionaram para a seguinte solução:

  • Instale o bind9.
  • Edite /etc/bind/named.conf.options para que os encaminhadores fiquem em branco (para que o servidor não use os registros armazenados em cache de outro servidor de armazenamento em cache).
  • Defina as opções max-cache-ttl e max-ncache-ttl para 300 segundos. ( referência )
  • Altere listen-on-v6 { any; }; para listen-on-v6 { localhost; }; para que o servidor não seja usado por outros sistemas. ( referência )
  • Edite o /etc/resolv.conf do sistema para incluir apenas nameserver 127.0.0.1 , para que os aplicativos no servidor usem o novo servidor local.

Eu reiniciei bind9 e verifiquei que está funcionando:

dev:~# dig serverfault.com

; <<>> DiG 9.5.1-P2 <<>> serverfault.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63591
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0

;; QUESTION SECTION:
;serverfault.com.               IN      A

;; ANSWER SECTION:
serverfault.com.        300     IN      A       69.59.196.212

;; AUTHORITY SECTION:
serverfault.com.        300     IN      NS      ns21.domaincontrol.com.
serverfault.com.        300     IN      NS      ns22.domaincontrol.com.

;; Query time: 190 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Jul 18 03:06:24 2009
;; MSG SIZE  rcvd: 101

Os TTLs são exibidos como 300, embora os TTLs publicados do registro do serverfault.com sejam 3600.

    
por 18.07.2009 / 05:10
0

Por que não apenas usar o dnscache (do pacote djbdns) e eliminá-lo a cada 5 minutos?

Para aqueles de vocês que não usaram djbdns e especificamente dnscache - é um resolvedor recursivo que não guarda nada no disco. Além disso, o djb criou um conjunto de ferramentas que monitoram automaticamente um programa e, se este for interrompido, o programa de monitoramento irá reiniciá-lo automaticamente (e instantaneamente).

Mate-o a cada 5 minutos e Bob é seu tio ...

    
por 17.07.2009 / 03:58
0

Você pode, como você diz, limitar o TTL mais longo com max-cache-ttl e max-ncache-ttl , na cláusula de opções BIND ou em uma exibição que só se aplica ao seu servidor de desenvolvimento.

No entanto, isso afeta o TTL de todas as pesquisas, portanto, aumentaria a rede / carga em um servidor de produção e diminuiria a resiliência do DNS.

Para o BIND 9.3 e superior, se você quiser apenas limpar o cache de um domínio, poderá fazer

rndc flushname <domain>

Isso libera todos os registros para o domínio exato, não para subdomínios. Veja a saída de rndc .

Claro, se você quiser prolongar o TTL por qualquer motivo, isso é outra pergunta .

    
por 10.08.2015 / 13:15