Como fazer com que o Windows Server DNS use o arquivo hosts para resolver nomes de host específicos

17

[NOTA: A solução desta questão é perfeita, por algo que se afasta do que o título indica.]

Estou enfrentando um pequeno problema com o serviço DNS do Windows Server 2003. Na minha corporação, estou executando o servidor DNS da Microsoft (172.16.0.12) para fazer a resolução de nomes na intranet da minha empresa (o nome do domínio termina em dev.nls. Resolvendo para o IP 172.16. . ), e também é configurado como um encaminhador de DNS para encaminhar outros nomes de domínio (por exemplo, * .google.com, * .sf.net) para servidores DNS reais da Internet. Este servidor DNS interno nunca tende a atender usuários do mundo externo.

E, estamos executando um servidor de e-mail (servindo mensagens recebidas para um domínio da Internet real @ nlscan.com) dentro do firewall da empresa que pode ser acessado de qualquer maneira:

  1. conectando-se a 172.16.0.10 na intranet.
  2. conectando-se ao email.nlscan.com (resolvido para 202.101.116.9) da Internet.

Note que 172.16.0.10 e 202.101.116.9 não são a mesma máquina física. O 202 é uma máquina de firewall que faz o encaminhamento de porta das portas 25 e 110 para o endereço de intranet 172.16.0.10.

Agora, minha pergunta: Se os usuários dentro da LAN corporativa quiserem resolver o mail.nlscan.com, ele será resolvido para 202.101.116.9. Isso é correto e viável, MAS NÃO É BOM, porque o tráfego de e-mail vai para a máquina de firewall, em seguida, retorna para 172.16.0.10. Espero que nosso servidor DNS interno possa interceptar o nome mail.nlscan.com e resolvê-lo para 172.16.0.10. Então, espero poder escrever uma entrada no arquivo "hosts" em 172.16.0.12 para fazer isso. Mas, como o servidor DNS da Microsoft pode reconhecer esse arquivo "hosts"?

Talvez você sugira, por que o usuário da intranet não usa 172.16.0.10 para acessar meu servidor de e-mail? Eu tenho que dizer que é inconveniente, suponha que um usuário (funcionário) trabalhe em seu laptop, durante o dia no escritório e à noite em casa. Quando ele está em casa, ele não pode usar 172.16.0.10.

Criar uma zona para o nlscan.com em nosso servidor DNS interno não é viável, porque o servidor de nomes do domínio nlscan.com está em nosso ISP e é responsável por resolver outros nomes de host e subdomínios em nlscan.com.

Obrigado antecipadamente.

[EDITAR]

Como WesleyDavid sugeriu, eu sigo a solução de simplesmente criar uma zona chamada mailserver.nlscan.com e colocar um registro A sem nome naquela zona . O tempo prova que isso funciona bem.

    
por Jimm Chen 21.04.2010 / 04:14

5 respostas

12

A última parte deste post está errada. Fiquei com a impressão, com base em algumas coisas que eu tinha lido na web (se é na web, deve ser verdade!) Que parte das tarefas do Windows DNS Server Service para criar seu cache foi também carregar seu arquivo host em cache juntamente com os dados da zona local. Eu procurei em volta e não consegui encontrar provas concretas disso. Eu testei a teoria em minha própria máquina Server 2008 R2 e descobri que o arquivo hosts não foi usado para construir o Cache do Servidor DNS.

No entanto, acredito que tenho uma solução um pouco mais elegante que o Massimo. Em vez de criar uma zona autoritativa para toda a zona nlscan.com, basta criar uma zona denominada mailserver.nlscan.com e colocar um registro A sem nome nessa zona. O registro A sem nome terá o mesmo nome da zona e você poderá fornecer o endereço IP desejado. Todos os outros domínios sob o nlscan.com, assim como o próprio nlscan.com, serão resolvidos pelo DNS público.

Acabei de testar isso no meu próprio servidor DNS do Servidor 2008 R2 e consegui fazer o site do meu amigo (nessus.nl) resolver através de servidores DNS públicos, mas o subdomínio específico (blog.nessus.nl) foi resolvido para um Apple. com endereço IP. Experimente e veja se funciona para você.

Início da postagem mais antiga e errada:

Se meu entendimento estiver correto (EDITAR: e não é), quando o cache do DNS for criado na máquina do Server 2003, ele extrairá entradas do arquivo de hosts, bem como seus dados de zona. Colocar 172.16.0.10 mailserver.nlscan.com no arquivo hosts da máquina do Server 2003 deve resolver o problema. Reinicie seus serviços DNS depois de alterar seu arquivo de hosts.

Use ipconfig / displaydns em qualquer máquina Windows (especificamente, sua máquina DNS Server 2003) para ver as entradas do arquivo host. Também tenha em mente que as respostas negativas são armazenadas em cache em seus clientes, portanto, sempre execute ipconfig / flushdns nos clientes com os quais você está experimentando. Caso contrário, você acabará abusando de vários objetos duros enquanto se pergunta por que seus clientes não conseguem resolver um nome que você acabou de digitar em um arquivo de zona / hosts. =)

Você tentou isso e falhou?

    
por 21.04.2010 / 04:40
3

O desejo de ter usuários internos obtendo IPs internos para recursos enquanto usuários externos obtêm IPs externos para esses mesmos recursos é comum. É referido como DNS do cérebro dividido. Você tem um servidor DNS voltado para a Internet e outro servidor DNS interno para usuários locais. Usuários internos usam DHCP em sua rede e um servidor DHCP que você anuncia o servidor DNS interno. Quando os usuários estão fora do escritório, o servidor DHCP os atribuirá a um servidor DNS que só saberá sobre a zona externa.

Você parece querer dividir o DNS do cérebro sem realmente hospedar a zona internamente. Você sugere que hospedar a zona internamente é problemático porque você não deseja que os usuários obtenham o IP interno quando estão trabalhando em casa, mas isso não faz sentido porque, quando estão em casa, estão recebendo o IP de um servidor DHCP diferente isso não vai anunciar seu servidor DNS interno. Ele vai anunciar o servidor DNS de seu ISP, que só saberá sobre sua zona externa e, portanto, apenas fornecerá a eles endereços IP externos.

Por fim, não acho que você tenha sucesso em pedir a um servidor DNS que forneça registros do arquivo hosts no servidor DNS. Um servidor DNS serve registros de seus arquivos de zona. O arquivo de hosts locais nesse servidor DNS propaga entradas no cache de resolução do cliente local, que é aplicável somente a pesquisas nessa máquina. Essas entradas não são servidas pelo servidor DNS, que é um mecanismo diferente.

Leia o DNS do cérebro dividido - é a maneira normal de lidar com essa situação.

    
por 21.04.2010 / 09:32
2

Wes: Não tenho certeza de quem ditou você, mas gostaria de esclarecer o uso do arquivo hosts: O arquivo hosts é usado pelo componente de resolução do cliente DNS, não pelo componente do servidor DNS. Uma entrada no arquivo de hosts em um servidor DNS será usada pelo servidor DNS quando estiver atuando como um cliente DNS. Por exemplo, uma entrada no arquivo hosts do meu servidor DNS W2K8 como este:

1.1.1.1 test.test.com

é carregado no cache do cliente DNS do servidor DNS (não no cache do servidor). Se eu pingar test.test.com do meu servidor DNS, ele retorna 1.1.1.1 conforme o esperado. Se eu, então, executar o nslookup no servidor DNS e pedir a ele para test.test.com, ele retornará o endereço IP público correto registrado para test.test.com, pois o componente do cliente DNS no servidor DNS está solicitando agora o componente do servidor DNS (do jeito que qualquer outro cliente DNS faria). É uma idéia confusa, mas o servidor DNS também é um cliente DNS e, quando o componente do cliente DNS é acionado, ele atua como qualquer outro cliente DNS, observando seu próprio cache de cliente DNS, incluindo qualquer entrada. -carregado do arquivo de hosts. Somente quando o componente de cliente DNS usa o componente do servidor DNS (consultando o (s) servidor (es) DNS configurado (s) nas propriedades TCP \ IP, o cache do servidor DNS será preenchido com as informações corretas.

Qualquer cliente DNS consultando o servidor DNS sempre obterá a resposta "real" e não a entrada de hosts porque o cache do cliente DNS do servidor DNS é usado pelo próprio servidor (como um cliente DNS) e não pelo componente do servidor DNS.

    
por 22.04.2010 / 01:46
1

Até onde eu sei, não há como fazer com que o DNS do Windows use o arquivo hosts para lidar com a resolução de nomes; mas isso não é necessário.

Você pode criar com segurança uma zona em seu servidor DNS interno com o mesmo nome de uma zona pública da Internet; o que acontecerá é que seu servidor manipulará solicitações de nomes nessa zona usando seus próprios dados, em vez de encaminhar essas solicitações para os servidores de nomes com autoridade para essa zona; às vezes isso é chamado de "sombreamento", porque torna a zona pública "real" indisponível para o cliente interno, respondendo com dados "falsos".

O que você deve ter cuidado é, você deve preencher esta zona interna com todos os nomes que você precisa, mesmo usando endereços IP públicos, quando necessário; caso contrário, os clientes internos não conseguirão resolver esses nomes.

Digamos que sua zona pública seja assim:

www.nlscan.com    202.101.116.8
mail.nlscan.com   202.101.116.9

Você deseja que clientes internos resolvam o mail.nlscan.com como 172.16.0.10; tudo bem, então crie uma zona "nlscan.com" no servidor DNS interno e coloque "mail.nlscan.com - > 172.16.0.10" nela.
Mas agora seus clientes internos não podem resolver "www.nlscan.com", porque o servidor acha que é autoritativo para essa zona, por isso não responderá à consulta (porque não sabe sobre esse host), mas também não vai encaminhá-lo para ninguém.
Para resolver isso, você precisa colocar "www.nlscan.com" também dentro de sua zona interna; ele pode apontar para o seu verdadeiro endereço IP público se você quiser que seus clientes o acessem dessa forma, ou você pode usar o mesmo redirecionamento que está usando para "mail.nlscan.com", se "www" também estiver sendo encaminhado pelo seu firewall para algum servidor interno.
O mesmo princípio se aplica a qualquer nome na zona.

Esta configuração não terá impacto em clientes externos ou em qualquer um dos seus usuários que esteja temporariamente fora de sua rede, porque essa zona "sombra" interna nunca ser visível a partir da Internet.

    
por 21.04.2010 / 09:56
1

Nevermind o hostfile, basta adicionar uma nova zona no DNS mail.domain.com e adicionar um host na zona. deixe o nome em branco (ele usará automaticamente o nome da zona) e insira o endereço IP do servidor de correio local; -)

    
por 30.08.2011 / 05:25