Linux

與 Windows 客戶端協商 SMB2/3

  • November 14, 2018

最近安裝 Win10 1803 後,我注意到我不再能夠在我的 linux 機器上訪問我的 samba 共享。經過一番探勘後發現,現在預設禁用 SMB1,而我的 linux 機器顯然正在使用該 SMB1 作為預設值。

現在我想解決這個問題,以便我的 smb-server 正確協商可用的最高支持 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 可能與解除安裝該功能具有相同的效果。

配置文件

[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 支持”)

通常只需執行以下操作:

  1. 在裡面smb.conf $$ global $$部分添加max protocol = SMB2
  2. 重新啟動您的 Samba。

引用自:https://serverfault.com/questions/913899