Протокол SMB (Message Blocks Protocol) используется в Windows-системах по умолчанию для общего доступа к папкам и файлам. SMB 1.0 был разработан для самых первых сетевых операционных систем Windows, таких как Microsoft LAN Manager и Windows for Workgroups, однако и в современных ОС Windows Server 2008, Windows 7 он продолжает использоваться в той или иной мере в своем изначальном формате.
SMB 2.0 впервые стал использоваться в ОС Windows Vista и Windows Server 2008. Его назначение – применение в сфере сетевых файловых серверов нового поколения. В целях обратной совместимости Windows Server 2008 и Windows Vista поддерживают как SMB 1.0 так и SMB 2.0..
В SMB 2.0 появились следующие изменения:
- Возможность отправки нескольких команд SMB в одном пакете, что снижает количество пакетов, передаваемых между клиентом и сервером
- Увеличены размеры буфера
- Повышенная масштабируемость, в том числе за счет увеличения числа одновременно открытых дескрипторов файлов на сервере и количества общих ресурсов, которые сервер может предоставлять.
- Поддержка символических ссылок
Тестирование, заключающееся в копировании больших файлов данных между Windows Vista и Windows Server 2008, а затем между Vista и Windows 2003, показало, что при использовании протокола SMB 2.0 копирование файлов выполняется почти в 2 раза быстрее, чем в старых операционных системах на SMB 1.0.
По идее, использование протокола SMB 2.0 одновременно на клиенте и на сервере дает нам существенное увеличение скорости передачи файлов по сети, однако это достижимо не во всех случаях. Причина в том, что версия SMB, которая будет использоваться для общего доступа к файлам, определяется в ходе инициации сессии SMB. Если и клиент и сервер поддерживают SMB 2.0, тогда эта версия и будет выбрана во время первоначального переговора. Если они оба не поддерживают его, в этом случае с целям обратной совместимости будет использоваться протокол SMB 1.0.
При использовании терминов «клиент» и «сервер», в случае общего доступа файлам и принтерам, мы понимаем, что слово клиент не обязательно пользовательская ОС (Vista,7), а слово сервер не обязательно серверная ОС (Windows Server 2008). В некоторых случаях ОС с Vista будет может подключаться к ПК с Windows 7, который в данном случае будет выступать в качестве сервера.
Что следует запомнить: если обмен происходит между новыми операционными системами Microsoft(Windows 7,Vista,2008,2008 R2), тогда по умолчанию будет использоваться протокол SMB 2.0. Если в качестве клиента или сервера будет использоваться ОС прошлого поколения (Windows XP,2003,2000), тогда всегда будет задействован SMB 1.0В некоторых случаях для устранения неполадок в сетях или диагностики, может возникнуть необходимость отключить SMB 2.0. Итак, чтобы отключить поддержку SMB 2.0 на клиентской ОС, вы можете воспользоваться следующими командами:
sc config lanmanworkstation depend= bowser/mrxsmb10/nsi
sc config mrxsmb20 start= disabled
Обратите внимание на дополнительный пробел после знака «=».
Чтобы включить SMB 2.0 на клиентской ОС Windows 7, Vista, Windows Server 2008, выполните следующие команды:
sc config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc config mrxsmb20 start= auto
Опять обратите внимание на дополнительный пробел после знака «=».
Для того чтобы отключить SMB 2.0 на стороне сервера, выполните следующие действия:
- Запустите редактор реестра «regedit» на Windows Server 2008/R2.
- Перейдите к следующему разделу реестра.
HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters
- Создайте новый параметр типа REG_DWORD с именем » Smb2″ (без кавычек)
Value name: Smb2
Value type: REG_DWORD
0 = отключено
1 = включено
- Чтобы отключить SMB 2.0, сделайте этот параметр равным 0, чтобы активировать SMB 2.0 используйте значение 1.
- После чего сервер нужно перезагрузить.
Хотелось бы уточнить для включения/отключения SMB 2.0 через командную строку нужно подряд вводить две команды или одну из?
Это две команды, вводить последовательно, не забудьте про права администратора
не подскажите что делать если под провами локального администартора, и доменного тоже говорит что мол отказано в доступе при вводе командной строки, какие еще прова должны быть?
Запустите командную строку с правами администратора Runas administrator. Это так называемая elevant command promt
Попробовал отключить Smb2 на Windows Server 2008 R2 SP1, в итоге ни с одной рабочей станции не смог зайти в сетевые папки на сервере, сетевые диски на всех компах отключились. При этом, подключение к SQL на сервере работало стабильно.
Почему же отключились сетевые папки? По айпи на сервер тоже не смог зайти.
Как востановили подключение к серверу? у меня таже проблема
Какая версия ОС на стороне сервера и на клиентах (минимальная) ? Отключали по этой инструкции?
SQL для подключения использует не использует протокол SMB. Подключение идет через NamedPipes или по TCP/IP.
Посмотрите в первую очередь таблицу совместимости версий протокола SMB между клиентом и сервером https://winitpro.ru/index.php/2014/12/01/podderzhka-smb-1-0-v-windows-server-2012-r2/
ЗЫ. А какой смысл отключать отключать SMB 2.0 в продуктивной среде?
Да excel 2007 ужасно долго открывает по сети документы лежащие на сервере, не знаю, что уже пробовать. Где то видел про smb2…
Посмотрите эту тему на форуме, там что-то похожее было:
http://forum.winitpro.ru/windows-server-2008/dolgoe-otkrytie-failov-ms-office-po-seti/
Правда не знаю решилась проблема или нет
Проблема была именно в smb2, отключил на сервере. Только после этого клиенты перестали цепляться по IP к серверу. Но цеплялись по имени сервера, после подключения по имени снова пробовал по IP и тогда уже начали подключаться. Клиентские машины все win 7 x64.
П.с. Пишу с телефона, захода с компа не вижу новых комментариев только первые 6ть…
Христом богом прошу Выйти в личную почту дл оказания помощи с техникой !
Смотрю я на эту таблицу и не понимаю…
У меня сервер Win2008 R2 клиентские машины Win7, судя по таблице подключение происходит по SMB 2.1, что же будет если я на сервере отключу 2ю версию протокола?
Спрашиваю потому,что при отключении не могу зайти на сервер ни по IP ни по имени никак…
Снял я однажды галочку в свойствах подключения — «Служба доступа к файлам и принтерам сетей Microsoft». Не мог ни одну расшареную папку открыть, причём на самом же компе, в котором расшарил (через \\\). Через \\localhost — открывает всё, а вот по \\192.168.1.2 ругается: не принимает подключение; не настроен на приём подключений через порт «Общий доступ к файлам и принтерам (SMB)«. Точно такая же ошибка показывается и на другом компе (по локалке через роутер) с адресом \\\
Подумал, что помимо службы «Сервер» надо ещё какую-то врубить (какие-то лишние ешё повключал), вернул даже эту галочку, попытался войти «локально» через \\192.168.1.2 — папки открывать стало, но через другой комп уже «Неисправимая ошибка».
Оказалось, я политиками запретил всё что можно (в т.ч. в отказе доступа к компу ВСЕм) через secpol.msc, ну и в т.ч. это:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
«RestrictAnonymous»=dword:00000002
«restrictanonymoussam»=dword:00000001
«everyoneincludesanonymous»=dword:00000001
А вот как быть с «разрешениями/запретами (привелегиями)»? Как настроить параметры «Доступ к компьютеру из сети» и «Отказать в доступе к этому компьютеру из сети» для конкретного пользователя, и реально ли их изменить на Home редакциях винды? Многое из secpol.msc (да и всю гп) можно настроить через редактор реестра, но данный случай особый, т.к. придётся вмешаться в бинарные данные (REG_NONE) ключа SECURITY\Policy\Accounts ! Где ж найти расшифровку каждого бита значения параметра по-умолчанию ключей Privilgs?
Пока есть решение проще — «Polsedit». Он вроде бы нормально изменяет доступ для каждого пользователя и группы (прямо как Назначение прав), но обычные параметры безопасности, в т.ч. UAC она настраивать не умеет, надо уже лезть в файл Windows10andWindowsServer2016PolicySettings.xls, и открывать лист Security. Правда, у многих параметрах там подписано, что они не ключи реестра и нет указаний, как их изменить (типа через net user …).
Убрал все зависимости к SstpSvc (так же отключив её совсем), подключается нормально. Телефонию (TapiSrv), пришлось возвращать обратно к «диспетчеру подключений удалённого доступа (RasMan)», от неё и PPPoE тоже зависит 🙁
Конечно, это «не все» дыры, через которые можно «проникнуть» в комп (чем больше служб и драйверов связано с «безопасностью», тем больше брешей)… Кто ж знал, что SMB 1.0 тоже дырявая, если можно было получить доступ к компу через IPC$ минуя пользователей. Поздновато я узнал о скрипте для NMap’а «smb-vuln-ms17-010.nse», который проверяет эту «уязвимость». Если б не пропатчил винду, то имело бы смысл поснимать все галочки, отрубить службу сервра (или оставить, с выключенным AutoShareWks/Server), и проверить на «EthernalBlue». Но, ещё оказалось, что этот скрипт отказывается проверять обнаруживать другой комп, на котором установлено Home издание висты/7-ки… Мне стало интересно, можно ли отрубить/отвязать RPC от сети… Попытался Polsedit’ом поставить запрет на доступ к компу из сети для NT Service\RpcSs — выдало ошибку, (что-то там «повреждёно»), и отказалось добавлять этого «нехитрого пользователя» в список…