Views no BIND9

De gutocarvalho.net

Este tutorial aborda como configurar views no Bind9

Certo dia estava fuçando na internet usando o DIG que é uma ferramenta de lookup para DNS, e encontrei um domínio que tinha muitos registros do tipo A (host) apontando para endereços ip privados.

Bom se você tem os servidores de DNS na sua empresa ou entidade, você pode utilizar acl's e views do BIND para criar uma zona específica para sua intranet e outra expecífica para uso externo.

Veja só, vamos editar o arquivo named.conf.local, presente no debian ou ubuntu.

Crie uma ACL para seus servidores de DNS slave externos.

acl "external_slaves" {
        200.xxx.xxx.xxx;
        200.xxx.xxx.xxx;
        200.xxx.xxx.xxx;
        200.xxx.xxx.xxx;};

Agora vamos criar uma ACL para seus servidores de DNS slave na rede interna.

acl "internal_slaves" {
        10.xxx.xxx.xxx;
        172.xxx.xxx.xxx;
        192.xxx.xxx.xxx;
};

Agora vamos criar uma ACL onde você vai determinar quais são suas redes privadas

acl "lan_nets" {
        10.0.0.0/16;
        172.16.0.0/16;
        192.168.0.0/24;
};

Legal já criamos listas de controles essenciais para configuração de nossas views, agora vamos criar as views.

Primeito a view para sua rede privada.

view "internal" IN {

    match-clients { lan_nets; };
       
    allow-recursion { lan_nets; }; 

    allow-transfer { internal_slaves; };

    notify yes;

    zone "." {
            type hint;
            file "/etc/bind/db.root";
    };

    zone "localhost" {
            type master;
            file "/etc/bind/db.local";
    };

    zone "127.in-addr.arpa" {
            type master;
            file "/etc/bind/db.127";
    };

    zone "0.in-addr.arpa" {
            type master;
            file "/etc/bind/db.0";
    };

    zone "255.in-addr.arpa" {
            type master;
            file "/etc/bind/db.255";
    };

    zone "dominio.gov.br" {
        type master;
        file "/var/cache/bind/zones/master/dominio.gov.br.internal";
        notify yes;
        allow-transfer { internal_slaves; };
    };

Agora vamos configurar a view para rede externa (internet)

view "external" IN {

    match-clients { !lan_hosts; any; };

    allow-transfer { external_slaves; };

    notify yes;

    zone "." {
            type hint;
            file "/etc/bind/db.root";
    };

    zone "localhost" {
            type master;
            file "/etc/bind/db.local";
    };

    zone "127.in-addr.arpa" {
            type master;
           file "/etc/bind/db.127";
    };

    zone "0.in-addr.arpa" {
            type master;
           file "/etc/bind/db.0";
    }; 

    zone "255.in-addr.arpa" {
            type master;
            file "/etc/bind/db.255";
    };

    zone "dominio.gov.br" {
       type master;
       file "/var/cache/bind/zones/master/dominio.gov.br.external";
    };

Veja que todos os domínios em que seu serviço de DNS tem a autoridade tem que constar nas duas views, isto caso deseje que ele seja visto tanto internamente quanto externamente. Mesmo que seja um domínio que não tenha nenhum registro A apontando para algum host em sua intranet, se você deseja que sua intranet acesse este domínio ele terá que ser mencionado na internal view e na external view.

O segredo dos view sé a diretiva match_clients, verifque que no caso da view "internal", eu digo para eles que os clientes que serão atendidos por ela são os que constam na ACL lan_nets, já na view "external" eu especifico que tudo que for diferente de lan_nets será atendido por aquela view.

Bom sendo assim você vai colocar no seu arquivo de zona dominio.gov.br.internal além dos registros comuns os registros tipo A que apontam para hosts na sua intranet e no arquivo de zona dominio.gov.br.external vai colocar apenas os registros normais com endereços ip públicos.

Através das views e acls você tem mais flexibilidade para elaborar suas configurações e mais segurança para sua rede, pois desta forma você não expõe informações sobre a sua rede privada.

Mais informações


a diretiva match-clients especifica a qual rede ou host esta a view em que ela se encontra vai atender.

a diretiva allow-recursion especifica qual rede ou host pode fazer pesquisas do tipo recursiva utilizando este servidor.

a diretiva allow-transfer especifica para qual rede/host os arquivos de zona podem ser transferidos caso exista um servidor slave por lá.

a diretiva notify yes; especifica que os servidores slave serão avisado caso alguma modificação no serial zona seja detectado.

Referências

Ferramentas pessoais