與 Windows 客戶端協商 SMB2/3
最近安裝 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
- 重新啟動您的 Samba。