与 Windows 客户端协商 SMB2/3

与 Windows 客户端协商 SMB2/3

最近安装 Win10 1803 后,我发现我无法再访问 Linux 机器上的 Samba 共享。经过一番挖掘,我发现 SMB1 现在默认被禁用,而我的 Linux 机器显然将其用作默认设置。

现在我想修复这个问题,以便我的 smb 服务器能够正确协商可用的最高支持 procol 版本。就文档而言,smb 应该可以毫无问题地支持 SMB2 和 SMB3。但如果我在 Windows 中禁用 SMB1,服务器就会完全消失。

我开始尝试min protocol = SMB2max protocol = SMB3protocol=SMB2无济于事。此时,我将 wireshark 也加入其中,并注意到一些有趣的细节。

无论我是否禁用 SMB1 或在 Windows 机器上启用它,它总是发送一个带有三种支持方言的 smb 协商协议请求(封装在 SMB 数据包中):

  • NT LM 0.12(SMB1/CIFS)
  • 中小企业 2.002
  • 中小企业2.???

无论如何,SMB1 始终是该列表的一部分。不知道为什么,但它不应该如果 smb 选择支持程度最高的方言,则会出现问题。遗憾的是,响应表明无法识别 SMB2.002 和 SMB2.???。

使用底部附加的配置,我得到了一个协商协议响应,它选择了 NL LM 0.12。如果我添加min protocol = SMB2到配置中,协议响应将返回 -1(PC NETWORK PROGRAM 1.0),这会导致最旧的协议变体。如果我设置protocol = SMB2为完全绕过协商,服务器将正确发送 SMB2 数据包而不是 SMB 数据包,并将方言正确设置为 0x0202(SMB2_02),但 Windows 仍然拒绝使用该版本。

此时,我不知道如何在 Linux 服务器和 Windows 客户端之间启用对非 SMB1 的 SMB 协议版本的支持...如果有人知道如何让它正常工作,请随时分享。

理想情况下,如果可能的话,我只想调整我的服务器,而不是客户端机器。

笔记

服务器:

  • Openmediavault(Debian 7)
  • smbd 和 nmbd v3.6.6

客户:

  • Win10 1803(内部版本 17134.48)
  • 已停用“支持 SMB1.0/CIFS”功能

禁用服务 mrxsmb10 可能与卸载该功能具有相同的效果。

smb配置文件

[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

答案1

smpd 版本 3.6.x 不支持 SMB3,因此无法识别。使用max protocol = SMB2应该启用 SMB2 支持,因此请从它开始。如果您随后添加,min protocol = SMB2列表会变得非常狭窄...

Debian 7“Wheezy”的 LTS 支持将于 2018 年 5 月 31 日结束。还有不到一周的时间。升级后的 Debian 9 附带 smbd 4.5.x,自 smbd 4.2 起支持 SMB 3.0。它将支持您的max protocol = SMB3.

答案2

@Esa Jokinen 已经回答了你,我认为他的回答将解决你的问题。

让我再详细说一下,这里是一个链接,解释了如何以及应该做什么才能在 Samba (3.6.x) 上启用 SMB2。(查找“SMB2 支持”)

一般情况下只需执行以下操作:

  1. smb.conf[global] 部分添加max protocol = SMB2
  2. 重新启动 Samba。

相关内容