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

Как поместить зоны DNS в Windows Server 2012R2 в систему управления версиями git

В настоящее время мы используем Windows Server 2012 R2 в качестве нашего DNS-сервера. Я хочу поставить все файлы зоны под контроль версий. я нашел этот вопрос, который показывает, как экспортировать зоны через PowerShell. Но, похоже, он не экспортирует его таким образом, чтобы я мог повторно импортировать его позже.

Я также читал о команде DnsCmd, но она устарела.

Итак: Как мне экспортировать зоны, хранящиеся в Active Directory, в текстовые файлы, чтобы я мог поместить их в git / контроль версий и (важный), что позже я могу повторно импортировать старую версию при необходимости?

Одна из проблем, с которыми вы здесь столкнетесь, заключается в том, что зона Active Directory - это гораздо больше, чем просто обычный файл зоны, как вы могли бы ожидать с bind. Я имею в виду да, это является это обычная зона, но она также имеет встроенные разрешения, которые невозможно скопировать в текстовом формате.

(Я предполагаю, что вам нужно что-то в виде обычного текста из-за упоминания git, и я предполагаю, что вы хотите различать зону AD в разное время)

Но если вы твердо настроены на это, способ экспорт ваш файл зоны использует Export-DnsServerZone

Export-DnsServerZone -Name ad.example.com -FileName ad.example.com.zone

Теперь документация говорит вы можете указать путь к файлу для -FileName, но в ходе тестирования я действительно не смог этого сделать. Значит, этот файл окажется в %WinDir%\System32\dns. Вы захотите взять его оттуда, переместить в репозиторий git и зафиксировать.

Однако вернуть файл зоны, когда вы хотите его восстановить, не совсем то же самое. Похоже, для этого нет хорошей оболочки PowerShell (вероятно, потому, что Microsoft не хочет, чтобы вы делали это со встроенной зоной AD):

dnscmd /ZoneAdd ad.example.com /Primary /File ad.example.com.zone /load

Обратите внимание, что при выполнении этого восстановления вы потеряете все разрешения в зоне, но у вас будут необработанные данные, и вы сможете сравнить их в git.

Вы используете интегрированную зону Active Directory? это не изящно, но вы можете добавить вторичный DNS-сервер для своей зоны, и тогда у вас будет доступ к текстовому файлу ZONE.