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