Назад | Перейти на главную страницу

Согласование SMB2 / 3 с клиентом Windows

После недавней установки Win10 1803 я заметил, что больше не могу получить доступ к своим ресурсам samba на моей Linux-машине. После некоторых копаний выяснилось, что SMB1 теперь отключен по умолчанию, и моя Linux-машина, по-видимому, использует его по умолчанию.

Теперь я хочу исправить это, чтобы мой smb-сервер правильно согласовывал самую высокую поддерживаемую версию procol. Что касается документации, smb должен без проблем поддерживать SMB2 и SMB3. Но если я отключу SMB1 в Windows, сервер полностью исчезнет.

Я начал играть с min protocol = SMB2, max protocol = SMB3 и protocol=SMB2 но безрезультатно. На этом этапе я добавил wirehark и отметил некоторые интересные детали.

Независимо от того, отключил ли я SMB1 или включил его на моем компьютере с Windows, он всегда отправляет запрос протокола согласования smb с тремя поддерживаемыми диалектами (инкапсулированными в пакет SMB):

SMB1 всегда входит в этот список, несмотря ни на что. Не знаю почему, но это не должен Будет проблемой, если кто-то выберет диалект с самой высокой поддержкой. К сожалению, ответ предполагает, что SMB2.002 и SMB2. ??? нераспознаны.

С конфигурацией, прикрепленной внизу, я получаю ответ протокола переговоров, который выбирает NL LM 0.12. Если я добавлю min protocol = SMB2 в конфигурацию ответ протокола возвращает -1 (СЕТЕВАЯ ПРОГРАММА ПК 1.0), что приводит к самому старому из возможных вариантов протокола. Если я установлю protocol = SMB2 чтобы полностью обойти переговоры, сервер правильно отправляет пакет SMB2 вместо пакета SMB и правильно устанавливает диалект на 0x0202 (SMB2_02), но Windows по-прежнему отказывается работать с этой версией.

На данный момент у меня нет идей о том, как включить поддержку версии протокола SMB, отличной от SMB1, между сервером Linux и клиентом Windows ... Если у кого-то есть идеи о том, как заставить его работать должным образом, не стесняйтесь поделиться их.

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

Ноты

Сервер:

Клиент:

Отключение службы mrxsmb10 может иметь тот же эффект, что и удаление этой функции.

smb.conf

[global]
workgroup = WORKGROUP
server string = %h server
dns proxy = no
log level = 0
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
syslog only = yes
panic action = /usr/share/samba/panic-action %d
encrypt passwords = true
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = no
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
socket options = TCP_NODELAY IPTOS_LOWDELAY
guest account = nobody
load printers = no
disable spoolss = yes
printing = bsd
printcap name = /dev/null
unix extensions = yes
wide links = no
create mask = 0777
directory mask = 0777
use sendfile = yes
aio read size = 16384
aio write size = 16384
null passwords = no
local master = yes
time server = yes
wins support = yes
wins server = NAS

Версия smpd 3.6.x не поддерживает SMB3, поэтому не распознает его. С помощью max protocol = SMB2 должен включить поддержку SMB2, так что начните с него. Если вы затем добавите min protocol = SMB2 список становится довольно узким ...

Поддержка LTS для Debian 7 «Wheezy» заканчивается 31 мая 2018 г. Это менее чем за неделю. Обновленный Debian 9 поставляется с smbd 4.5.x, а SMB 3.0 поддерживается начиная с smbd 4.2. Это поддержит ваш max protocol = SMB3.

@Esa Jokinen уже ответил вам, и я думаю, что его ответ решит вашу проблему.

Позвольте мне рассказать подробнее, Вот - это ссылка на объяснение того, как и что вам следует делать для включения SMB2 на вашей Samba (3.6.x). (ищите «Поддержка SMB2»)

В общем, просто сделайте следующее:

  1. в smb.conf [global] раздел добавить max protocol = SMB2
  2. Перезагрузите вашу Samba.