https://support.microsoft.com/zh-tw/help/2696547/how-to-enable-and-disable-smbv1-smbv2-and-smbv3-in-windows-and-windows-server
摘要
警告: 我們不建議您停用 SMBv2 或 SMBv3。 停用 SMBv2 或 SMBv3 只是「暫時的」疑難排解措施。 請勿讓 SMBv2 或 SMBv3 處於停用狀態。
在 Windows 7 和 Windows Server 2008 R2 中,停用 SMBv2 將會「停用」(Deactivate) 下列功能:
- 要求複合 – 允許將多個 SMB 2 要求當做單一網路要求傳送
- 更多讀取和寫入 – 較適用於速度更快的網路
- 資料夾和檔案內容的快取 – 用戶端會保留資料夾和檔案的本機複本
- 耐久控制代碼 – 允許出現暫時中斷連線的情況時明確地重新連線至伺服器
- 改良的訊息簽署 – HMAC SHA-256 會取代 MD5 做為雜湊演算法
- 改良的延展性以供檔案共用 – 每部伺服器的使用者、共用及開啟檔案的數目都大幅增加
- 對符號連結的支援
- 用戶端 Oplock Leasing 模型 – 限制用戶端和伺服器之間傳輸的資料,以改善高延遲網路的效能並提升 SMB 伺服器延展性
- 大型 MTU 支援 – 可以完整使用 10 GB 乙太網路
- 改良的電源效率 – 已對伺服器開啟檔案的用戶端可以進入睡眠狀態
在 Windows 8、Windows 8.1、Windows 10、Windows Server 2012 和 Windows Server 2016 中,停用 SMBv3 將會「停用」下列功能 (以及上面清單所述的 SMBv2 功能):
- 明確容錯移轉 – 用戶端可以在維護或容錯移轉期間,不中斷地重新連接至叢集節點
- 向外延展 – 同時存取所有檔案叢集節點上的共用資料
- 多重通道 – 網路頻寬和容錯的彙總 (若用戶端和伺服器之間有多個路徑可用)
- SMB 直接傳輸 – 新增 RDMA 網路支援,以達極高效能、低延遲及低 CPU 使用率
- 加密 – 提供端對端加密,以免在不可信任的網路上遭到竊聽
- 目錄租用 – 透過快取,改善分公司的應用程式回應時間
- 效能最佳化 – 針對小型隨機讀取/寫入 I/O 進行最佳化
其他相關資訊
SMBv3 通訊協定是在 Windows 8 和 Windows Server 2012 中引進。
如需有關 SMBv2 和 SMBv3 功能的詳細資訊,請前往下列 Microsoft TechNet 網站:
如何啟用或停用 SMB 伺服器上的 SMB 通訊協定
Windows 8 和 Windows Server 2012
Windows 8 和 Windows Server 2012 引進全新的 Set-SMBServerConfiguration Windows PowerShell Cmdlet。 這個 Cmdlet 可讓您啟用或停用伺服器元件上的 SMBv1、SMBv2 和 SMBv3 通訊協定。
注意事項 當您在 Windows 8 或 Windows Server 2012 中啟用或停用 SMBv2 時,SMBv3 也會跟著啟用或停用。 之所以出現這個行為,是因為這些通訊協定共用相同的堆疊。
執行 Set-SMBServerConfiguration Cmdlet 之後,您不必重新啟動電腦。
- 若要取得 SMB 伺服器通訊協定設定的目前狀態,請執行下列 Cmdlet:
Get-SmbServerConfiguration | Select EnableSMB1Protocol, EnableSMB2Protocol
- 若要停用 SMB 伺服器上的 SMBv1,請執行下列 Cmdlet:
Set-SmbServerConfiguration -EnableSMB1Protocol $false
- 若要停用 SMB 伺服器上的 SMBv2 和 SMBv3,請執行下列 Cmdlet:
Set-SmbServerConfiguration -EnableSMB2Protocol $false
- 若要啟用 SMB 伺服器上的 SMBv1,請執行下列 Cmdlet:
Set-SmbServerConfiguration -EnableSMB1Protocol $true
- 若要啟用 SMB 伺服器上的 SMBv2 和 SMBv3,請執行下列 Cmdlet:
Set-SmbServerConfiguration -EnableSMB2Protocol $true
Windows 7、Windows Server 2008 R2、Windows Vista 和 Windows Server 2008
若要在執行 Windows 7、Windows Server 2008 R2、Windows Vista 或 Windows Server 2008 的 SMB 伺服器上啟用或停用 SMB 通訊協定,請使用 Windows PowerShell 或「登錄編輯程式」。
Windows PowerShell 2.0 或更新版本的 PowerShell
- 若要停用 SMB 伺服器上的 SMBv1,請執行下列 Cmdlet:
Set-ItemProperty -Path “HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters” SMB1 -Type DWORD -Value 0 -Force
- 若要停用 SMB 伺服器上的 SMBv2 和 SMBv3,請執行下列 Cmdlet:
Set-ItemProperty -Path “HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters” SMB2 -Type DWORD -Value 0 -Force
- 若要啟用 SMB 伺服器上的 SMBv1,請執行下列 Cmdlet:
Set-ItemProperty -Path “HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters” SMB1 -Type DWORD -Value 1 -Force
- 若要啟用 SMB 伺服器上的 SMBv2 和 SMBv3,請執行下列 Cmdlet:
Set-ItemProperty -Path “HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters” SMB2 -Type DWORD -Value 1 -Force
注意 套用這些變更之後,您必須重新啟動電腦。
登錄編輯程式
重要 本文包含如何修改登錄的相關資訊。 修改登錄之前,請務必先備份, 並了解如何在發生問題時還原登錄。 如需有關如何備份、還原和修改登錄的詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
若要啟用或停用 SMB 伺服器上的 SMBv1,請設定下列登錄機碼:
REG_DWORD: 0 = 已停用
REG_DWORD: 1 = 已啟用
預設值: 1 = 已啟用
若要啟用或停用 SMB 伺服器上的 SMBv2,請設定下列登錄機碼:
REG_DWORD: 0 = 已停用
REG_DWORD: 1 = 已啟用
預設值: 1 = 已啟用
如何啟用或停用 SMB 用戶端上的 SMB 通訊協定
Windows Vista、Windows Server 2008、Windows 7、Windows Server 2008 R2、Windows 8 和 Windows Server 2012
注意 當您在 Windows 8 或 Windows Server 2012 中啟用或停用 SMBv2 時,SMBv3 也會跟著啟用或停用。 之所以出現這個行為,是因為這些通訊協定共用相同的堆疊。
- 若要停用 SMB 用戶端上的 SMBv1,請執行下列命令:
sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi
sc.exe config mrxsmb10 start= disabled
- 若要啟用 SMB 用戶端上的 SMBv1,請執行下列命令:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb10 start= auto
- 若要停用 SMB 用戶端上的 SMBv2 和 SMBv3,請執行下列命令:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi
sc.exe config mrxsmb20 start= disabled
- 若要啟用 SMB 用戶端上的 SMBv2 和 SMBv3,請執行下列命令:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb20 start= auto
注意事項
- 您必須在提升權限的命令提示字元中執行這些命令。
- 套用這些變更之後,您必須重新啟動電腦。
使用群組原則停用 SMBv1 伺服器
這個操作會在登錄中設定下列新項目
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
登錄項目: SMB1 REG_DWORD: 0 = 已停用
若要使用「群組原則」進行設定:
- 開啟 [群組原則管理主控台]。 以滑鼠右鍵按一下應包含新喜好設定項目的群組原則物件 (GPO),然後按一下 [編輯]。
- 在 [電腦設定] 主控台樹狀目錄中,展開 [喜好設定] 資料夾,然後展開 [Windows 設定] 資料夾。
- 以滑鼠右鍵按一下 [登錄] 節點,指向 [新增] 並選取 [登錄項目]。
在 [新登錄內容] 對話方塊中選取下列項目:
- 動作: 建立
- 登錄區: HKEY_LOCAL_MACHINE
- 機碼路徑: SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
- 數值名稱: SMB1
- 數值類型: REG_DWORD
- 數值資料: 0
這個操作會停用 SMBv1 伺服器元件。 您必須將這個群組原則套用到網域中所有必要的工作站、伺服器和網域控制站。
注意: 您也可以將 WMI 篩選器設定為排除不支援的作業系統或選取的排除項目,例如 Windows XP。
警告! 由於舊版 Windows XP 或較舊的 Linux 和協力廠商系統 (不支援 SMBv2 或 SMBv3) 需要存取 SYSVOL 或 SMB v1 即將停用的其他檔案共用,因此,在網域控制站進行這些變更時,請小心謹慎。
使用群組原則停用 SMBv1 用戶端
若要停用 SMBv1 用戶端,您必須更新服務登錄機碼,以停用 MRxSMB10 的啟動,並且從 LanmanWorkstation 的項目移除 MRxSMB10 的相依性,以便在不需要先啟動 MRxSMB10 的情況下正常地啟動。
這個操作會更新並取代下列 2 個登錄項目的預設值
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\mrxsmb10
登錄項目: Start REG_DWORD: 4 = 已停用
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation
登錄項目: DependOnService REG_MULTI_SZ: “Bowser”,”MRxSmb20″,”NSI”
注意: 預設值包含現在當做相依性而移除的 MRxSMB10
若要使用「群組原則」進行設定:
- 開啟 [群組原則管理主控台]。 以滑鼠右鍵按一下應包含新喜好設定項目的群組原則物件 (GPO),然後按一下 [編輯]。
- 在 [電腦設定] 主控台樹狀目錄中,展開 [喜好設定] 資料夾,然後展開 [Windows 設定] 資料夾。
- 以滑鼠右鍵按一下 [登錄] 節點,指向 [新增] 並選取 [登錄項目]。
在 [新登錄內容] 對話方塊中選取下列項目:
- 動作: 更新
- 登錄區: HKEY_LOCAL_MACHINE
- 機碼路徑: SYSTEM\CurrentControlSet\services\mrxsmb10
- 數值名稱: Start
- 數值類型: REG_DWORD
- 數值資料: 4
接著,移除剛停用的 MRxSMB10 的相依性
在 [新登錄內容] 對話方塊中選取下列項目:
- 動作: 取代
- 登錄區: HKEY_LOCAL_MACHINE
- 機碼路徑: SYSTEM\CurrentControlSet\Services\LanmanWorkstation
- 數值名稱: DependOnService
- 數值類型:REG_MULTI_SZ
- 數值資料:
- Bowser
- MRxSmb20
- NSI
注意: 這 3 個字串不會有項目符號 (請見下圖)
在許多 Windows 版本中,預設值會包含 MRxSMB10,因此,使用這個多重值字串來取代預設值,將會移除 LanmanServer 的 MRxSMB10 相依性,並使 4 個預設值減為上述 3 個值。
注意: 使用「群組原則管理主控台」時,不需要使用引號或逗號。 只要每行輸入一個項目即可,如上圖所示:
重新開機需求
套用原則且登錄設定就緒之後,目標系統必須重新開機,SMB v1 才會停用。
摘要
如果所有設定都在相同群組原則物件 (GPO) 中,「群組原則管理」將會顯示如下設定。
測試和驗證
一旦設定完成,即可允許原則進行複寫和更新。 基於測試的必要性,請從 CMD.EXE 提示字元執行 gpupdate /force,然後檢閱目標電腦,以確定正確套用登錄設定。 請確認環境中所有其他系統的 SMB v2 和 SMB v3 都正常運作。
警告! 請務必將目標系統重新開機。
如何在 Windows 8.1、Windows 10、Windows 2012 R2 和 Windows Server 2016 中適當地移除 SMB v1
Windows 伺服器: 伺服器管理員方法
Windows 伺服器: PowerShell 方法 (Remove-WindowsFeature FS-SMB1)
Windows 用戶端: 新增或移除程式方法
Windows 用戶端: PowerShell 方法 (Disable-WindowsOptionalFeature -Online -FeatureName smb1protocol)
留言