關于打印的 RPC 連接更新Windows 11的若干問題,微軟官方正式回應解決方法。
由于微軟官方在windows更新 22H2 后,改變了部分策略,導致大量共享出來的打印機無法正常打印。適用于:Windows 11版本 22H2 及更高版本的 Windows
Windows 11版本 22H2 引入了對打印組件的更改,這些更改修改了 Windows 計算機在打印或打印相關操作期間相互通信方式。 例如,當您打印到打印服務器或網絡上的另一臺計算機共享的打印機時,更改將生效。 這些更改是為了進一步提高 Windows 中打印的整體安全性。 RPC 連接設置的默認配置強制使用更新且更安全的通信方法。 家庭用戶和企業管理員還可以自定義其環境的設置。
更新詳細信息
-
對于打印相關的通信,默認情況下,TCP 上的 RPC 用于客戶端 - 服務器通信。
- 通過命名管道使用 RPC 在計算機之間打印相關通信仍可用,但默認情況下處于禁用狀態。
- 通過 TCP 使用 RPC 或通過命名管道使用 RPC 進行打印相關通信,可以通過組策略或注冊表進行控制。
-
默認情況下,客戶端或服務器僅偵聽通過 TCP 通過 RPC 傳入的連接。
- 可以將 Spooler 服務配置為通過 RPC 通過命名管道偵聽傳入連接。 這不是默認配置。
- 此行為可以通過組策略或注冊表進行控制。
-
使用 TCP 上的 RPC 時,可以將特定端口配置為用于通信,而不是動態端口。
-
所有計算機都加入域并支持 Kerberos 的環境現在可以強制實施 Kerberos 身份驗證。
有關配置環境的建議
以下內容包含有關如何正確配置環境以避免或解決計算機間通信問題的建議。
允許通過 TCP 通信進行 RPC
最常見的問題是防火墻規則阻止計算機之間的通信。 若要解決防火墻問題,請執行以下步驟:
- 確保 RPC 終結點映射器端口 (135) 未被阻止。
- 在服務器上打開高范圍臨時端口 (49152 – 65535) ,或按照 配置 RPC 中的指南使用下面的某些端口 部分來指定 RPC 的端口范圍。
有關不同端口及其通過系統服務使用的詳細信息,請 參閱 Windows 的服務概述和網絡端口要求。
通過命名管道使用 RPC
不建議使用此配置。 但是,如果當前環境中的 RPC over TCP 不是一個選項,則可以使用它。
- 若要啟用Windows 11版本 22H2 計算機通過命名管道使用 RPC,而不是通過 TCP 通過 RPC 進行通信,請參閱使用 RPC 通過命名管道進行客戶端 - 服務器通信部分。
- 若要啟用Windows 11版本 22H2 計算機通過 RPC 通過命名管道和 RPC 通過 TCP 偵聽傳入連接,請參閱“啟用”偵聽通過命名管道的 RPC 上的傳入連接
還可能需要以下附加配置才能在環境中通過命名管道正確支持 RPC。
- 在服務器/主機上將 RpcAuthnLevelPrivacyEnabled 注冊表值設置為 0 。 請參閱 管理 CVE-2021-1678 (KB4599464 的打印機 RPC 綁定更改的部署) (microsoft.com)
- 某些方案還需要在默認禁用的 SMB2/SMB3 中訪問來賓。 若要啟用它,請參閱 默認情況下在 Windows 中禁用 SMB2 和 SMB3 中的來賓訪問
將 RPC 配置為使用某些端口
請參閱 如何將 RPC 配置為使用某些端口,以及如何使用 IPsec 幫助保護這些端口。
- 若要設置動態/排除的端口范圍,請運行
netsh int
命令。 - 若要將 IPSec 與 netsh 配合使用,請運行
netsh ipsec
命令。 - 若要使用 Windows 防火墻阻止一系列端口,請運行
netsh advfirewall
命令。
上述所有解決方案都是可行的解決方案。 但是,某些解決方案可能比需要為每個端口設置規則的解決方案更容易 (IPSec 和 AdvFirewall) 。 為了進行測試,可以使用動態/排除的端口范圍方法,因為可以指定范圍。 例如:
若要限制動態端口范圍,請運行以下命令:
控制臺
netsh int ipv4 show dynamicport tcp
netsh int ipv4 show dynamicport udp
netsh int ipv4 set dynamicportrange tcp startport=50000 numberofports=255
netsh int ipv4 set dynamicportrange udp startport=50000 numberofports=255
netsh int ipv6 set dynamicportrange tcp startport=50000 numberofports=255
netsh int ipv6 set dynamicportrange udp startport=50000 numberofports=255
然后,重新啟動計算機。
備注
255 是可以設置的最小端口數。
若要進一步限制端口范圍,請運行以下命令:
控制臺
netsh int ip show excludedportrange tcp
netsh int ip show excludedportrange udp
netsh int ipv4 add excludedportrange tcp startport=50000 numberofports=225
netsh int ipv4 add excludedportrange udp startport=50000 numberofports=225
netsh int ipv6 add excludedportrange tcp startport=50000 numberofports=225
netsh int ipv6 add excludedportrange udp startport=50000 numberofports=225
然后,重新啟動計算機。
備注
如果限制端口數過多,則系統上的服務將無法有效通信,并可能導致功能問題。
為 Windows 打印組件配置 RPC 通信
可以通過組策略或直接通過注冊表配置以下設置,以達到所需的效果。 有關每個設置的特定詳細信息,請參閱組策略編輯器中的文檔。
通過命名管道使用 RPC 進行客戶端 - 服務器通信
- 使用組策略啟用:
路徑: 計算機配置>管理模板>打印機>配置 RPC 連接設置
啟用并設置為 RpcOverNamedPipes。 - 使用注冊表啟用設置:
運行reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC" /v RpcUseNamedPipeProtocol /t REG_DWORD /d 1 /f
通過命名管道在 RPC 上啟用偵聽傳入連接
- 通過組策略啟用:
路徑:計算機配置 > 管理模板 > 打印機 > 配置 RPC 偵聽器設置
啟用并設置允許用于 RpcOverNamedPipesAndTcp 的協議。 - 通過注冊表啟用設置:
運行reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC" /v RpcProtocols /t REG_DWORD /d 0x7 /f
通過 TCP 通信使用 RPC 的特定端口
- 通過組策略啟用:
路徑: 計算機配置>管理模板>打印機>通過 TCP 端口 啟用和設置端口號配置 RPC - 通過注冊表啟用設置
運行reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC" /v RpcTcpPort /t REG_DWORD /d <port number> /f
最大端口:65535
強制執行 Kerberos 身份驗證
- 通過組策略啟用:
路徑: 計算機配置>管理模板>打印機>配置 RPC 偵聽器設置
啟用和設置允許用于 Kerberos 的身份驗證協議。 - 通過注冊表啟用設置
運行reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC" /v ForceKerberosForRpc /t REG_DWORD /d 1 /f