Existem várias maneiras diferentes de conseguir isso. Obviamente, você não quer criar registros A para os endereços IP públicos e privados e publicar esses registros para consumo público, porque os usuários tentarão acessar através do IP privado. Se vários registros A forem listados para um único nome, eles serão usados em um round robin, fazendo com que os usuários às vezes não consigam se conectar.
Aqui estão algumas soluções que usei:
Minha solução favorita é criar uma subzona DNS para esses servidores, talvez chamada "private.example.com". Em seguida, os servidores em "example.com" que possuem endereços IP privados listados na zona "private.example.com". Em seguida, configure seu /etc/resolv.conf (provavelmente via DHCP) para que, quando você estiver conectado à rede privada, seu caminho de pesquisa DNS seja "private.example.com example.com". Agora, se você tentar acessar "hostname", ele primeiro tentará pesquisar "hostname.private.example.com". e depois "hostname.example.com". Então você tem algum host nesse domínio que não tem IPs privados que você não precisa listar em vários lugares. Você também pode referenciar explicitamente o IP público dizendo "hostname.example.com" e de forma semelhante para o IP privado. Mas se você disser "hostname", ele procurará uma correspondência.
Observação: se terceiros perceberem que existe uma zona "private.example.com", eles poderão consultá-lo ou "pesquisá-lo" e ver o endereçamento IP. Revelar essas informações pode ser motivo de preocupação para você, dependendo de suas necessidades exatas, mas para minhas necessidades revelar alguns endereços IP privados nunca foi um problema.
Você pode configurar o que o BIND chama de "visualizações". Aqui está um link para outra pergunta que mostra um exemplo de configuração de visualizações . Basicamente, você configura as Listas de Controle de Acesso informando qual arquivo de zona usar para responder à solicitação com base em qual endereço IP está solicitando. Portanto, se você receber uma solicitação da rede privada, poderá responder com o IP privado. As visualizações podem ser difíceis de configurar e manter, no entanto. Há também uma questão de manter cópias duplicadas de registros nas diferentes visualizações, veja minha próxima sugestão para mais detalhes.
Se a sua rede privada tiver um host, você poderá executar o DHCP e o DNS, que são separados do seu servidor DNS público. Você pode configurar o DNS neste host como o servidor DNS padrão para máquinas na rede privada e, em seguida, configurar o servidor DNS para responder a consultas para essas máquinas usando os IPs privados. No entanto, se nem todas as máquinas nas zonas DNS em que você está interessado tiverem IPs privados, isso poderá levar à duplicação de registros, em que agora é necessário listar os endereços IP dos servidores nos dois servidores DNS. Semelhante ao Views acima, mas conceitualmente um pouco mais simples de configurar e testar, pois você tem servidores DNS completamente separados.