Como posso usar o DNS para retornar um endereço IP geograficamente local?

6

Temos vários escritórios em todo o mundo, mas nossos datacenters estão localizados principalmente em dois locais centrais (América do Norte e Europa). Há uma latência relativamente alta entre vários escritórios, por isso, tentamos hospedar serviços no local mais próximo do usuário (por exemplo, funcionários canadenses usam serviços do Exchange nos EUA, não na Europa).

Essa configuração funciona bem na maior parte. Ao usar serviços como o Active Directory, Exchange ou DFS, os clientes confiam nas informações do site existentes no AD para refinar o local mais próximo.

Agora, temos uma solicitação para ter um nome DNS comum para acessar determinados serviços da Web hospedados na NA e na Europa. Anteriormente, usamos nomes DNS separados (na-service.domain.local ou eu-service.domain.local), mas isso se torna complicado para nossos usuários finais.

Todo o nosso DNS interno está hospedado atualmente em servidores Windows 2003 e 2008 com o DNS da Microsoft. Existe alguma maneira de configurar serviços DNS da Microsoft para responder apenas a solicitações com um endereço IP "local"? Eu sei que configurar múltiplos registros A resultará em uma resposta no estilo round robin, o que não é o ideal. Também poderíamos usar zonas primárias em cada local e inserir apenas o endereço IP local, mas temos centenas de outras entradas de DNS que precisariam ser replicadas manualmente para cada servidor.

Se isso não puder ser feito com o MS DNS, existem outras alternativas de baixo custo? Eu sei que a F5 Networks tem produtos que podem lidar com isso, mas isso é muito caro.

    
por Doug Luxem 01.06.2009 / 20:25

7 respostas

3

Você pode ter alguma sorte com a funcionalidade "Priorização de sub-rede" no servidor DNS da Microsoft. Se isso ajudará ou não, dependerá de como suas sub-redes serão tratadas e de como seus servidores geograficamente "locais" serão tratados. Esse recurso é habilitado por padrão no Windows Server 2003 e 2008.

Eu recomendaria a leitura desse recurso. Dê uma olhada no link sob o cabeçalho "Priorização de sub-rede".

A funcionalidade "view" no BIND provavelmente faria o que você quer, mas você está falando sobre a implementação de uma infraestrutura DNS paralela e muita configuração.

Se você tem o controle do aplicativo baseado na web, você pode fazer algo off-the-wall, como inserir um pouco de Javascript para "detectar" a localização do usuário e redirecioná-lo no lado do cliente. É um pouco complicado, mas pode fazer o que você precisa.

    
por 01.06.2009 / 20:40
3

Eu tive essa pergunta algumas vezes aqui no trabalho, embora nunca tenha sido implementada, então isso é pura teoria da minha parte.

A melhor solução (hack?) que eu poderia criar seria ter um sub-domínio dns comum que não é replicado. Em seguida, basta colocar os servidores locais nessa configuração. Então você teria algo assim:

Servidores DNS NA | service.domain.local
web01.service.domain.local - > 10.10.10.200

Servidores DNS da UE
service.domain.local
web01.service.domain.local - > 10.200.200.200

Assim, os clientes que se conectam ao web01.service.domain.local selecionariam o IP local do serviço em seus servidores DNS padrão. Você pode tê-los replicar dentro da UE e NA, mas não tem a zona replicada entre a UE e NA.

    
por 01.06.2009 / 20:42
2

Como afirma uma resposta anterior, os modos de exibição do BIND parecem com o que você deseja. Ele permite que um servidor de nomes apresente diferentes configurações do mesmo servidor de nomes para grupos de clientes que você define.

Os grupos podem ser definidos através de endereços IP ou prefixos individuais (como 10.10.1.192/26). Espero que os seus anfitriões da UE e dos EUA possam ser distinguidos desta forma.

Bom benefício secundário: seus dois servidores podem ser configurados (quase) de forma idêntica, com base no BIND, e, portanto, podem agir como um failover do outro.

Uma boa maneira de pensar sobre o Views é que ele é uma versão de virtualização do servidor DNS. Mais ou menos.

O BIND pode ser obtido gratuitamente em www.isc.org.

    
por 02.06.2009 / 07:36
1

A solução tem que ser feita através do DNS? Se não, isso soa como um candidato perfeito para IP Anycast . Veja esta questão para mais detalhes, mas em poucas palavras, é uma arquitetura de rede que permite anunciar o mesmo endereço IP de vários locais, com roteamento de clientes para a instância 'mais próxima' (do ponto de vista do custo da rede) do IP. Dessa forma, você pode simplesmente ter um VIP global (IP virtual) para apontar seus registros DNS.

    
por 01.06.2009 / 21:15
0

Além do BIND Views, a nova versão do Windows Server (que está atualmente em uma prévia técnica) também tem um recurso chamado Políticas de DNS , que parece muito promissor para alcançar o que você está procurando.

    
por 11.08.2015 / 07:33
0

Eu tive o mesmo problema. Se domain é domain.local e eu queria webmail.domain.local para responder de forma diferente de acordo com sites, criei uma nova zone webmail.domain.local (não integrada ao AD) e adicionei uma entrada curinga ao endereço IP local do servidor de webmail.

Este domínio não é replicado em nenhum lugar, mas eu usei configurações mestre / escravo em cada site para redundância.

Embora isso se torne uma bagunça para gerenciar, se você precisar manter com frequência em muitos sites.

    
por 07.10.2016 / 20:51
0

Novos recursos no DNS do Windows Server 2016 permitem que você defina políticas para lidar com esse tipo de cenário. Mais informações podem ser encontradas aqui .

    
por 05.01.2017 / 08:04