Windows Server之浅谈SMB以及SMB小案例分享

时间:2021-09-30 06:16:58

服务器消息区块(英语: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-SmbConnection

Windows Server之浅谈SMB以及SMB小案例分享

SMB各个版本介绍可以参考: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 $false

PS:如果要恢复启用,就用$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 -Force

PS: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