Снова про SCOM Alert "DNS Service Stopped" и остановки службы DNS Client (Dnscache)

SCOM Alert DNS Service StoppedПродолжая тему, ранее затронутую в заметке Windows Server 2012 - The DNS service on server has stopped running, отметим, что описанная проблема с периодическими самопроизвольными остановками и повторными запусками службы "DNS Client" (Dnscache) актуальна и для Windows Server 2012 R2. И описанное в предыдущей заметке решение с включением в брандмауэре Windows Firewall разрешающего правила сетевого обнаружения "Network Discovery (LLMNR-UDP-In)" подтверждается статьёй Local IP address cannot be registered on DNS server after DNS Client service is restarted in Windows. Однако, если мы по каким-то причинам не желаем включать данное правило брандмауэра, можно воспользоваться ещё парой вариантов решения проблемы, которые мы обозначим в данной заметке.

Первый вариант, который представляется наиболее "мягким", предполагает увеличение таймаута простоя службы Dnscache до максимально возможной величины. Чтобы выполнить такое увеличение, необходимо на системе, где наблюдаются периодические остановки службы, добавить в системный реестр Windows соответствующий параметр, например, с помощью готового reg-файла:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\DnsCache]
"IdleTimeOut"=dword:ffffffff

Конечный ключ реестра DnsCache может отсутствовать в системе, поэтому его нужно будет создать. Значение параметра IdleTimeOut, заданное в HEX, как "ffffffff", определяет величину таймаута в 4294967295 секунд или 136,19 лет.

Registry settings for DNS Client DnsCache service - IdleTimeOut

Для вступления изменений в силу необходимо выполнить перезапуск службы "DNS Client" (Dnscache).

В случае массовости проблемы с периодическими остановками службы Dnscache на серверах, простым и удобным вариантом решения будет раздача данного параметра реестра через механизмы групповых политик Group Policy Preferences.

Второй вариант отталкивается от информации о том, что по некоторым свидетельствам добавление параметра IdleTimeOut в свойствах службы Dnscache может не давать делаемого результата. В таком случае можно попробовать более кардинальное решение, предполагающее изменение режима работы службы Dnscache таким образом, чтобы исключить из её свойств использование триггера запуска (условия, определяющего возможность автоматического запуска службы). В оснастке управления службами Windows, подобные службы помечаются как Triggered Start.

DNS Client DnsCache service Triggered Start

С помощью утилиты sc можно выяснить то, какие именно триггеры используется интересующей нас службой:

sc qtriggerinfo dnscache

DNS Client DnsCache service Trigger Info

Как видим, у службы Dnscache на запуск имеется триггер, определяющий действующее правило Windows Firewall с открытым портом LLMNR (UDP 5355).

Удалить триггеры можно командой:

sc triggerinfo dnscache delete

После чего повторная проверка триггеров должна показать их отсутствие.

DNS Client DnsCache service Delete Trigger

При этом в консоли управления службами Windows для службы также исчезнет соответствующий признак запуска по триггеру.

image

В случае, если потребуется вернуть триггер запуска службы обратно в исходное состояние, можем выполнить команду добавления триггера следующим образом:

sc triggerinfo dnscache start/portopen/5355;UDP

DNS Client DnsCache service add Triggered Start

Разумеется, первый, и уж тем более, второй варианты не могут считаться "официально поддерживаемым решением", поэтому их использование выходит за рамки бытия граждан, живущих по методичкам Microsoft.

Добавить комментарий