Master Browser на Windows 10 или снова о пресловутом NetBIOS

b331203413e14cb9075256bbcc53fce4

Хотя технология NetBIOS устаревшая, глючная и подвержена атакам хакеров, Microsoft все равно продолжает ее поддерживать несмотря на то, что много раз заявляла об окончании поддержки.

Хочу рассказать свою историю о том, как Microsoft в очередной раз подкинула проблем на ровном месте.

Я был приглашен в одну организацию «NONAME» для решения проблемы с сетевым окружением. Проблема в организации возникла после приобретения нового персонального компьютера с установленной Windows 10 (часть компьютеров исчезла из сетевого окружения). Точнее, были видны все устройства с методом обнаружения WSD (Web Services on Devices), а машины с методом обнаружения NetBIOS канули в Лету.

Компьютерный парк в организации состоит из 12 машин, 2 МФУ и 1 принтера. Персональные компьютеры используются как печатные машинки, выделенных серверов нет, а Active Directory и Linux вообще матерные слова. По большому счету им оно и не надо. Операционная система в основном Windows 7 и пару Windows 8. Обмен документами через общие папки. Рабочая группа у всех одна.

В процессе общения с пользователями было выяснено, что все машины в организации на ночь выключаются и вновь приобретённый компьютер включается в 99,9% случаях первым, т.е. 100% становится Master Browser в сети.

Первым делом у него была остановлена служба «Браузер компьютеров», что привело к проведению новых выборов Master Browser. Им стала машина с операционной системой Windows 8 и через некоторое время все устройства стали снова видны в сетевом окружении. Стало понятно, что виновата новая машина с Windows 10 (хотя это было понятно сразу, но чистота эксперимента превыше всего). Следующим шагом стала настройка всех машин как клиентов (чтоб не участвовали в выборах Master Browser). Машина с Windows 10 была настроена как Master Browser (всегда выигрывает выборы) и одна машина с Windows 7 как Backup Browser. Как это делается описывать не буду — в сети море статей по этому вопросу.  После этого все хосты были перезапущены и первой включена машина с Windows 10, т.е. эта машина стала снова Master Browser. Результат: ничего не изменилось, часть компьютеров не видна (да и не должно было ничего измениться). Но было замечено, что машина с Windows 10 (Master Browser) видит в сетевом окружении все устройства, как WSD, так и NetBIOS. Мистика!!! Сразу же после этого на машину с Windows 10 был установлен сниффер сетевых пакетов (в начале Wireshark, который мало помог, затем старенький Microsoft Network Monitor 3.4 (заточен под Windows)). Сниффер показал, что при запросе от клиентов у Master Browser (машина с Windows 10) списка серверов, Windows 10 возвращает ответ с ошибкой «Сервис не запущен». Были перепроверены все необходимые взаимосвязанные сервисы. Проверены настройки брандмауэра, который был затем отключен. Результат нулевой, все тоже самое — ошибка «Сервис не запущен».

Начались поиски на сайте Microsoft хоть какой-либо информации по данному вопросу и после 3-х дневного поиска наталкиваюсь на статью на сайте под названием «Рефакторинг процесса узла службы», которая при открытии меняет название на «Изменения для группировки узла службы в Windows 10» (Ссылка на оригинал статьи: https://docs.microsoft.com/ru-ru/windows/application-management/svchost-service-refactoring), которая гласит:

«Начиная с Windows 10 Creators Update версии 1703, службы, которые были ранее сгруппированные, будут разделены— каждая из них будет выполняться в собственном процессе SvcHost. Это изменение выполняется автоматически для систем с более чем 3,5 ГБ ОЗУ под управлением номера SKU клиентского рабочего стола. В системах с объемом ОЗУ 3,5 ГБ или меньше мы будем продолжать группировать службы в общий процесс SvcHost.».

Запускаю диспетчер задач и вижу, что почти все службы разгруппированы, т.е. запущены в отдельных процессах svchost.exe, да и памяти на машине с Windows 10 гораздо больше, чем 3,5 Гб (8 Гб).

А вот это уже горячо. Искусственно подрезаю размер памяти до 3484 МБ в настройках Windows 10. Перегружаю устройства и «бинго!» — все стало на свои места: машина с Windows 10 является Master Browser и на всех хостах в сетевом окружении правильно отображается список всех сетевых устройств, вне зависимости от метода обнаружения.

Осталось за малым: нужно вернуть настройки памяти для Windows 10 в исходное состояние и сохранить работоспособность Master Browser. Понятно, что для сохранения работоспособности Master Browser необходимо снова сгруппировать службы, отвечающие за правильную работу Master Browser, т.е. они должны быть в одном адресном пространстве.

Делается это следующим образом (описание в вышеупомянутой статье на сайте Microsoft). Две основные службы необходимые для правильной работы Master Browser это — служба «Браузер компьютеров» и служба «Сервер». Для их группировки в соответствующих ключах службы в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services необходимо создать или изменить значение ключа SvcHostSplitDisable (REG_DWORD) в 1, т.е. проделать следующее:

1.       [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer] "SvcHostSplitDisable"=dword:00000001

2.       [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Browser] "SvcHostSplitDisable"=dword:00000001

После проделанных манипуляций с реестром нужно выключить все хосты, а затем включить машину с Windows 10 первой и затем все остальные. Теперь в диспетчере задач можно увидеть, что эти две службы снова сгруппированы, т.е. работают в одном адресном пространстве.

Теперь все работает красиво. Весь этот процесс можно сделать в виде скрипта Powershell.

Исходя из выше сказанного, можно сделать следующие выводы:

  1. В Windows 10 32-bit для сборки 1703 и выше данная проблема не существует, т.к. Windows использует меньше 4 Гб при своей работе.

  2. В Windows 10 64-bit для сборки 1703 и выше данная проблема также не существует, если размер оперативной памяти меньше или равно 4Гб, но если вдруг Вы решите добавить оперативной памяти в эту систему, то получите побочный эффект (спасибо Microsoft). После перезагрузки система увидит, что памяти стало больше 4 Гб и автоматически разгруппирует службы и сетевое окружение перестанет правильно работать и догадаться, что это произошло из-за увеличения количества памяти будет очень затруднительно. В случае размера оперативной памяти более 4 Гб проблема существует и ее «лечение» необходимо выполнить вышеописанным способом.

  3. Для сборок Windows 10 ниже 1703 данная проблема не существует вне зависимости от разрядности Windows и размера оперативной памяти для 64-bit версии.

  4. Описанная проблема актуальна и для Windows 11

© Habrahabr.ru