January 23

Правильная работа с SMB1/2/3 или как исправить ошибки 0x80004005 и 0x80070035 при подключении к сетевой папке!

С приходом Windows 10 добавилось работы связанной с сетевыми протоколами т.к. умельцы из Microsoft отключили небезопасный протокол SMB1 из-за чего у владельцев старых сетевых МФУ сломалось сканирование в общие папки.

В данной статье мы рассмотрим как правильно включать и отключать SMB1/2/3, т.к. в интернете в статьях всё в кучу сервер/клиент и т.п.

Из-за некорректной настройки SMB1/2/3 клиента или сервера при подключении мы можем получать ошибки 0x80004005 или 0x80070035.

Клиентская часть SMB 1/2/3 Client

Начнем мы с того как определить какая версия используется у вас, для этого в PowerShell введем

sc.exe qc lanmanworkstation
Если в выводе мы видим MRxSmb20 то значит сейчас используется SMB2/3
Если в выводе мы видим MRxSmb10 то значит сейчас используется SMB1
Возможно одновременно использование обоих протоколов!

Если вам необходимо включить SMB1 Client то сначала необходимо его установить для этого ниже перечислены команды для проверки и установки, а так же удаления.

Команды для управления из PowerShell:

Обнаружение:

Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

Отключение:

Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

Включение:

Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

После установки потребуется перезагрузка.

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

После установки и перезагрузки(можно и до) необходимо добавить SMB1 Client в автоматическую загрузку службы для этого используем следующие команды:

Если нужен только SMB1:

sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi
sc.exe config mrxsmb10 start=auto

Если нужен только SMB2/3:

sc.exe config lanmanworkstation depend=bowser/mrxsmb20/nsi
sc.exe config mrxsmb20 start=auto

Если нужны оба протокола:

sc.exe config lanmanworkstation depend=bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb10 start=auto
sc.exe config mrxsmb20 start=auto

На этом настройка SMB клиентской части заканчивается, что хотелось бы добавить, что иногда ещё необходимо включить небезопасные гостевые входы т.к. ввиду безопасности в последних версия Windows 10/11 они отключены по умолчанию.

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

Для этого используются команды PowerShell:

Получить статус гостевых входов (параметр EnableInsecureGuestLogons):

Get-SmbClientConfiguration

Включение небезопасных гостевых входов:

Set-SmbClientConfiguration -EnableInsecureGuestLogons $True -Force

Выключение небезопасных гостевых входов:

Set-SmbClientConfiguration -EnableInsecureGuestLogons $False -Force

Серверная часть SMB 1/2/3 Server

Серверная часть это допустим когда мы открываем общий доступ к папке на нашем компьютере в данном случаем мы сервер.

Тут по сути все тоже самое только везде прописан Server. Сначала потребуется установка.

Команды для управления из PowerShell:

Обнаружение:

Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

Отключение:

Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

Включение:

Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

После установки потребуется перезагрузка.

Так же можно включить из установки дополнительных компонентов Windows если хотим включить только сервер без клиента.

А вот при активации команды используются другие (относительно клиентского приложения):

Команды для управления из PowerShell:

Обнаружение и управление SMB1 Server:

Get-SmbServerConfiguration | Select EnableSMB1Protocol

Отключение:

Set-SmbServerConfiguration -EnableSMB1Protocol $false

Включение:

Set-SmbServerConfiguration -EnableSMB1Protocol $true

Обнаружение и управление SMB2 Server:

Get-SmbServerConfiguration | Select EnableSMB2Protocol

Отключение:

Set-SmbServerConfiguration -EnableSMB2Protocol $false

Включение:

Set-SmbServerConfiguration -EnableSMB2Protocol $true

От себя хотелось бы добавить, что возможно использование обоих протоколов одновременно, но на практике я сталкивался с проблемой, что если один клиент подключался к серверу с использование SMB2, то доступ в это же время для клиентов использующих версию SMB1 (и на оборот) начинал давать ошибки (возможно это связанно с чем-то другим, но я теперь оставляю включенным одновременно только одну версию во избежание ошибок)

Так же если вы настроили всё корректно, но всё так же не можете получить доступ к ПК или Общей папке, возможно вам необходимо включить Небезопасные гостевые входы. О том как это сделать описано в статье:

Включение небезопасных гостевых входов в Windows 10/11 (ошибка 0x80070035 или 0x80004005)
https://teletype.in/@xatta6/0Qh2SIioP_D

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

При написание использовались следующие статьи:

https://learn.microsoft.com/en-us/windows-server/storage/file-server/troubleshoot/detect-enable-and-disable-smbv1-v2-v3?tabs=client

https://learn.microsoft.com/ru-ru/windows-server/storage/file-server/enable-insecure-guest-logons-smb2-and-smb3?tabs=powershell