Правильная работа с 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 в автоматическую загрузку службы для этого используем следующие команды:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi sc.exe config mrxsmb10 start=auto
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