Привет, я использую команду dnsmcd на своем сервере Windows 2012 для создания новых зон из файла csv.
Но мне нужно изменить TTL для записи SOA, поэтому я пытаюсь сделать это:
dnscmd /recordadd example.com `@ 300 SOA
но у меня такая ошибка:
Command failed: DNS_ERROR_RECORD_FORMAT 9702 0x25E6
есть способ сделать это?
Если вам интересно, почему вы получаете эту ошибку DNS_ERROR_RECORD_ALREADY_EXISTS при попытке изменить запись SOA (то есть увеличить серийный номер зоны) проверьте, действительно ли серийный номер, на который вы меняете (новый), выше текущего. Это сообщение об ошибке сбивает с толку, поэтому я надеюсь, что оно избавит вас от головной боли, пока вы не поймете, почему.
Я использовал этот скрипт, если он вам пригодился, потому что нажатие кнопки «увеличить» в 200-с чем-то зонах было для меня слишком много.
rem To increase serial on all zones: copy this to a script, as functions cannot be use from CLI
echo on
rem get the intersting zones first that you want to change
echo. > %TEMP%\dnszones.txt
for /f %%z in ('dnscmd /enumzones ^| findstr in-addr.arpa') do echo %%z >> %TEMP%\dnszones.txt
rem take existing serials from all zones
for /f %%z in (%TEMP%\dnszones.txt) do dnscmd /zoneprint %%z | findstr SOA > %TEMP%\dns.%%z.txt
rem read the serials and increase them
for /f %%z in (%TEMP%\dnszones.txt) do for /f "tokens=1-8*" %%a in (%TEMP%\dns.%%z.txt) do call:increase_serial %%z %%e
goto end
:increase_serial
rem arg1=%~1 is the zone name, arg2 is existing serial
@rem example format of the SOA record
@rem 3600 SOA servername.domain.com. hostmaster.domain.com. 13 900 600 86400 3600
@rem as per https://technet.microsoft.com/en-us/library/cc816941(v=ws.10).aspx
@rem var a is minimum-default-ttl - optional
@rem var b is string SOA
@rem var c is PrimSvr - server name with dot
@rem var d is Admin - contact for admin
@rem var e is serial
@rem var f is Refresh - in seconds
@rem var g is Retry - in seconds
@rem var h is Expire - in seconds
@rem var i is MinTTL - in seconds
set /a INCREASED_SERIAL=%~2+1
@echo increase serial from %~2 to %INCREASED_SERIAL% on zone %1
for /f "tokens=1-8*" %%a in (%TEMP%\dns.%~1.txt) do dnscmd /RecordAdd %~1 @ SOA %%c %%d %INCREASED_SERIAL% %%f %%g %%h %%i
goto :eof
:end
Вот правильный формат для изменения записи начала полномочий
dnscmd /recordadd zonename @ SOA primaryDNSservername responsibleemailipaddress serialnumber refreshinterval retryinterval expireinterval defaultTTL