DNS – Criando Views no Bind


Continuando nossa série de artigos sobre o Bind, hoje vamos criar views em nosso DNS, views são seções onde podemos controlar quem pode ver qual parte de nosso DNS, assim podemos ter uma seção interna e outra externa respondendo no mesmo servidor DNS.

Lembrando o artigo da semana passada, tínhamos o seguinte conteúdo no nosso arquivo named :

zone "empresa.net" {
     type master;
     file "db.empresa.net";
     allow-transfer { 172.16.1.11; };
};
zone "exemplo.net" {
    type master;
    file "db.exemplo.net";
    allow-transfer { 172.16.1.11; };
};
zone "1.16.172.in-addr.arpa" {
    type master;
    file "db.172.16.1";
    allow-transfer { 172.16.1.11; };
};

Não tínhamos uma zona de máquinas locais e nem separação de quem podia ver cada zona. Vamos criar agora nossas views, lembrando que todas as seções existentes nos arquivos named devem estar em uma view.
Vamos criar nossa zona local acrescentando uma entrada no final do arquivo:

zone "empresa.local" {
    type master;
    file "db.empresa.local";
    allow-transfer { none; };
};

Criaremos o conteúdo de nossa zona no arquivo db.empresa.local no diretório correto e com o seguinte conteúdo:

$TTL 28800 ; tempo de vida das respostas fornecidas pelo DNS
@ IN SOA ns1.empresa.local. dns-admin.empresa.local. (
      2011102701 ; serial para controle de atualizações entre master e slave
       3600 ; tempo de atualizações entre master e slave (refresh)
       1800 ; tempo de atualizações caso o refresh falhe
      604800 ; tempo de expiração do slave caso não se contate com o master
      3600 ) ; tempo de vida das repostas negativas do servidor
@    IN NS ns1.empresa.local.
@    IN MX 10 mail.empresa.local.
ns1  IN A  192.168.1.10
mail IN A  192.168.1.12
ftp  IN A  192.168.1.13
www  IN A  192.168.1.20

Assim vamos criar as nossas views com o seguinte conteúdo:

view "externa" {
match-clients { any; };
recursion no;
zone "empresa.net" {
     type master;
     file "db.empresa.net";
     allow-transfer { 172.16.1.11; };
};
zone "exemplo.net" {
    type master;
    file "db.exemplo.net";
    allow-transfer { 172.16.1.11; };
};
zone "1.16.172.in-addr.arpa" {
    type master;
    file "db.172.16.1";
    allow-transfer { 172.16.1.11; };
};
};
view "interna" {
match-clients { 192.168.1.0/24; };
recursion yes;
zone "empresa.local" {
    type master;
    file "db.empresa.local";
    allow-transfer { none; };
};
};

Assim teremos uma view chamada “externa” que será de acesso a todos (any) e não permitirá consultas recursivas (recursion no), ou seja qualquer um pode consultar sobre os domínios que estão dentro dessa view, mas não podem consultar sobre nenhum outro domínio.
Já a view “interna” é de acesso apenas para clientes da rede 192.168.1.0/24 e permite que clientes dessa rede consultem sobre outros domínios mesmo que não estejam hospedados nesse servidor.
Espero que esse artigo torne seu DNS mais seguro e eficiente, no próximo artigo estaremos melhorando a segurança do DNS.
Não esqueça de votar no TopBlog e continuar a recomendar nosso Portal.

Share

    Comments

    1. Adoro essas dicas de Linux…. principalmente sobre o BIND…
      Bernardes que me desculpe… mas estou gostando muito mais de linux do que windows e se não fosse o Cooperati eu estaria bem atras ainda…

    2. Vagner, excelente post, como sempre, eu estou atualizando meu dns seguindo suas orientações, agora uma dúvida, aqui na empresa eu possuo dois links com ips fixos e de empresas diferentes (mundivox e gvt) e consequentemente gateways diferentes, isso implica alguma coisa nessa configuração do DNS ?, estou pretendendo fazer loadbalance mas não sei como ficaria os meus serviços de e-mail caso alguma das redes caia, poderia me ajudar ?
      Obrigado
      Junior

      • Junior,
        Além de configurar o servidor de Email para responder pelos IP dos links, eu faria um NAT das porta usadas pelo servidor de Email nos links externos para o IP interno do servidor e além disso colocaria dois RR MX dentro da configuração do DNS, para que os dois IP externos apontem para o recurso de Mail eXchange.

    3. Vagner, mais uma ajuda, ao seguir o passo a passo aparece este erro no log,
      Nov 11 14:35:32 ns1 named[3119]: loading configuration from ‘/etc/bind/named.conf’
      Nov 11 14:35:32 ns1 named[3119]: /etc/bind/named.conf.default-zones:2: when
      using ‘view’ statements, all zones must be in views
      Nov 11 14:35:32 ns1 named[3119]: loading configuration: failure
      Nov 11 14:35:32 ns1 named[3119]: exiting (due to fatal error)
      pelo que entendi, todas as zonas que estão em default-zones devem estar entre as views, mas qual, a interna ou a externa ?
      Obrigado

    4. Essa dica eu recomendo, já tive aula com esse cara ai.

    Deixe uma resposta

    O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

    © 2019 All Rights Reserved. Cooperati.