Samba windows 10 не может получить доступ

Обновлено: 04.07.2024

У меня есть сервер Samba версии 4.1.11, работающий на Ubuntu 14.04. Я не могу подключиться из Windows 10 (но я могу из Windows 7).

Сервер и клиенты не находятся в одной локальной сети.

Я приложил журналы для неудачной попытки подключения из Windows 10 и для успешной попытки из Windows 7 (для сравнения).

Вкратце, в отличие от успешной попытки, неудачная начинается с:

затем он запрашивает несколько различных протоколов перед выбором SMB2_FF . Затем, после некоторых переговоров по безопасности, он переключается на протокол SMB 2. , а SMB3_00 затем:

Успешная попытка выбрать протокол SMB2_10 с самого начала, но Windows 10 даже не запрашивает этот протокол.

Я добавил свой комментарий в файл smb.conf (не более 2 ссылок с репутацией <10)

Я думаю, что у меня есть решение, которое работает на Windows 7 - 10 и на Server 2012

В моем случае закомментирование моей строки "smb ports 139" помогло.

Я использую FreeBSD 10 с Samba 4.4.5

Вот копия моего SMB4.conf. Надеюсь, это кому-нибудь поможет.

Потратив целый день на проблему, закомментировав строку «smb ports 139», ДЕЙСТВИТЕЛЬНО помог! Благодаря тонну!!

Это решило мою проблему:

Дальнейшее чтение:

  • MSKB, упомянутый выше: поддержка Microsoft, KB2696547: как обнаружить, включить и отключить SMBv1, SMBv2 и SMBv3 в Windows и Windows Server

Я обнаружил, что это будет работать и без необходимости редактировать реестр или отключать службы SMB 2/3, я смог подключиться к своему raspi 3, использующему Samba-4.2.10-Debian, вручную введя адрес, а также набрав настройка имени netbios в файле smb.conf распи в адресной строке проводника в Windows 10.

Я бы щелкнул по вкладке сети, но я не смог найти свой общий ресурс samba, хотя общий доступ к сети был включен, а что нет, но после ввода //192.168.0.22 (адрес моего pi) или // SAMBA (имя netbios Я установил в smb.conf) Затем я смог подключиться и поделиться с Samba.

Моя Windows 10 в то время все еще не подключалась к SMB 4.x, но это, похоже, помогло. После этого просто подключите диск, и вам больше не нужно вручную вводить адрес.

Версия Win 10 - 10.0.14393 Build 14393 (с последними обновлениями)

Надеюсь, что это поможет кому-то еще в будущем.

Это работает, но требует изменения настроек на каждом отдельном клиенте, который будет иметь доступ к общему ресурсу . Это можно реализовать без изменений на стороне клиента, просто добавив несколько «дополнительных» опций на стороне samba.

В Windows 10 Fall Creators Update и Windows Server версии 1709 (RS3) сетевой протокол Server Message Block версии 1 (SMBv1) больше не устанавливается по умолчанию.

Программа и функции, добавить / удалить функции Windows . включить CIF / SMB 1.0

Я согласен с другими, связанными с настройками по умолчанию в Windows 10 в качестве клиента. В любом случае, у меня все заработало БЕЗ каких-либо изменений на стороне клиента с помощью этого параметра в разделе Global на сервере samba (samba-4.7.1-9.el7_5.x86_64 - версия репозитория для CentOs 7):

У меня была такая же проблема, моя рабочая станция Windows 10 не могла подключиться к Sambashare после обновления win, ошибки были ошибкой 53, и отсутствующие протоколы, отсутствующие настройки выигрышей в реестре, ничего действительно не помогли в моем случае!

Что сработало для меня:

Откройте сервисы (нажмите Пуск правой кнопкой мыши -> Управление компьютером -> Сервисы и приложения -> и выберите сервисы)

Теперь в службах прокрутите вниз до рабочей станции, служба запущена? Если нет, у вас может быть та же проблема, что и у меня.

на моих 3-х рабочих ПК теперь все есть в зависимостях + драйвер поддержки браузера + служба интерфейса сетевого магазина + SMB 1.x Miniredirector + SMB 2.0 Miniredirector

date

16.12.2019

directory

Windows 10, Windows Server 2016, Windows Server 2019, Вопросы и ответы

comments

комментариев 40

Если вы из Windows 10 не можете открыть сетевые папки на других сетевых устройствах (NAS, Samba сервера Linux) или на компьютерах со старыми версиями Windows (Windows 7/ XP /2003), скорее всего проблема связана с тем, что в вашей новой версии Windows 10 отключена поддержка устаревших и небезопасных версий протокола SMB (используется в Windows для доступа к общим сетевым папкам и файлам). Так, начиная с Windows 10 1709, был отключен протокол SMBv1 и анонимный (гостевой) доступ к сетевым папкам по протоколу SMBv2.

Microsoft планомерно отключает старые и небезопасные версий протокола SMB во всех последний версиях Windows. Начиная с Windows 10 1709 и Windows Server 2019 (как в Datacenter так и в Standard редакциях) в операционной системе по умолчанию отключен протокол SMBv1 (помните атаку шифровальщика WannaCry, которая как раз и реализовалась через дыру в SMBv1).

Конкретные действия, которые нужно предпринять зависят от ошибки, которая появляется в Windows 10 при доступе к общей папке и от настроек удаленного SMB сервера, на котором хранятся общие папки.

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

Начиная с версии Windows 10 1709 (Fall Creators Update) Enterprise и Education пользователи стали жаловаться, что при попытке открыть сетевую папку на соседнем компьютере стала появляться ошибка:

Вы не можете получить доступ к этой общей папке, так как политики безопасности вашей организации блокируют гостевой доступ без проверки подлинности

При это на других компьютерах со старыми версиями Windows 8.1/7 или на Windows 10 с билдом до 1709, эти же сетевые каталоги открываются нормально. Эта проблем связана с тем, что в современных версиях Windows 10 (начиная с 1709) по умолчанию запрещен сетевой доступ к сетевым папкам под гостевой учетной записью по протоколу SMBv2 (и ниже). Гостевой (анонимный) доступ подразумевают доступ к сетевой папке без аутентификации. При доступе под гостевым аккаунтом по протоколу SMBv1/v2 не применяются такие методы защиты трафика, как SMB подписывание и шифрование, что делает вашу сессию уязвимой против MiTM (man-in-the-middle) атак.

При попытке открыть сетевую папку под гостем по протоколу SMB2, в журнале клиента SMB (Microsoft-Windows-SMBClient) фиксируется ошибка:

В большинстве случае с этой проблемой можно столкнуться при использовании старых версий NAS (обычно для простоты настройки на них включают гостевой доступ) или при доступе к сетевым папкам на старых версиях Windows 7/2008 R2 или Windows XP /2003 с настроенным анонимным (гостевым) доступом (см. таблицу поддерживаемых версий SMB в разных версиях Windows).

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

Есть другой способ – изменить настройки вашего SMB клиента и разрешить доступ с него на сетевые папки под гостевой учетной записью.

Этот способ нужно использовать только как временный (. ), т.к. доступ к папкам без проверки подлинности существенно снижает уровень безопасности ваших данных.

Чтобы разрешить гостевой доступ с вашего компьютера, откройте редактор групповых политик (gpedit.msc) и перейдите в раздел: Конфигурация компьютера -> Административные шаблоны -> Сеть -> Рабочая станция Lanman (Computer Configuration ->Administrative templates -> Network (Сеть) -> Lanman Workstation). Включите политику Enable insecure guest logons (Включить небезопасные гостевые входы).

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

В Windows 10 Home, в которой нет редактора локальной GPO, вы можете внести аналогичное изменение через редактор реестра вручную:

Или такой командой:

reg add HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters /v AllowInsecureGuestAuth /t reg_dword /d 00000001 /f

Вашей системе необходимо использовать SMB2 или более позднюю

Другая возможная проблема при доступе к сетевой папке из Windows 10 – поддержка на стороне сервера только протокола SMBv1. Т.к. клиент SMBv1 по умолчанию отключен в Windows 10 1709, при попытке открыть шару вы можете получить ошибку:

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

При этом соседние устройства SMB могут не отображаться в сетевом окружении и при открытии по UNC пути может появляться ошибка 0x80070035.

Если сетевые папки раздает Samba на Linux, вы можете указать минимально поддерживаемую версию SMB в файле smb.conf так:

В Windows 7/Windows Server 2008 R2 вы можете отключить SMBv1 и разрешить SMBv2 так:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 –Force

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 1 –Force

В Windows 8.1 отключите SMBv1, разрешите SMBv2 и SMBv3 и проверьте что для вашего сетевого подключения используется частный или доменный профиль:

Disable-WindowsOptionalFeature -Online -FeatureName "SMB1Protocol"
Set-SmbServerConfiguration –EnableSMB2Protocol $true

Если ваше сетевое устройство (NAS, Windows XP, Windows Server 2003), поддерживает только протокол SMB1, в Windows 10 вы можете включить отдельный компонент SMB1Protocol-Client. Но это не рекомендуется.

Запустите консоль PowerShell и проверьте, что SMB1Protocol-Client отключен ( State: Disabled ):

Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Client

Включите поддержку протокола SMBv1 (потребуется перезагрузка):

Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol-Client

powershell - Enable-WindowsOptionalFeature SMB1Protocol-Client

Также вы можете включить/отключить дополнительные компоненты Windows 10 (в том числе SMBv1) из меню optionalfeatures.exe -> SMB 1.0/CIFS File Sharing Support

включить smb1 клиент в windows 10

В Windows 10 1709 и выше клиент SMBv1 автоматически удаляется, если он не использовался более 15 дней (за это отвечает компонент SMB 1.0/CIFS Automatic Removal).

В этом примере я включил только SMBv1 клиент. Не включайте компонент SMB1Protocol-Server, если ваш компьютер не используется устаревшими клиентами в качестве сервера для хранения общих папок.

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

В этой статье данная статья предоставляет решения проблемы, из-за которую псевдоним DNS CNAME не может получить доступ к файлам SMB-серверов.

Применяется к: Windows 10 — все выпуски, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows 7 Пакет обновления 1
Исходный номер КБ: 3181029

Симптомы

  • Вы работаете на файловом сервере SMB, например Windows Server. На сервере есть файлы и ресурсы, настроенные с помощью их имени NetBIOS, доменного имени DNS с полной квалификацией (FQDN) и их псевдонима (CNAME).
  • У вас есть клиент, который работает Windows 7, Windows Server 2008 R2 или более поздней версии Windows.

Если приложение или пользователь использует фактическое имя хранилища (имя NetBIOS или FQDN) для файлов или других ресурсов на сервере, использующем SMB, доступ будет успешным.

Когда приложение или пользователь использует псевдоним CNAME для файлов или других ресурсов на сервере, использующем SMB, и вы пытаетесь подключиться к акции на файловом сервере с его псевдонимом DNS CNAME. Например, вы пытаетесь подключиться к доле на файловом сервере с помощью псевдонима DNS CNAME:

В этом случае вы испытываете следующие действия:

Успешное Windows сервера 2008 R2 или Windows 7.

Открытая папка

\\uncpath недоступен. Возможно, у вас нет разрешения на использование этого сетевого ресурса. Обратитесь к администратору этого сервера, чтобы узнать, есть ли у вас разрешения на доступ.

Ошибка logon. Имя целевой учетной записи неверно.

Причина

Однако при проверке сетевого следа при неудачной установке сеанса SMB сеанса с ошибкой Kerberos KRB_AP_ERR_MODIFIED. Вот пример неудачного запроса на установку сеансов SMB в сетевом следе:

Если имя файлового сервера было разрешено с помощью DNS, клиент SMB привносим суффикс DNS в имя, предоставленное пользователем. То есть первым компонентом SPN всегда будет имя пользователя, как в следующем примере:

Эта попытка не удалась бы для более старых реализации SMB (Например, AIX Samba 3.5.8), которые не могут быть настроены для проверки подлинности Kerberos и не прослушивают порт прямого хоста SMB 445, а только в порту NetBIOS 139.

Если имя файлового сервера было разрешено с помощью другого механизма, например

  • NetBIOS
  • Разрешение многофаскальных имен link-local (LLMNR)
  • Процессы протокола разрешения одноранговых имен (PNRP)

клиент SMB использует предоставленное пользователем имя, например следующее:

Решение

Чтобы устранить эту проблему на файловом сервере с протоколом SMB версии 1, добавьте значение в DisableStrictNameChecking реестр:

Расположение реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
Имя DWORD: DisableStrictNameChecking
Значение DWORD: 1

Не используйте DNS CNAMEs в будущем для файловой серверы. Если вы хотите по-прежнему давать альтернативные имена серверам, вы можете сделать это со следующей командой:
NETDOM COMPUTERNAME/ADD

Эта команда автоматически регистрирует SPNs для альтернативных имен.

Мы не рекомендуем устранять эту проблему для файлового сервера, который не Windows, введя следующие команды в окне командной подсказки на Windows компьютере. Необходимо войти в систему с учетными данными администратора домена. Затем нажмите кнопку Ввод в командной подсказке для регистрации SPN для CNAME устройства хранения файлового сервера Windows на основе:

  • Если используется кластеризация Windows 2012 г., установите hotfix для клиентов на уровне Windows XP или Windows Server 2003: не удается получить доступ к ресурсу, который находится на Windows Server 2012 основенеудачного кластера .
  • Если создается CNAME для кластерного имени, к которое подключаются клиенты, необходимо настроить свойства для этого кластерного имени, чтобы оно отвечало на CNAMEs: Настройка псевдонима для кластерной доли SMBс Windows Server 2012 .

Трассировка сети

Чтобы собрать сетевой след, выполните следующие действия:

Откройте окно командной подсказки, введите следующую команду и нажмите кнопку Ввод:

Удалите все существующие сетевые подключения File Server, заверив следующую команду:

Инициализация кэша всех имен путем удаления существующего кэша:

Чтобы удалить кэш DNS, введите следующую команду и нажмите кнопку Ввод:

Чтобы удалить кэш NetBIOS, введите следующую команду и нажмите кнопку Ввод:

Чтобы удалить кэш Kerberos, введите следующую команду и нажмите кнопку Ввод:

Чтобы удалить кэш ARP, введите следующую команду и нажмите кнопку Ввод:

Попробуйте подключиться к сетевой сети, введя следующую команду и нажав кнопку Ввод:

Чтобы остановить сетевой след в неудачном сценарии, введите следующую команду и нажмите кнопку Ввод:

Сбор параметров реестра

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

Файлы параметров реестра (. ВИЧ) сохраняются в папке TEMP на файловом сервере.

Проверка параметров реестра

Проверьте параметры следующих значений реестра на файловом сервере:

Применение hotfixes (сервер и клиент)

Для Windows 7 и Windows Server 2008 R2 применим следующий Windows 7 Корпоративная фикс:

Кроме того, применим следующие горячие фиксы:

Ссылки

Заявление об отказе от ответственности за сведения о продуктах сторонних производителей

В этой статье упомянуты программные продукты независимых производителей. Корпорация Майкрософт не дает никаких гарантий, подразумеваемых и прочих, относительно производительности и надежности этих продуктов.

Всем привет! Сегодня столкнулся с такой проблемой. При построении локальной сети с двумя компьютерами первый (Windows 10) наотрез отказывается видеть другой комп (Windows 7). Все настройки я произвел правильно и открыл общий доступ. Но как потом оказалось, вся проблема в специальном сетевом протоколе SMB 1. Дело в том, что это старый протокол, который работает на олдскульных ОС. И он есть в десятке, но на последних обновлениях операционной системы Microsoft решила его отключить (во имя безопасности).

SMB Windows 10: настройка и как включить SMB1 и SMB2

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

SMB Windows 10: настройка и как включить SMB1 и SMB2

Может быть еще вот такой текст ошибки: «Не удалось выполнить сопоставление сетевого диска из-за следующей ошибки». Ну и дальше все в том же духе.

SMB Windows 10: настройка и как включить SMB1 и SMB2

Кстати, некоторые старые роутеры, также исползают устаревший SMB1 протокол – поэтому если у вас еще наблюдается проблема с доступом к жесткому диску или флешке, которые подключены к роутеру, то дальнейшие инструкции вам также будут полезны. Что мы будем делать? – нам нужно просто включить протокол SMBv1, и проблема будет решена. Поехали!

Включения SMB1 на Windows 10

SMB Windows 10: настройка и как включить SMB1 и SMB2

Находим раздел с упоминанием нашего любимого протокола и включаем в папке все галочки. В самом конце нажимаем «ОК», чтобы изменения были приняты.

SMB Windows 10: настройка и как включить SMB1 и SMB2

После этого SMB-1 в Windows 10 будет включено, и проблемы с сетью возникнуть не должны. Я бы на всякий случай перезагрузил компьютер. Но если вы все равно не видите какой-то компьютер в сети, или есть проблемы с доступом, смотрим следующую главу.

Проверка настроек

Нам нужно посмотреть настройки общего доступа и есть ли они у вас вообще.

SMB Windows 10: настройка и как включить SMB1 и SMB2

SMB Windows 10: настройка и как включить SMB1 и SMB2

  1. Тут же на первой странице (вкладка «Состояние») откройте «Свойства» того подключения, которое вы используете для коннекта с роутером. Если вы подключены по кабелю, то выбираем «Ethernet», если вы подключены по «Wi-Fi», то выбираема второе подключение. На старых версиях нужно открыть ссылку «Изменить свойства подключения».

SMB Windows 10: настройка и как включить SMB1 и SMB2

  1. Убедитесь, чтобы тип сетевого профиля был как «Частный». Вернитесь обратно, нажав по стрелки влево.

SMB Windows 10: настройка и как включить SMB1 и SMB2

  1. Пролистните чуть ниже и откройте «Центр управления сетями…». Этот раздел может также называться как «Параметры общего доступа». Поэтому можете ориентироваться по значку или найти раздел со словами «Общий доступ».

SMB Windows 10: настройка и как включить SMB1 и SMB2

  1. Слева выбираем третий пункт для изменения параметров.
  1. Так как мы уже изменили текущий профиль на частный, то открываем его.

SMB Windows 10: настройка и как включить SMB1 и SMB2

SMB Windows 10: настройка и как включить SMB1 и SMB2

Включение SMB2

Сначала давайте проверим статус SMBv2. Для это откройте «PowerShell» с правами админа, нажав ПКМ по кнопке «Пуск».

SMB Windows 10: настройка и как включить SMB1 и SMB2

Get-SmbServerConfiguration | Select EnableSMB2Protocol

Если вы видите значение «True», то значит протокол работает. Если стоит значение «False», то включить параметр можно также с помощью команды:

Set-SmbServerConfiguration -EnableSMB2Protocol $true

ПРИМЕЧАНИЕ! Таким же образом можно включить или выключить SMB1 – просто замените в команде одну цифру (2 на 1).

Далее кликаем по «Y» и на «Enter», чтобы подтвердить свои действия. Если же вы хотите отключить SMB2, то вместо «true» ставим «false». В конце не забываем перезагрузить систему.

Ничего не помогло, папку или компьютер не видно, ничего не работает

Если проблема остается, то есть несколько вариантов – от неправильных сетевых настроек до проблем с некоторыми службами в самой операционной системе. Все решения я уже описал в отдельной статье, и с ней вы можете ознакомиться по этой ссылке. То, что описано там, должно помочь.

Эта статья по сути будет подборкой «Best practiсe» для системных администраторов Samba. Основой статьи является глава Troubleshooting Techniques из книги Sam’s Teach Yourself Samba in 24 Hours. Мы постараемся рассмотреть наиболее распространенные ошибки при настройке Samba.


Согласитесь, ужасно поменять двигатель в машине, а потом выяснить, что не ехала она из-за отсутствия бензина! Может, это и не лучшая метафора, но многие системные администраторы тратят время зря, не проверив в первую очередь самые очевидные вещи. Посмотрите, как примерно должен выстраиваться процесс поиска и решения проблем с Samba:

Описание тестовой среды
Для начала — несколько слов о тестовой среде. Условия следующие:
Samba-сервер называется TROUBLE и имеет IP-адрес 192.168.7.75 и маску 255.255.255.0.
smbd и nmbd запускаются как демоны.
•Windows-клиент называется win-client.
•Windows-клиент использует адрес 192.168.7.135 с сетевой маской 255.255.255.0.
•И win-client, и TROUBLE находятся в одной подсети, так что широковещательный запрос дойдет с одного хоста на другой.
•И win-client, и TROUBLE являются членами рабочей группы LAB.
•Samba-сервер использует следуюший smb.conf:

УРОВЕНЬ 1
Работоспособность сетевого соединения и файла конфигурации

Основание нашей «пирамиды» составляют три основных проблемы:
•корректно работающее TCP/IP подключение;
•соответствие маски и широковещательных адресов на серверах и клиентах;
•работоспособность файла smb.conf.

TCP/IP
Для проверки TCP/IP в первую очередь используется команда ping. Если описать протокол ICMP очень упрощенно, то хост отправляет запрос на сервер и спрашивает «Ты жив?». Если сервер не отвечает, хост приходит к выводу, что тот не подключен к сети и, следовательно, недоступен.

Если такое происходит, первое, что стоит сделать — это повторить команду ping, но используя уже не имя, а адрес:

Если команда выполнится успешно, то стоит обратить внимание на конфигурацию DNS. Наиболее распространенные причины ошибки:
•неверное содержание файла конфигурации DNS /etc/resolv.conf;
•на сервере DNS нет записи, связанной с win-client;
•сервер DNS недоступен в данный момент.
Если же ping по IP-адресу успешно не выполняется, то стоит проверить работоспособность сетевого оборудования на сервере, клиенте и между ними.

Широковещательный адрес на сервере и клиенте
Возможно, ping выполнится и успешно, но при этом сетевая маска (netmask) и широковещательный адрес (broadcast address) будут сконфигурированы неверно.
В NetBIOS крайне важно для правильного разрешения имени и поиска машин в сетевом окружении, чтобы сервер и клиент находились в одной подсети, т.е. использовали одну маску подсети и широковещательный адрес.
В нашем случае сетевая маска должна быть 255.255.255.0, а широковещательный адрес — 192.168.7.255.
Если вы используете Linux, то можно проверить, какие используются широковещательный адрес и маска, при помощи команды ifconfig с именем интерфейса в качестве аргумента:

Если в выводе этой команды вы увидите, что широковещательный адрес или сетевая маска заданы неверно, следует зайти под учетной записью root и установить верные значения, используя команду ifconfig:

В Windows аналогичную информацию можно получить информацию, выполнив команду ipconfig /all.

Проверка корректности файла smb.conf
Так как Samba использует огромное количество параметров из файла smb.conf, разработчики создали утилиту командной строки, которая проверяет синтаксис этого файла. Утилита называется testparm, она очень полезна при поиске ошибок в конфигурационном файле.
Можно использовать утилиту testparm с параметром -s для анализа конкретного конфигурационного файла. Эта опция очень хорошо подходит для проверки файла конфигурации перед его «боевым» использованием.

После анализа заданного конфигурационного файла testparm выводит все значения файла smb.conf, включая значения по умолчанию. Это помогает убедиться, что используются ожидаемые значения параметров конфигурации smbd и nmbd.
Стоит отметить, что значения по умолчанию меняются от версии к версии, так что необходимо использовать версию Samba, соответствующую версии testparm.

УРОВЕНЬ 2
Серверное и клиентское ПО

Второй уровень подразумевает проверку конфигурации клиентского и серверного ПО. Наша цель — убедиться, что и клиент, и сервер корректно отвечают на запросы NetBIOS и CIFS. Пока мы рассматриваем изолированно каждый из хостов. (На третьем уровне мы уже начнем рассматривать их взаимодействие.)

smbd
В первую очередь, smbd должен быть запущен. Проверить это можно, используя команду ps. Аргументы этой команды могут отличаться в зависимости от версии Linux.

Убедившись, что smbd запущен (или, при необходимости, запустив его), используем утилиту smbclient для проверки работоспособности сервера. Параметр -L используется для вывода списка ресурсов сервера. Ключ -N используется для анонимного подключения к серверу, чтобы не создавать лишних проблем с авторизацией. Все эти действия должны выполняться локально на Samba-сервере.

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

Она возникает, если smbd не запущен или не может подключиться к порту 139. Причиной этому могут быть ранее установленные и некорректно удаленные компоненты Samba. Прежде всего следует убедиться, что smbd стартует как демон и не завершается тут же с ошибкой. Особенность в том, что nmbd не выводит ошибки в консольное окно, так что следует посмотреть последние несколько строк log-файла. Позже мы рассмотрим анализ логов более подробно.
Вторая часто встречающаяся ошибка выглядит так:

Можно подумать, что причиной этой ошибки является неверное NetBIOS-имя, но это не так. Эта ошибка не может быть вызвана «битой» установкой nmbd, nmbd в данном случае даже не обязательно должен быть запущен.
Причиной возникновения этой ошибки при локальном подключении чаще всего являются неверно сконфигурированные параметры hosts allow или hosts deny в файле smb.conf. Сервер разрывает создающуюся NetBIOS-сессию.
Если нам удалось увидеть список общих ресурсов, мы можем проверить возможность Samba авторизовать пользователей. В этом тесте аккаунт с именем пользователя user1 и паролем secret подключается к общему ресурсу [public].

Это может быть вызвано неверно написанным именем службы, настройками доступа к общему ресурсу или неверным выражением path в описании общего ресурса в файле smb.conf.

nmbd
Чтобы проверить, запущен ли nmbd, мы снова используем команду ps.

Если nmbd при этом не запущен, результатом будет ошибка:

Также причиной ошибки может быть тот факт, что loopback-интерфейс не включен в smb.conf при включенном параметре bind interfaces only = yes.
После этого мы проверим, может ли nmbd зарегистрировать имя TROUBLE.

Например, в данном случае это имя принадлежит сторонней машине, а не нашему Samba-серверу. Очевидно, решением данной проблемы является переименование этой машины или сервера.

NetBIOS-интерфейс Windows

Утилита, использующаяся в Windows для NetBIOS-запросов — nbtstat.exe — имеет еще несколько опций, которых нет в nmblookup. Одна из них (-n) позволяет «спросить» у NetBIOS-интерфейса, какие имена он успешно зарегистрировал:

Если компонент “Client for Microsoft Networks” не был установлен, nbtstat.exe сообщит следующее:

Более тонкая ошибка возникает, когда Windows-клиент сообщает что он зарегистрировал имя рабочей группы, хотя это должно быть уникальное имя рабочей станции.

Часто причиной этого является наличие машины с таким же NetBIOS-именем. Windows-клиенту необходимо уникальное имя, чтобы установить NetBIOS-сессию с сервером. Пока клиент не сможет зарегистрировать имя рабочей станции, он будет неспособен, скажем, просматривать сетевое окружение или подключать сетевые диски.

УРОВЕНЬ 3
Удаленный доступ к общим ресурсам

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

Разрешение имен
Мы вновь будем использовать утилиты nmblookup и nbstat.exe, чтобы выяснить, может ли клиент разрешить имя сервера и наоборот. Тест будет состоять из двух фаз. В первой мы будем использовать широковещательный запрос, чтобы протестировать отклики сервера и клиента. Это делается путем задания широковещательного адреса (-B 192.168.7.255) в утилите nmblookup при запросе, что задействует сетевое взаимодействие между сервером и клиентом.
Сначала мы попробуем разрешить имя сервера:

После этого мы попробуем разрешить имя клиента, используя тот же широковещательный адрес.

Можно выполнить те же действия на Samba-сервере, чтобы собрать информацию о клиенте. Опции для запроса через утилиту nmblookup, в целом, такие же как и в nbtstat.exe.

Если какой-то из этих запросов не выполняется, следует еще раз провести проверки сетевого подключения и NetBIOS-интерфейсов, которые мы рассматривали раньше.

Просмотр общих ресурсов с Windows-клиента
Мы уже использовали smbclient для просмотра списка общих ресурсов. Здесь мы проделаем то же самое, только удаленно с Windows-клиента.
Утилита net.exe — это универсальная утилита для работы с CIFS. Эта утилита является эквивалентом Linux-команды smbclient -L. Опиция view позволяет просмотреть общие ресурсы рабочей группы, или, если указать конкретное имя сервера (например, \\TROUBLE), покажет список общих ресурсов на нем.

Удаленное подключение к общим ресурсам
На самом деле, этот шаг является не столько тестом, сколько целью всего процесса. Если мы зашли в консоль с правильным именем и паролем, то следующая команда подключит диск P: локального клиента к общему ресурсу [public] на сервере TROUBLE.

Чтобы определить, под каким именем подключаться, можно использовать опцию
Существует огромное количество проблем, связанных с аутентификацией. Зачастую они могут быть обнаружены только путем анализа лог-файлов, что будет рассмотрено позже.

УРОВЕНЬ 4
Сетевое окружение

Решение проблем с корректной работой Сетевого окружения — очень сложная тема. Скорее всего, если вы добрались до этого уровня, а сетевое окружение не работает или работает некорректно, вам следует еще раз проверить маску подсети и широковещательный адрес, и снова повторить все тесты нижних уровней: ошибка вероятно кроется там.

УРОВЕНЬ 5
Лог-файлы и анализ трафика

Иногда корень проблемы сложно определить даже с помощью специализированных диагностических утилит. Тогда на помощь приходят логи. Первые четыре уровня нашей «пирамиды» можно использовать для подтверждения правильности начальной установки Samba и решения простых проблем. Начиная с пятого уровня, начинается решение серьезных проблем. Рано или поздно вы столкнетесь с проблемой, которая потребует работы с логами.

Лог-файлы Samba
Ниже приведена таблица, в которой описаны уровни детализации логов.


Чтобы узнать текущий уровень логирования smbd (например, с pid 1234), выполним следующую команду из-под учетной записи root:

Если мы хотим увеличить уровень логирования до 10, чтобы получить всю возможную информацию, используем следующую команду:

Следующий вопрос: «Что же делать с логами?»
Вот пример, в котором логи помогли решению проблемы. Мы пробуем подключиться с Windows-клиента к общему дисковому ресурсу. Однако smbd не принимает пароль для соединения. Когда мы используем smbclient для теста, мы получаем ошибку:

Мы совершенно уверены, что значение smbpasswd верно, и пароль — test. Попробуем подключиться еще раз, добавив

в секцию [global] файла smb.conf, и мы увидим новые строчки в файле log.TROUBLE:

Последняя строка и есть ответ на наш вопрос. Samba не смогла найти учетную запись testuser. А это произошло, так как кто-то закомментировал строку в файле /etc/passwd:

Это всего лишь один пример. Вывод в логах может быть запутанным, но можно использовать grep, чтобы находить следующие ключевые слова:
• fail
• error
• unsuccessful
• corrupt
• unknown

Мониторинг сетевого трафика
Еще один способ найти корень проблемы — это просматривать содержимое пакетов, ходящих по сети между сервером и клиентом. Для этого можно использовать такие программы-анализаторы, как Wireshark. С их помощью можно просмотреть и проанализировать в достаточно читаемом виде содержимое пакетов.

УРОВЕНЬ 6
Внутренние проблемы Samba

Если ничего из вышеприведенного не помогло — возможно, вы столкнулись с каким-либо багом Samba. Список известных можно посмотреть на официальном сайте. Чтобы свести к минимуму вероятность появления подобного рода проблем, используйте актуальную и стабильную версию Samba, а также следите за выходом исправлений: исправляются разведанные баги достаточно быстро.

Читайте также: