Server Message Block (SMB) — важнейший сетевой протокол совместного доступа к файлам, который позволяет пользователям и приложениям получать доступ к файлам, принтерам и другим общим ресурсам по сети. SMB широко используется в средах Windows и обеспечивает бесперебойное взаимодействие между клиентскими и серверными системами. В этой статье мы рассмотрим, как работает SMB, его компоненты, распространённые шаги устранения неполадок и рекомендации по решению проблем, связанных с SMB.
Содержание
Что такое SMB?
Server Message Block (SMB) — это сетевой протокол, который позволяет пользователям читать, записывать и управлять файлами на удалённых серверах так, как если бы они были локальными. SMB широко используется в сетях Windows для обеспечения общего доступа к файлам, принтерам и последовательным портам. Он также поддерживается системами Linux и macOS, что делает его универсальным протоколом для межплатформенного взаимодействия.
Как работает SMB
- Запрос клиента: Клиент SMB (например, Windows, Linux или macOS) отправляет запрос серверу SMB для доступа к общему ресурсу.
- Ответ сервера: Сервер SMB проверяет запрос на основании проверки подлинности и разрешений.
- Доступ к ресурсу: После предоставления доступа клиент может читать, записывать или изменять файлы так, как если бы они находились на локальном диске.
Ключевая терминология SMB
- Сервер SMB (SRV): Система, на которой размещена общая файловая система.
- Клиент SMB (CLI): Система, получающая доступ к общей файловой системе.
Например, если компьютер с Windows Server 2016 обращается к общей папке SMB \\MyWorkstation\Data на компьютере с Windows 10, сервер выступает в роли клиента SMB, а рабочая станция — сервер SMB.
Версии SMB
1. SMB 1.0 (устаревшая версия)
- Уязвима для атак, таких как WannaCry и EternalBlue.
- Не имеет современных функций безопасности.
2. SMB 2.0 / 2.1
- Улучшенные производительность и безопасность.
- Поддерживает большие размеры буфера для более высокой скорости передачи данных.
3. SMB 3.0+
- Введено шифрование для повышения безопасности.
- Среди функций — SMB Multichannel и SMB Direct для высокоскоростной передачи файлов.
Компоненты SMB
1. Двоичные файлы
- Двоичные файлы клиента SMB: Расположены в
%windir%\system32\Drivers:RDBSS.sysMRXSMB.sysMRXSMB10.sysMRXSMB20.sysMUP.sysSMBdirect.sys
- Двоичные файлы сервера SMB:
%windir%\system32:Srvsvc.dll%windir%\system32\Drivers:SRVNET.sys,SRV.sys,SRV2.sys,SMBdirect.sys
2. Привязки
- Привязка клиента SMB:
Client for Microsoft Networks - Привязка сервера SMB:
File and Printer Sharing for Microsoft Networks

Порты SMB и обмен данными
SMB может работать через разные порты в зависимости от используемого протокола:
| Протокол | Порт | Описание |
|---|---|---|
| NetBIOS over TCP/IP | UDP 137 | Разрешение имён |
| NetBIOS over TCP/IP | UDP 138 | Службы дейтаграмм |
| NetBIOS over TCP/IP | TCP 139 | Сеансовые службы |
| Прямой SMB через TCP | TCP 445 | Стандартный обмен данными SMB |
Современные сети в основном используют TCP 445, а старые системы могут использовать NetBIOS.
Как устранять проблемы SMB
1. Проверьте подключение
- Убедитесь, что клиент может подключиться к серверу через TCP 445:
Test-NetConnection <server_IP_or_hostname> -Port 445
- В случае сбоя проверьте Azure Firewall, группы сетевой безопасности и локальные брандмауэры на предмет блокировки трафика SMB.
2. Проверьте разрешение имён
- Проверьте доступ к серверу по имени узла и IP-адресу:
nslookup <server_hostname>
- Если обращение по имени узла не удаётся, проверьте конфигурацию DNS.
3. Проверьте службы SMB
- Убедитесь, что необходимые службы запущены:
Get-Service -Name LanmanServer, LanmanWorkstation
- Запустите службы, если они остановлены:
Start-Service -Name LanmanServer, LanmanWorkstation

4. Проверьте правила брандмауэра
- Убедитесь, что правила SMB включены:
netsh advfirewall firewall show rule name="File and Printer Sharing (SMB-In)"

5. Проверьте разрешения
- Проверьте разрешения общего доступа и NTFS через свойства папки или командную строку:
net share <sharename>
icacls <folder_path>


6. Проверьте доступ с помощью UNC-пути
- Откройте
Run(Win + R) и введите:
\\<server_IP_or_hostname>\sharename
Расширенное устранение неполадок и сбор данных
1. Проверьте сеансы SMB
- Отобразите активные сеансы SMB:
Get-SmbSession
2. Сбросьте конфигурацию SMB
- Отключите и снова включите SMB 2 и 3:
Set-SmbServerConfiguration -EnableSMB2Protocol $true -Force
3. Сетевые трассировки
- Используйте Wireshark для сбора сетевых пакетов, связанных с SMB:
- Начните захват трафика как на клиенте, так и на сервере SMB.
- Воспроизведите проблему.
- Проанализируйте пакеты на предмет ошибок SMB или тайм-аутов.
4. Соберите журналы событий
- Экспортируйте журналы событий, связанные с SMB, для дальнейшего анализа:
- Журналы клиента SMB.
- Журналы сервера SMB.

Справочная документация:
Расширенное устранение неполадок Server Message Block (SMB) | Microsoft Learn
Известные проблемы SMB | Microsoft Learn
Руководство по устранению неполадок SMB – Windows Server | Microsoft Learn
Обзор протокола Microsoft SMB и протокола CIFS – приложения Win32 | Microsoft Learn
Обнаружение, включение и отключение SMBv1, SMBv2 и SMBv3 в Windows | Microsoft Learn
Обзор совместного доступа к файлам с помощью протокола SMB 3 в Windows Server | Microsoft Learn
Обзор подписывания Server Message Block – Windows Server | Microsoft Learn
Улучшения безопасности SMB | Microsoft Learn
Заключение
SMB — мощный протокол совместного доступа к файлам и ресурсам, однако из-за неправильных настроек, сетевых ограничений или устаревших компонентов могут возникать проблемы. Следуя описанным выше шагам устранения неполадок, вы сможете эффективно выявлять и решать проблемы, связанные с SMB. Для сложных случаев расширенная диагностика, например сетевые трассировки и журналы событий, может дать более глубокое представление о проблеме.