Supondo que você esteja executando seu próprio servidor DNS interno, você pode ter autoridade para a zona "example.com" e encaminhar todas as outras consultas para algo como OpenDNS ou resolvedores públicos do Google (ou atuar como um resolvedor recursivo, que não é Difícil). Em sua zona "example.com" interna autoritativa, você precisará ter registros correspondentes a todos os registros em sua zona autoritativa voltada para o mundo, mas oferecendo os números IP não públicos. O exemplo abaixo demonstra um servidor DNS fornecendo respostas separadas para clientes internos e externos, mantendo o tráfego interno local.
Assim, sua zona não pública (armazenada no arquivo example.com_internal) pode ter a seguinte aparência:
$TTL 7D
$ORIGIN example.com
@ IN SOA example.com. hostmaster.example.com (
1000001 ; serial number
8H ; refresh interval
2H ; retry interval
4W ; expiration
1D ; minimum
)
@ IN NS dns.example.com
@ IN A 192.168.1.5
dns IN A 192.168.1.3
dns IN A 192.168.1.4
www IN CNAME @
e sua zona pública (armazenada no arquivo example.com_public) podem parecer
$TTL 7D
$ORIGIN example.com
@ IN SOA example.com. hostmaster.example.com (
249590 ; serial number
8H ; refresh interval
2H ; retry interval
4W ; expiration
1D ; minimum
)
@ IN NS dns.example.com
@ IN A 192.0.43.10
www IN CNAME @
dns IN A 192.0.43.10
Você configuraria seu servidor de nomes para ser parecido com:
options {
directory "/var/named";
};
controls {
inet 127.0.0.1 allow { localhost; } keys { rndc_key; };
};
key "rndc_key" {
algorithm hmac-md5;
secret "ht3pp9a4cik1aq530g6uri06p9g28yrvikqdzr7h";
};
acl internal {
127.0.0.0/8;
192.168.1.0/24;
}
acl external {
!192.168.1.0/24;
!240.0.0.0/4;
}
view internal {
match-clients { internal; };
forwarders {8.8.8.8; 8.8.4.4;} ;
forward only;
zone "0.0.127.in-addr.arpa" {
type master;
file "zone/127.0.0";
allow-query {192.168.1.0/24;};
};
zone "1.168.192.in-addr.arpa" {
type master;
file "zone/192.168.1";
allow-query {192.168.1.0/24;};
};
zone "example.com" {
type master;
file "zone/example.com_internal";
allow-query {192.168.1.0/24;};
};
}
view external {
match-clients { external; };
recursion no;
zone "example.com" {
type master;
file "zone/example.com_public";
};
zone "43.0.192.in-addr.arpa" {
type master;
file "zone/192.0.43";
};
}
Tudo isso é muito improvável e você deve testá-lo em uma configuração de laboratório antes de implantá-lo na produção. Para qualquer coisa em "example.com", suas máquinas obteriam os endereços internos e os clientes obteriam os endereços públicos. Você também precisará configurar um relacionamento mestre-escravo entre seus servidores DNS, para garantir a replicação e a consistência.