最近安装 Win10 1803 后,我注意到我不再能够在我的 linux 机器上访问我的 samba 共享。经过一番挖掘后发现,现在默认禁用 SMB1,而我的 linux 机器显然正在使用该 SMB1 作为默认值。
现在我想解决这个问题,以便我的 smb-server 正确协商可用的最高支持 procol 版本。就文档而言,smb 应该毫无问题地支持 SMB2 和 SMB3。但是如果我在 Windows 中禁用 SMB1,服务器就会完全消失。
我开始玩弄min protocol = SMB2
,max protocol = SMB3
但protocol=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 可能与卸载该功能具有相同的效果。
配置文件
[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
列表变得很窄......对 Debian 7 "Wheezy" 的 LTS 支持将于 2018 年 5 月 31 日结束。不到一周的时间。升级后的 Debian 9 附带 smbd 4.5.x,从 smbd 4.2 开始支持 SMB 3.0。它将支持您的
max protocol = SMB3
.@Esa Jokinen 已经回答了你,我认为他的回答会解决你的问题。
让我提供更多详细信息,这里有一个链接,用于解释如何以及应该如何在 Samba (3.6.x) 上启用 SMB2。(寻找“SMB2 支持”)
通常只需执行以下操作:
smb.conf
[global] 部分添加max protocol = SMB2