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 do view é a diretiva match_clients, verifique 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 Dicas:
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.