Como configurar o bind9 para ser um DNS local apenas sem acesso à internet?

5

Eu quero configurar o bind9 para ser um DNS local apenas sem acesso à internet. Então eu tenho 5 PCs no meu domínio virtual xy.com. Dentro deste domínio não há acesso à internet.

O servidor DNS tem entradas como:

  • pc1.xy.com EM A 10.1.1.1
  • pc2.xy.com EM A 10.1.1.2
  • .
  • .
  • pc5.xy.com EM A 10.1.1.5

O bind está configurado corretamente, mas quando eu faço um "dig @localhost pc1" no servidor DNS ele não funciona porque ele fica preso ao entrar em contato com os servidores raiz. Mas eu só quero que ele seja local e responda qual IP pc1 tem.

Como posso conseguir isso?

    
por JohnnyFromBF 06.01.2012 / 14:26

3 respostas

9

Para conseguir isso, você precisa criar uma zona raiz falsa para substituir a zona "root.hints" que normalmente é configurada.

Em named.conf coloque isso:

zone "." IN {
        type master;
        file "fake.root";
};

e em fake.root coloque isso:

$TTL    300
.               IN      SOA ns. hostmaster.xy.com. (
                        20120101 1800 900 604800 86400
                )
.               IN      NS      ns
ns              IN      A       127.0.0.1

Isso impedirá todas as tentativas de acessar a Internet para obter as dicas de raiz reais.

Você também pode colocar suas entradas pcN.xy.com diretamente nessa zona raiz também - não é necessário que elas estejam em seu próprio arquivo xy.com zone, portanto, basta anexar o seguinte a fake.root :

$ORIGIN xy.com.
pc1             IN      A       10.1.1.1
pc2             IN      A       10.1.1.2
pc3             IN      A       10.1.1.3
pc4             IN      A       10.1.1.4
pc5             IN      A       10.1.1.5

Além de qualquer options { } que você possa precisar (ACLs?), é isso - nada mais é necessário.

    
por 06.01.2012 / 23:31
4

Você precisa desativar a recursão:

Adicione à configuração:

allow-transfer {“none”;};

allow-recursion {“none”;};

Minha configuração "named.conf" é semelhante a esta (no sistema RHEL):

options {
        allow-query {
        any;
};
allow-recursion {
        none;
};
    
por 06.01.2012 / 14:37
2

Você não descreveu sua configuração com detalhes suficientes. Eu acho que você está perdendo a parte autoritária. Você precisa ter um bloco como este em seus arquivos de configuração:

zone "domain.lan" {
        type master;
        file "master/db.domain.lan";
        allow-update { none; };
};

onde master/db.domain.lan deve apontar para o arquivo de zona que deve conter os registros que você postou acima. Além disso, o arquivo de zona deve ter registro SOA (início de autoridade) em seu cabeçalho. O arquivo de zona deve gostar como:

domain.lan.     86400   IN SOA  dns.domain.lan. root.dns.domain.lan. ( 1 10800 3600 6044800 86400 )
                86400   IN NS   dns.domain.lan.

dns.domain.lan.      86400   IN   A    10.10.10.1
pc.domain.lan.    86400   IN   A    10.10.10.2

Você pode personalizar os nomes / valores / IPs de acordo com suas necessidades.

    
por 06.01.2012 / 14:37