Cache de DNS da ligação mentirosa

0

Estou tentando configurar, para chamar de alguma forma, um servidor DNS "mentiroso".

Quero dizer: um servidor DNS que atua como um cache DNS (escravo) para um servidor existente, mas com seu próprio subconjunto de registros para alguns nomes de domínio.

O comportamento desejado é, por exemplo:

  • Quando consultado para "host.domain.com". Se tiver uma entrada para ela em seu próprio banco de dados, responda com ela.

  • Se não estiver em seu banco de dados, pergunte ao mestre (e, opcionalmente, armazene essa resposta em cache).

Eu sei que posso colocar o bind9 como um servidor escravo mas, assim, todas as consultas serão respondidas com a mesma resposta que o servidor real seria respondido.

Claro, é uma configuração complicada, eu sei, mas tem um propósito útil:

Imagine que você tem serviços complexos (por exemplo, configuração e scripts de backup do Bacula no meu caso) e deseja testá-lo em servidores de produção reais antes de colocá-lo em produção real.

Se eu pudesse redirecionar temporariamente o DNS para esse DNS "mentiroso" de forma que todos os nomes sejam resolvidos normalmente, exceto alguns subconjuntos de hosts "mascarados", ele se comportará como uma configuração "real", mas sem bagunçando o armazenamento real de servidores de backup com backups de teste.

Claro, eu poderia usar uma lista de entradas no / etc / hosts , mas requer mais configuração e é mais propenso a erros (eu tenho os ambientes de teste totalmente automatizados com o Vagrant, mas os IPs podem mudar algumas vezes).

Clonar o servidor e usá-lo para fazer o teste, também requer mais trabalho e recursos e, mais uma vez, é mais propenso a erros porque depois dos testes, precisarei reconfigurar o servidor real manualmente enquanto, com o "dns deitado" "abordagem, eu só preciso restaurar o arquivo original resolv.conf.

Configurei com sucesso um servidor dns mestre para nosso domínio e ele resolve corretamente suas próprias entradas e consultas para outros domínios, mas não sabe sobre os dados dos servidores de domínio real.

Eu acho que deveria ser possível abordar com bind, mas eu não sei onde procurar ...

    
por bitifet 21.12.2016 / 18:21

2 respostas

1

Vincular e algumas outras implementações de servidor DNS oferecem suporte a algo chamado de zona de política de resposta . Esta zona permite substituir registros específicos.

Este é um exemplo de como você usa esse recurso para forçar a ativação da pesquisa segura do Google. Isso substitui os registros google.com, www.google.com e google.ca.

named.conf

options {
    ...
    response-policy { zone "rpz"; };
};

zone "rpz" IN {
        type master;
        file "rpdb.zone";
        allow-query {none;};
};

rpdb.zone

$TTL 10800
@ IN SOA localhost. hostmaster.example.org. (
        2014110500;
        10800;
        3600;
        604800;
        10800 )

        IN      NS      localhost.

; Google forced Safe Search
google.com      IN CNAME forcesafesearch.google.com.
www.google.com  IN CNAME forcesafesearch.google.com.
google.ca       IN CNAME forcesafesearch.google.com.

As zonas de política de resposta são bastante flexíveis no que podem fazer. Eles podem ser usados para criar um firewall de DNS e outras coisas.

    
por 21.12.2016 / 18:51
0

Resposta parcial (funciona para minha configuração, mas não é tão genérica quanto a minha pergunta original):

No meu caso, só preciso substituir os endereços de um subdomínio específico, especificamente bacula.ourDomain.com .

Como eu disse, configurei com sucesso bind como master para bacula.ourDomain.com , mas não consegui resolver nenhum outro host ourDomain.com .

Agora acabei de adicionar isto:

options {
  [...]
  forwarders {<real_ns_ip>;};
  [...]
}

Desta forma, o meu servidor resolve bacula.ourDomain.com , mas para o resto de ourDomain.com pede para .

Como eu disse, não é uma solução genérica porque não permite escolher apenas endereços específicos do domínio, mas atualmente é suficiente para meus propósitos.

@Zoredache provavelmente seria uma solução melhor, mas ainda não obtive sucesso em colocá-lo em prática.

    
por 23.12.2016 / 11:08

Tags