服务器消息区块(英语:Server Message Block,缩写为SMB,服务器消息区块),又称网络文件共享系统(英语:Common Internet File System,缩写为CIFS),一种应用层网络传输协议,由微软开发,主要功能是使网络上的机器能够计算机文件、打印机、串行端口和通讯等资源。它也提供经认证的进程间通信机能。它主要用在装有Microsoft Windows的机器上,在这样的机器上被称为Microsoft Windows Network。
SMB版本
OS
Windows 10
WS 2016
Windows 8.1
WS 2012 R2
Windows 8
WS 2012
Windows 7
WS 2008 R2
Windows Vista
WS 2008
Previous
versions
Windows 10
WS 2016
SMB 3.1.1
SMB 3.0.2
SMB 3.0
SMB 2.1
SMB 2.0
SMB 1.0
Windows 8.1
WS 2012 R2
SMB 3.0.2
SMB 3.0.2
SMB 3.0
SMB 2.1
SMB 2.0
SMB 1.0
Windows 8
WS 2012
SMB 3.0
SMB 3.0
SMB 3.0
SMB 2.1
SMB 2.0
SMB 1.0
Windows 7
WS 2008 R2
SMB 2.1
SMB 2.1
SMB 2.1
SMB 2.1
SMB 2.0
SMB 1.0
Windows Vista
WS 2008
SMB 2.0
SMB 2.0
SMB 2.0
SMB 2.0
SMB 2.0
SMB 1.0
Previous
versions
SMB 1.0
SMB 1.0
SMB 1.0
SMB 1.0
SMB 1.0
SMB 1.0
备注:早期的Windows 10 和WS 2016 TP的SMB版本是3.1
如何查看SMB版本
在Windows 8或WS 2012 以上,用带管理员的Powershell输入:
Get-SmbConnectionSMB各个版本介绍可以参考:https://en.wikipedia.org/wiki/Server_Message_Block#SMB_3.1.1
SMB 3.1.1 新特性可以参考:https://blogs.technet.microsoft.com/josebda/2015/05/05/whats-new-in-smb-3-1-1-in-the-windows-server-2016-technical-preview-2/
其中比较关注的是SMB 3.1.1 加密算法默认为AES-128-GCM,之前SMB 3.0是用AES-128-CCM。
关于客户端SMB升级问题
目前查找的资料显示,客户端自带的SMB协议没办法通过升级来提高SMB版本,也就是意味着在企业规划文件服务器的时候,需要考虑到企业客户端SMB版本,对应的SMB Server,如上面SMB版本列表。
关于SMB Server关闭低版本SMB支持操作:
在Windows 7和WS 008 R2,禁用SMBV2,会停用以下功能:
请求复合 - 允许将多个SMB 2请求作为单个网络请求发送
更大的读取和写入 - 更好地使用更快的网络
缓存文件夹和文件属性 - 客户端保留文件夹和文件的本地副本
持久句柄 - 如果存在临时断开连接,则允许连接透明地重新连接到服务器
改进的消息签名 - HMAC SHA-256将MD5替换为散列算法
提高文件共享的可扩展性 - 每个服务器的用户数,共享数和打开文件数大大增加
支持符号链接
客户机操作锁租赁模式 - 限制客户机和服务器之间传输的数据,提高高延迟网络的性能并增加SMB服务器可扩展性
大MTU支持 - 完全使用10Gigabye(GB)以太网
提高能源效率 - 向服务器打开文件的客户端可以睡眠
在Windows 8 和WS 2012 禁用SMBv3.会停用以下功能:
透明故障转移 - 客户端在维护或故障转移期间重新连接而不中断群集节点
Scale Out - 对所有文件集群节点上的共享数据的并发访问
多通道 - 如果客户端和服务器之间有多条路径,则可以聚合网络带宽和容错
SMB直接 - 增加了RDMA网络支持,以实现非常高的性能,低延迟和低CPU利用率
加密 - 提供端到端加密,防止在不可信的网络上被窃听
目录租赁 - 通过缓存改进分支机构的应用程序响应时间
性能优化 - 小型随机读/写I / O的优化
在windows 8或WS 2012以上版本可以用PowerShell输入:
禁用SMBV2和SMBV3
Set-SmbServerConfiguration -EnableSMB2Protocol $false禁用SMBV1
Set-SmbServerConfiguration -EnableSMB1Protocol $falsePS:如果要恢复启用,就用$true值。
在Windows Vista或WS 2008以上版本用PowerShell输入:
禁用SMBV2和SMBV3
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 -Force禁用SMBV1
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 0 -ForcePS:Value的值,0表示禁用 ,1表示启用
在客户端禁用SMB协议
禁止SMBV1
sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsisc.exe config mrxsmb10 start= disabled启用SMBV1
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi sc.exe config mrxsmb10 start= auto禁用SMBV2和v3
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi sc.exe config mrxsmb20 start= disabled启用SMBV2和v3
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi sc.exe config mrxsmb20 start= auto分享下小案例
环境:Windows Server 2012 R2文件服务器
客户端:Windows 7+10