Короткий ответ

С клиента: TCP 445 до FS01.contoso.example, DNS, Kerberos/SPN, затем диалект SMB и signing, затем права. Get-SmbServerConfiguration на сервере и Get-SmbConnection на клиенте. Access denied при живом 445 — это уже ACL, не протокол: share vs NTFS.

Не включайте SMBv1 «для совместимости навсегда». Не отключайте firewall целиком.

Симптомы и как отличить

  • \\FS01\data — «не найден сетевой путь» (53 / 0x80070035).
  • По IP то же самое — сеть/firewall/служба.
  • По IP есть, по имени нет — DNS/SPN/Kerberos.
  • Сессия есть, папки нет — права или ABE.

Медленно, но открывается — производительность.

Возможные причины

  1. Firewall / ACL режет 445 (профиль Public).
  2. LanmanServer Stopped, шары не опубликованы.
  3. Клиент требует SMB3, кто-то выключил диалекты на сервере.
  4. Signing mismatch (required vs disabled на одной стороне).
  5. Дубликат SPN или клиент идёт по CNAME без SPN.
  6. Insecure guest logons запрещены, а клиент ждёт гостя.
  7. NTLM заблокирован политикой, Kerberos не строится.
  8. SMBv1-only устройство против сервера без SMB1.

Диагностика

С WS-042:

Test-NetConnection FS01.contoso.example -Port 445
Resolve-DnsName FS01.contoso.example
nltest /dsgetdc:contoso.example /force
net.exe use \\FS01.contoso.example\data /user:contoso\ivanov
Get-SmbConnection | Format-Table ServerName, ShareName, Dialect, Signed, Encrypted

На файловом сервере:

Get-Service LanmanServer, LanmanWorkstation | Format-Table Name, Status
Get-SmbShare | Format-Table Name, Path, EncryptData
Get-SmbServerConfiguration | Format-List EnableSMB1Protocol, EnableSMB2Protocol, RequireSecuritySignature, EnableSecuritySignature, RejectUnencryptedAccess
Get-NetFirewallRule -DisplayGroup 'File and Printer Sharing' | Format-Table DisplayName, Enabled, Profile, Direction, Action

SPN:

setspn.exe -L FS01
setspn.exe -X

Ищите HOST/FS01 и HOST/FS01.contoso.example. Дубликаты -X — причина логона NTLM fallback или отказа.

Журнал:

Get-WinEvent -CimSession FS01 -LogName 'Microsoft-Windows-SMBServer/Operational' -MaxEvents 20 -ErrorAction SilentlyContinue

Решение

Сценарий A. 445 закрыт

Включите правила File and Printer Sharing / SMB-In для профиля Domain. Верните NIC в доменный профиль (DNS домена).

Enable-NetFirewallRule -DisplayGroup 'File and Printer Sharing'

Не Set-NetFirewallProfile -Enabled False.

Сценарий B. Служба / шары

Start-Service LanmanServer
Get-SmbShare

Если нет data — шару удалили или DFS-корень не там.

Сценарий C. Подпись и шифрование

Выровняйте клиент и сервер: signing required на обоих или политика домена. Не отключайте signing в домене, чтобы старый NAS зажил — изолируйте NAS.

Сценарий D. SPN / CNAME

Зарегистрируйте SPN на учётке компьютера файлового сервера. Для CNAME files.contoso.example — SPN HOST/files.contoso.example на FS01, не на случайном DC. После правки — логон заново / klist purge у клиента.

Сценарий E. Гость и SMB1

Современные клиенты не ходят гостем. Выдайте доменную учётку. SMB1 — отдельный план вывода устройств, не EnableSMB1Protocol $true на прод-сервере без срока.

Сценарий F. Диалект, NTLM и имя

С клиента после попытки подключения:

Get-SmbConnection | Format-Table ServerName, ShareName, Dialect, Signed, Encrypted, UserName
Get-SmbServerConfiguration | Select-Object EnableSMB1Protocol, EnableSMB2Protocol, RequireSecuritySignature
setspn.exe -L FS01

Dialect пустой и ошибка 53: до протокола не дошли (445/DNS). Dialect 3.1.1 и сразу Access denied — вы уже на ACL. Signing required на сервере и клиент с политикой «disabled» даёт отказ на negotiate, не «путь не найден».

CNAME files.contoso.exampleFS01: без SPN HOST/files.contoso.example на учётке FS01$ Kerberos падает, NTLM может пройти или нет в зависимости от ограничений NTLM. Зарегистрируйте SPN, не учите пользователей IP.

Гостевой доступ с Windows 10/11 по умолчанию закрыт. Шара с Everyone без учётки не откроется. Выдайте доменную группу, не AllowInsecureGuestAuth на всех WS-042.

Мультидомный DFS + мёртвый DC сайта иногда ломает referral, это выглядит как «SMB нет». Проверьте \\FS01\data напрямую: если прямой путь жив, чините namespace, не LanmanServer.

Как проверить, что проблема устранена

Test-NetConnection FS01.contoso.example -Port 445
Get-SmbConnection
Get-ChildItem '\\FS01.contoso.example\data' | Select-Object -First 5

Диалект SMB 2.x/3.x, Signed согласно политике. Пользователь с WS-042 открывает шару без IP. setspn -X без дубля на этих HOST.

Если не помогло

  • 445 True, access denied — ACL, не эта статья.
  • Только через DFS — namespace.
  • Только после смены пароля компьютера — secure channel.
  • Кластер: смотрите имя роли и SPN роли, не только узла.

Проверьте профиль firewall на FS01: после смены DNS NIC мог стать Public, правила File and Printer Sharing на Domain не действуют. Get-SmbServerConfiguration с EnableSMB2Protocol $false — кто-то «оптимизировал» и оставил только SMB1, современные клиенты молчат. Дубль SPN на пользовательской учётке ломает Kerberos к шаре: setspn.exe -X и снимите лишнее с человека, не с компьютера. Не открывайте 139 «на всякий» вместо 445. Гостевой доступ с Windows 11 не вернётся галкой на шаре Everyone без небезопасного гостя на клиенте — выдайте доменную группу.

Профилактика

  • SMB1 выключен, мониторинг попыток SMB1.
  • Подпись по доменной политике, единообразно.
  • SPN не плодить на пользовательские учётки.
  • Firewall Domain включён, правила роли File Server.
  • Документировать CNAME и соответствующие SPN.
  • После смены имени файлового сервера или добавления CNAME сразу setspn.exe -L FS01 и -X. Клиентам новый логон. Не оставляйте RequireSecuritySignature только на половине узлов фермы: иначе WS-042 получит отказ negotiate вместо «доступ есть». После правки SPN подождите репликацию AD и сделайте новый логон на клиенте, не раньше.

FAQ

Почему \IP работает, а \FS01 нет?

Kerberos к IP обычно не строится. Либо NTLM, либо отказ. Чините DNS/SPN, не учите IP.

Нужно ли открывать 139?

Для SMB на 445 — нет как обязательное. NetBIOS 139 — наследие. Сначала 445.

RequireSecuritySignature сломал старый сканер.

Изолируйте устройство или обновите. Не снимайте signing с файлового сервера домена глобально.

Get-SmbServerConfiguration пустой?

Модуль SmbShare, права администратора. На Core без модуля — Get-SmbServerConfiguration всё равно должен быть на 2019+.

Можно ли «просто» AllowInsecureGuestAuth?

Только как осознанный риск для конкретного клиента. Не доменная норма 2025 года. Для сканера в изолированном VLAN заведите отдельную шару и учётку, не снимайте гостевой запрет с FS01 для всего домена contoso.example. Проверьте Get-SmbConnection после успешного входа: диалект 3.x и Signed по политике. Без 445 остальное не имеет смысла.