Назад | Перейти на главную страницу

Как я могу искать записи интегрированного DNS домена

Пример:

  1. У меня есть сервер с именем server1.domain.local
  2. У меня много записей CNAME в различных зонах прямого просмотра, указывающих на server1.domain.local
  3. Я хочу списать server1 и иметь новый сервер server2, который заменит его.

Мне нужно изменить все мои CNAME, указывающие на server1.domain.local, на server2.domain.local.

Я знаю, что могу создать server1.domain.local как другой CNAME, но я бы предпочел просто найти все записи и изменить их по отдельности.

Как я могу найти все ссылки на server.domain.local во всех зонах прямого просмотра?

В dnscmd утилита из средств поддержки Windows, вероятно, ваш лучший выбор. Вы можете получить список всех зон DNS с помощью команды: dnscmd [servername] /EnumZones. Вы можете перечислить все записи CNAME в каждой зоне с помощью команды: dnscmd [servername] /EnumRecords [zone name] . /TYPE CNAME.

Теоретически вы можете связать эти два вместе в скрипте, обработать вывод и автоматически внести нужные изменения (также используя dnscmd с /RecordDelete и /RecordAdd команды). Это упражнение я оставлю вам (пока).

Изменить: Хорошо - я не смог устоять. Вот этот сценарий. Это будет только echo команды, которые действительно вносят изменения. Если он делает то, что вы хотите, вы можете потянуть echo командует и пусть рвется.

@echo off

set SERVER_TO_REPLACE=server1.domain.com
set REPLACEMENT_VALUE=server2.domain.com

rem Quick and dirty list of Primary zones that aren't Reverse zones
for /F "usebackq" %%i in (`dnscmd %1 /EnumZones ^| find " Primary" ^| find /v " Rev"`) do call :process_zone %1 %%i
goto end

:process_zone
rem Quick and dirty enumeration of all CNAME records in a zone
for /F "usebackq tokens=1,3,4" %%i in (`dnscmd %1 /EnumRecords %2 . /TYPE CNAME ^| find " CNAME"`) do call :process_RR %1 %2 %%i %%j %%k
goto end

:process_RR
rem Check a record and alter it if necessary
if /I "%5" EQU "%SERVER_TO_REPLACE%" (
  echo dnscmd %1 /RecordDelete %2 %3 %4 %5 /f
  echo dnscmd %1 /RecordAdd %2 %3 %4 %REPLACEMENT_VALUE%
)

:end

Это интегрированные зоны AD? Если нет, вы можете вручную отредактировать файлы зон с помощью блокнота (найти и заменить), а затем перезагрузить зоны.

РЕДАКТИРОВАТЬ

Виноват. Я не увидел в вашем заголовке, что это интегрированные зоны AD. Вы по-прежнему можете использовать метод, который я опубликовал, изменив зоны на зоны, не интегрированные в AD, отредактировав файлы зон, которые будут созданы, а затем изменив их обратно на зоны, интегрированные в AD. Это немного похоже на взлом, так что это может быть не тот метод, который вы бы предпочли использовать.

Один из способов - запустить nslookup с одного из ваших DNS-серверов или системы, которой разрешено выполнять передачу зоны. С участием nslookup сделать ls > file который запросит копию базы данных зоны и сохранит ее в текстовый файл. Затем воспользуйтесь функцией поиска в вашем любимом текстовом редакторе, чтобы найти то, что нужно исправить.