С проблемой озвученной в заголовке столкнулся в процессе поиска решения проблемы с регистрациями рабочих станций во внутренней DNS-зоне домена. При вводе сервера в домен всё проходило штатно. Через некоторое время сервер переставал пинговаться, а его имя разрешаться в ip-адрес. При просмотре DNS имя сервера не находилось, хотя оно там должно было бы быть. Неприятная ситуация.
Теперь немного теории. Начиная с Windows Server 2003 доступны три варианта репликации DNS-зон с Active Directory:
- “To all DNS servers in the AD forest”. DNS-зона при таком выборе будет реплицироваться на все DNS-серверы леса. Сам объект зоны с записями будет располагаться в разделе ForestDnsZones (полное имя – CN=MicrosoftDNS,DC=ForestDNSZones,DC=domain,DC=com). Репликация зоны будет происходить в рамках всего леса.
- “To all DNS servers in the AD domain”. DNS-зона при таком выборе будет реплицироваться на все DNS-серверы домена. Сам объект зоны с записями будет располагаться в разделе DomainDnsZones (полное имя – CN=MicrosoftDNS,DC=DomainDNSZones,DC=domain,DC=com). Репликация зоны будет происходить в рамках домена.
- “To all domain controllers in the AD domain”. DNS-зона при таком выборе будет реплицироваться на все контроллеры домена в домене. Сам объект зоны с записями будет располагаться в разделе Default Naming Context (полное имя – CN=MicrosoftDNS,CN=System,DC=domain,DC=com). Репликация зоны будет происходить между контроллерами конкретного домена. Этот вариант используется в домене, в котором присутствуют контроллеры домена на базе Windows 2000 Server. Последние не знают о наличии разделов ForestDnsZones/DomainDnsZones, соответственно не могут с ними работать.
Возникает вопрос – а что будет, если некоторая интегрированная с AD DNS-зона будет присутствовать в нескольких разделах приложений? Возможно ли такое вообще? Теоретически возможно:
- У нас имеется домен на базе Windows 2000 Server (которые не знают о наличии разделов ForestDnsZones/DomainDnsZones). При вводе нового контроллера домена на базе Windows Server 2003 мы можем указать для DNS-зоны тип репликации, который не поддерживается старыми контроллерами домена.
- При создании зоны вручную, мы можем выбрать любой из первых двух вариантов репликации. Затем, на другом контроллере домене, не дождавшись пока эта DNS-зона отреплицируется, создать её тоже вручную.
- При вводе нового контроллера домена, автоматически может ставиться роль DNS-сервера. При этом, существующие зоны, находящиеся в разделах ForestDnsZones/DomainDnsZones, будут среплицированы на новый контроллер домена. Ничто не мешает нам, не дождавшись завершения такой репликации, вручную создать эти зоны.
Стоит заметить, что все эти варианты возникают из-за человеческого фактора и они более чем возможны. Таким образом мы можем относительно легко задублировать зоны, что как раз приведёт к эффекту пропадания записей в задублированной зоне. В ADSI Edit выглядеть задублированная зона будет примерно следующим образом:
Записи, начинающиеся с ..InProgress-[GUID], указывают на зоны, репликация которых не смогла завершиться успешно из-за наличия дубликатов с другим номером USN. Записи, содержащие CNF:[GUID], указывают на зоны, содержащие дупликаты в базе AD.
Что с этим делать? Дупликаты необходимо удалить. Проще всего это сделать через ADSI Edit, удалив записи, которые содержат ..InProgress-[GUID] и CNF:[GUID].
Подсмотрено здесь.