Os servidores Exchange não acham demais DCs no próprio site.

Autor: Eduardo Tavares de Almeida

Recentemente tivemos alguns casos onde os servidores Exchange não conseguiam utilizar os controladores de domínios dos sites locais.

Quando o log de diagnóstico para o Topology está habilitado em pelo menos o mínimo, o evento 2080 será gravado no log de aplicação e informará os DCs que o Exchange Server está utilizando.

Caso não esteja habilitado, você poderá habilitar executando o comando no Exchange 2007 e 2010:

Set-EventlogLevel “MSExchange ADAccess\Topology” -Level Minimum

Para o Exchange 2007

Set-EventlogLevel “MSExchange ADAccess\Topology” -Level Low

O evento 2080 traz informações de diversos testes como descrito no KB316300. O conteúdo do evento esperado seria algo parecido com esse abaixo que mostra nesse caso, 3 DCs respondendo como DC e Global Catalog:

Tipo de Evento: Informações

Origem do Evento: MSExchangeDSAccess

Categoria do Evento: Topology

ID do evento: 2080

Descrição:

Process MAD.EXE (PID=1808). DSAccess has discovered the following servers with the following characteristics:

(Server name | Roles | Reachability | Synchronized | GC capable | PDC | SACL right | Critical Data | Netlogon | OS Version)

In-site:

domaincontroller1.company.com CDG 7 7 1 0 0 1 7 1

domaincontroller2.company.com CDG 7 7 1 0 1 1 7 1

Out-of-site:

domaincontroller3.company.com CDG 7 7 1 0 1 1 7 1

Porém nos chamados do suporte, vimos o teste de controlador de domínio com duas formas diferentes.

O primeiro caso aparecia assim:

In-site:

domaincontroller1.company.com CDG 7 7 1 0 0 1 7 1

domaincontroller2.company.com --G 7 7 1 0 1 1 7 1

Out-of-site:

Domaincontroller3.company.com --G 7 7 1 0 1 1 7 1

O segundo cenário só aparecia um servidor:

In-site:

domaincontroller1.company.com CDG 7 7 1 0 0 1 7 1

Out-of-site:

No primeiro caso vemos que ele consegue utilizar o domaincontroller1, mas não o domaincontroller2 ou domaincontroller3 como DC, apesar de passar em quase todos os testes.

No segundo caso, ele não chegava nem a achar os demais DCs, só utilizando o domaincontroller1.

Em ambos os casos, se o DC domaincontroller1 parasse, os serviços do Exchange pararia pois não conseguiria utilizar os demais DCs e GCs.

O comando abaixo deveria mostrar se existe algum DC estático no Exchange e para nossa surpresa não listava nenhum DC.

Get-ExchangeServer ExchangeServername |fl name, StaticDomainControllers, StaticGlobalCatalogs, StaticConfigDomainController

Verificamos as condições dos DCs e estavam com Sysvol compartilhado e replicando normalmente. A replicação vimos com o comando repadmin /showreps.

Utilizando a ferramenta LDP.exe que vem junto com o Support Tools, abrimos uma conexão com do servidor Exchange para o DC e vimos que ele conectava com sucesso e isSynchonzed e isGlobalCatalogReady estavam corretas.

Para tentar, abra o ldp.exe vá em connections e digite o nome do servidor. Os testes podem ser feitos conectando na porta 389 para DC e 3268 para a função de GC. No canto direito procure os dois atributos isSynchonzed e isGlobalCatalogReady que deve estar em TRUE

Usamos a ferramenta nltest para trazer a lista dos DCs no mesmo site e os dois servidores apareciam corretamente.

nltest /dsgetdc: /site:<local site name>

Verificando o artigo KB250570, existe uma forma de configurar DCs manualmente na chave de registro abaixo e em ambos os casos eles estavam configurado o que explica porque não estávamos usando e nem achando os demais.

------------------

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchange ADAccess\Profiles\Default\UserDC1]

"HostName"="domaincontroller1.company.com"

"IsGC"=dword:00000001

------------------

image

Exportamos a chave para backup e apagamos a “UserDC1”. Aguardamos alguns minutos e os servidores passaram a utilizar todos os DCs locais com sucesso.

Mas fiquei curioso porque o comando Get-ExchangeServer não retornava nenhum DC estático. Como vimos acima, essa configuração fica no registro do servidor não no AD. Dessa forma teríamos que consultar o Active Directory Topology para trazer essas informações, mas o time de produto achou que iria consumir muito desempenho e adicionaram o parâmetro -status. Então, se quisermos consultar os DCs e GCs locais, podemos executar o comando:

Get-ExchangeServer ExchangeServername |fl name, StaticDomainControllers, StaticGlobalCatalogs, StaticConfigDomainController -Status

Mais referências em:

ID do Evento 2080 de MSExchangeDSAccess

No suitable domain controllers in the local site

Directory service server detection and DSAccess usage

Get-ExchangeServer | FL won’t return Static Domain Controllers