daemon do Linux para “persistir” resposta DNS durante a falha de DNS

3

Existe uma ferramenta para o Linux que pode "persistir" no endereço IP durante a falha do servidor DNS? Portanto, o domínio ainda pode ser resolvido nesta máquina, apesar da falha temporária do servidor DNS remoto.

O cenário é que tenho uma máquina com meu aplicativo da web implantado nela. O aplicativo precisa se conectar ao recurso remoto. Este recurso não está sob meu controle - é um Serviço Web de terceiros fornecido por outra empresa, mas está sob o nome de domínio do meu cliente. Os servidores DNS do cliente falham de tempos em tempos, então meu aplicativo não pode resolver o nome do domínio, mas este WS ainda está disponível (a falha do DNS do cliente é irrelevante para ele), então eu poderia alcançá-lo por IP e fazer meu trabalho.

Então, estou procurando uma ferramenta (cache DNS?) que resolva nomes de domínio por meio do DNS, desde que o servidor DNS esteja ativo e retorne o último valor obtido quando o servidor DNS estiver inativo. Reduzir a contagem de solicitações de DNS não é o que me interessa nesse cenário, portanto, o cache de DNS "clássico" não é uma solução aqui (eu acho).


EDITAR:

Cenário com cache DNS local que não funcionará para mim:
1. DNS remoto está funcionando bem | 2. cache DNS local está armazenando em cache a resposta do DNS remoto 3. antes que o TTL da resposta expire, o DNS remoto é recolhido
4. até que o TTL da resposta expire, o cache fornece a resposta armazenada em cache; até agora, tão bom 5. O TTL da resposta expira, o cache limpa a entrada e não pode obter nova resposta, porque o DNS remoto ainda está inativo; isso não é bom

    
por krzys 17.10.2017 / 14:27

5 respostas

6

Como outros sugeriram, o mais próximo que você chegará é um cache no servidor, seja nscd ou um servidor recursivo local. Dito isso, há vários problemas com essa abordagem:

  • Por padrão, essas soluções não são configuradas para lembrar nomes indefinidamente (como você está perguntando) e expiram entradas em cache pelo TTL associado aos registros DNS individuais. Muitos registros têm TTLs curtos nas vizinhanças de cinco minutos.
  • O software pode não permitir que você imponha uma política de "mínimo TTL" que impeça que os dados expirem.
  • Mesmo se o software permitir que você imponha um TTL mínimo, isso apresenta seus próprios problemas. Alguns registros têm TTLs curtos por um motivo. Ignorar esses TTLs curtos pode causar problemas inesperados.

Por fim, o que você está pedindo é que os servidores de nomes se lembrem da última resposta não-erro conhecida, que não é um recurso que existe atualmente no espaço do DNS. Atualmente, há um projeto de norma em andamento para resolver isso devido à crescente popularidade de segmentação de sistemas DNS autoritativos com ataques DDoS. Podemos começar a ver implementações disso em um futuro próximo, depois que ele passar do status do rascunho.

    
por 17.10.2017 / 19:13
4

Embora eu nunca tenha usado, o resolvedor de armazenamento em unbound tem uma configuração de serve-expired , que soa como se fosse o caso:

If enabled, unbound attempts to serve old responses from cache with a TTL of 0 in the response without waiting for the actual resolution to finish. The actual resolution answer ends up in the cache later on. Default is "no".

O que pode te atrapalhar é que quando a "resposta da resolução real" for SERVRFAIL , isso expirará a entrada. Não deve ser preciso muito esforço para testar isso.

    
por 19.10.2017 / 06:36
2

Pode-se criar um programa que consulte regularmente o nome do host remoto usando o DNS e, em seguida, atualize o arquivo /etc/hosts local com as informações.

O resultado final é que o arquivo /etc/hosts age como um cache local para o IP do nome de domínio, e o aplicativo usará isso como a origem do endereço IP.

Eu não conheço nenhum software padrão que possa fazer isso.

    
por 18.10.2017 / 16:44
1

Sim, isso é possível, por exemplo, através do nscd , o daemon de cache do serviço de nomes , que

is a daemon that provides a cache for the most common name service requests.

    
por 17.10.2017 / 14:32
-2

Dê uma olhada na sua distribuição. Eu sei que o Ubuntu (> = 12.04) e os irmãos já possuem um servidor DNS dnsmasq em suas caixas locais para fazer cache e fazer outros truques de DNS. Você pode ser capaz de aproveitar algo assim para fazer com que o cache de DNS tenha mais tempo de cache / TTL.

    
por 18.10.2017 / 16:40