Имеется дерево доменов Active Directory с поддоменами. Необходимо извлечь вложенную зону subdomain1.subdomain2.example.com из домена example.com и создать отдельный DNS домен - subdomain1.subdomain2.example.com
Создаем файл extract-dns-zone.cmd:
set maindomain=example.com
set subdomain=subdomain1.subdomain2
set dcsrv=dc.example.com
del \\%dcsrv%\c$\WINDOWS\system32\dns\%maindomain%.txt
dnscmd %dcsrv% /zoneexport %maindomain% %maindomain%.txt
copy \\%dcsrv%\c$\WINDOWS\system32\dns\template.dns \\%dcsrv%\c$\WINDOWS\system32\dns\%subdomain%.%maindomain%.dns
findstr /i "%subdomain%" \\%dcsrv%\c$\WINDOWS\system32\dns\%maindomain%.txt >> \\%dcsrv%\c$\WINDOWS\system32\dns\%subdomain%.%maindomain%.dns
cscript replace.vbs \\%dcsrv%\c$\WINDOWS\system32\dns\%subdomain%.%maindomain%.dns ".%subdomain% " " "
cscript replace.vbs \\%dcsrv%\c$\WINDOWS\system32\dns\%subdomain%.%maindomain%.dns "%subdomain% " "@ "
dnscmd %dcsrv% /zoneadd %subdomain%.%maindomain% /primary /file %subdomain%.%maindomain%.dns /load
rem psexec.exe \\%dcsrv% dcdiag /test:registerindns /dnsdomain:%subdomain%.%maindomain%.dns
Поскольку в Windows нет штатной команды для замены текста в файле, создадим vbs скрипт replace.vbs:
Const ForReading = 1
Const ForWriting = 2
strFileName = Wscript.Arguments(0)
strOldText = Wscript.Arguments(1)
strNewText = Wscript.Arguments(2)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strFileName, ForReading)
strText = objFile.ReadAll
objFile.Close
strNewText = Replace(strText, strOldText, strNewText)
Set objFile = objFSO.OpenTextFile(strFileName, ForWriting)
objFile.WriteLine strNewText
objFile.Close
Файл extract-dns-zone.cmd импортирует всю зону example.com в файл, копирует шаблон пустой зоны subdomain2.subdomain2.example.com в новый файл и добавляет в него только строки, относящиеся к извлекаемому домену, затем на основе этого файла создает новую зону DNS. После создания зоны необходимо сдклать её интегрированной в AD и включить безопасный обновления. Старую подзону следует удалить и вместо неё создать делегированную зону.
Файл \\dc.example.com\c$\WINDOWS\system32\dns\template.dns:
;
@ IN SOA dc.example.com. hostmaster.example.com. (
2010060200 ; serial number
900 ; refresh
600 ; retry
86400 ; expire
3600 ) ; default TTL
;
; Zone NS records
;
@ NS dc.example.com.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment