Понимание и устранение неполадок протокола Server Message Block (SMB)

Server Message Block (SMB) — важнейший сетевой протокол совместного доступа к файлам, который позволяет пользователям и приложениям получать доступ к файлам, принтерам и другим общим ресурсам по сети. SMB широко используется в средах Windows и обеспечивает бесперебойное взаимодействие между клиентскими и серверными системами. В этой статье мы рассмотрим, как работает SMB, его компоненты, распространённые шаги устранения неполадок и рекомендации по решению проблем, связанных с SMB.



Что такое SMB?

Server Message Block (SMB) — это сетевой протокол, который позволяет пользователям читать, записывать и управлять файлами на удалённых серверах так, как если бы они были локальными. SMB широко используется в сетях Windows для обеспечения общего доступа к файлам, принтерам и последовательным портам. Он также поддерживается системами Linux и macOS, что делает его универсальным протоколом для межплатформенного взаимодействия.


Как работает SMB

  1. Запрос клиента: Клиент SMB (например, Windows, Linux или macOS) отправляет запрос серверу SMB для доступа к общему ресурсу.
  2. Ответ сервера: Сервер SMB проверяет запрос на основании проверки подлинности и разрешений.
  3. Доступ к ресурсу: После предоставления доступа клиент может читать, записывать или изменять файлы так, как если бы они находились на локальном диске.

Ключевая терминология 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.sys
    • MRXSMB.sys
    • MRXSMB10.sys
    • MRXSMB20.sys
    • MUP.sys
    • SMBdirect.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/IPUDP 137Разрешение имён
NetBIOS over TCP/IPUDP 138Службы дейтаграмм
NetBIOS over TCP/IPTCP 139Сеансовые службы
Прямой SMB через TCPTCP 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:
    1. Начните захват трафика как на клиенте, так и на сервере SMB.
    2. Воспроизведите проблему.
    3. Проанализируйте пакеты на предмет ошибок SMB или тайм-аутов.

4. Соберите журналы событий

  • Экспортируйте журналы событий, связанные с SMB, для дальнейшего анализа:
    • Журналы клиента 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. Для сложных случаев расширенная диагностика, например сетевые трассировки и журналы событий, может дать более глубокое представление о проблеме.

Оставить комментарий