Estou deliberadamente deixando minha plataforma não especificada para esta pergunta, embora eu diga que minhas "plataformas de interesse" são Linux e Windows 10.
Suponha que eu tenha N NICs. Cada um está conectado a redes separadas, uma das quais fornece acesso à Internet por meio de um gateway padrão. As outras redes são todas privadas e não têm caminho para a Internet ou entre si. Todas as redes usam espaço de endereço RFC 1918. O host não está configurado para rotear entre as redes.
Cada rede privada tem um nome de domínio exclusivo associado a ela e executa seus próprios servidores DNS autoritativos privados para fornecer registros DNS para esse nome de domínio exclusivo. Esses nomes não fazem parte do DNS global. (Eu garanto isso tornando-os subdomínios de um domínio que registrei e para o qual executo servidores DNS públicos autoritativos que não servem registros para os subdomínios mencionados.)
Suponha que os números de rede e os nomes de domínio associados sejam os seguintes:
- meu-único-subdomínio-1.meu-domínio-único.com
- Os hosts residem em 10.0.1.0/24
- Meu host tem endereço IP 10.0.1.1 na interface eth1
- Os servidores DNS estão em 10.0.1.253 e 10.0.1.254
- meu-único-subdomínio-2.meu-domínio-único.com
- Os hosts residem em 10.0.2.0/24
- Meu host tem endereço IP 10.0.2.1 na interface eth2
- Os servidores DNS estão em 10.0.2.253 e 10.0.2.254
- ...
- meu-unique-subdomain-N.meu-unique-domain.com
- Os hosts residem em 10.0.N.0/24
- Meu host tem endereço IP 10.0.N.1 na interface ethN
- Os servidores DNS estão em 10.0.N.253 e 10.0.N.254
Conforme mostrado acima, meu host possui dois servidores DNS (primário e secundário) associados a cada interface. Estes podem ser atribuídos via DHCP ou manualmente; realmente não importa. Os servidores DNS do meu ISP serão associados à interface de rede através da qual a Internet pode ser acessada. Meus servidores DNS privados para as redes privadas serão associados às outras interfaces de rede.
Estou tendo dificuldade em entender como meu host pode saber qual servidor DNS usar para resolver um determinado nome de domínio. Qualquer FQDN que esteja realmente definido pode ser resolvido em exatamente uma interface de rede --- por meio do servidor DNS privado apropriado ou, se nenhum se aplicar, por meio de um servidor DNS público. Para saber qual servidor DNS usar, o host precisa saber em qual número de rede o host que está sendo consultado reside, mas para saber isso, ele precisa primeiro fazer uma consulta DNS! Parece haver um problema de galinha e ovo aqui.
Suponha que eu queira resolver foo.my-unique-subdomain-3.my-unique-domain.com . Como meu host determina que ele precisa enviar a consulta ao servidor DNS em 10.0.3.253 ou 10.0.3.254 ?
Vou listar três soluções possíveis, uma para Windows e duas independentes de plataforma. Claro que essa lista não é exaustiva.
Edite o
hosts
arquivo no seu PC. No Linux, é algo como/etc/hosts
; no Windows, geralmente éc:\windows\system32\drivers\etc\hosts
. Observe que você deve serroot
ouAdministrator
, respectivamente, para editá-lo e, no Windows, pode ser necessário desativar temporariamente o antivírus para fazer isso.O arquivo hosts destina-se a fornecer resolução de DNS sem um servidor DNS. Geralmente leva entradas que nunca serão alteradas. Para o formato, dê uma olhada no respectivo arquivo que já existe em seu O/S. É muito facilmente compreensível.
O Windows fornece
NRPT
(Tabela de Resolução de Política de Nome). Isso faz exatamente o que você deseja: Você pode usar servidores de nomes diferentes dependendo do nome que deve ser resolvido. Por permitir curingas na configuração, é muito fácil de configurar; a configuração é feita via GUI e no seu caso consiste em uma linha por sub-rede.A desvantagem é que a configuração da GUI acontece por meio da política de grupo, portanto, você não pode fazer isso facilmente no Windows Home. Ao fazer sua pesquisa sobre NRPT, não se preocupe com as coisas complicadas; a maioria dos artigos se concentra em seu uso para acesso direto, DNSSEC e outros aspectos. Mas você pode realmente esquecer isso (se não precisar) e usar o NRPT exatamente como descrito acima apenas para a finalidade desejada.
Aqui está um ponto de partida sobre isso.
Embora esta solução seja genérica (funciona com qualquer sistema operacional), as etapas reais para implementá-la diferem não apenas entre os sistemas operacionais, mas também entre os softwares usados. Portanto, vou explicar com Linux e
bind9
, mas você pode facilmente transferir o método para outros ambientes.A ideia básica é instalar um servidor DNS adicional totalmente configurável (ou apenas um resolvedor) em seu host e configurar as redes de seu host para usar esse servidor DNS (ou resolvedor) para resolver todos os nomes. Em seguida, configure o servidor/resolver DNS para encaminhar as consultas DNS de acordo.
Nos últimos anos,
Unbound
tem ganhado muita atenção, mas eu não conheço, então vou explicar como isso funcionaria com o Linux/bind9
. Deixarei para você procurar os detalhes da sintaxe de configuração em sua página de manual e manual de referência e mostrar apenas as etapas cruciais.Primeiro, instale
bind9
o , de preferência usando o gerenciador de pacotes de sua distribuição Linux. Configure-o para escutar em todas as interfaces de rede, incluindo127.0.0.1
. Em seguida, na configuração de rede do seu host, digite127.0.0.1
como servidor DNS.Em seguida, na
bind
configuração de zona de , coloque trechos comoAo tentar resolver um nome de host, o host agora consultará a si mesmo (ou seja, o
bind9
servidor DNS).bind9
determinará a zona do nome do host, procurará a respectiva configuração da zona (se existir) e encaminhará a consulta para o encaminhador configurado para essa zona.Você pode fazer o mesmo no Windows com o software apropriado, mas isso geralmente não é necessário devido ao
NRPT
.Como nota final, é claro que você pode
bind9
ouvir127.0.0.1
apenas (em vez de todas as interfaces de rede), o que garantiria que ele não pudesse ser acessado por outros hosts. Isso pode ou não ser desejável em sua situação.