Windows 11 中打印的 RPC 连接更新
适用于: Windows 11 版本 22H2 及更高版本的 Windows
Windows 11 版本 22H2 引入了对打印组件所做的更改,这些组件可修改 Windows 计算机在打印或打印相关操作期间相互通信的方式。 例如,当打印到由打印服务器或网络上的其他计算机共享的打印机时,更改将生效。 进行了这些更改,以进一步提高 Windows 中打印的整体安全性。 RPC 连接设置的默认配置强制执行更新且更安全的通信方法。 家庭用户和企业管理员可以自定义其环境的设置。
对于打印相关的通信,默认情况下,RPC over TCP 用于客户端 - 服务器通信。
- 使用 RPC over Named Pipes 在计算机之间打印相关的通信仍然可用,但默认处于禁用状态。
- 可以通过组策略或注册表控制通过命名管道通过 TCP 或 RPC 进行打印相关通信。
默认情况下,客户端或服务器仅通过 TCP 通过 RPC 侦听传入连接。
- 可以将后台处理程序服务配置为还可以通过命名管道通过 RPC 侦听传入连接。 这不是默认配置。
- 此行为可由组策略或注册表控制。
使用 RPC over TCP 时,可以将特定端口配置为用于通信,而不是动态端口。
所有计算机都加入域并支持 Kerberos 的环境现在可以强制实施 Kerberos 身份验证。
下面包含有关如何正确配置环境的建议,以避免或解决计算机之间的通信问题。
最常见的问题是防火墙规则阻止计算机之间的通信。 若要解决防火墙问题,请执行以下步骤:
- 确保未阻止 RPC 终结点映射器端口(135)。
- 在服务器上打开高范围临时端口(49152 – 65535),或按照下面的“配置 RPC 以使用某些端口”部分的指南指定 RPC 的端口范围。
有关不同端口及其按系统服务使用的详细信息,请参阅 Windows 的服务概述和网络端口要求。
不建议使用此配置。 但是,如果 RPC over TCP 不是当前环境中的选项,则可以使用它。
- 若要启用 Windows 11 版本 22H2 计算机以通过命名管道使用 RPC 而不是通过 TCP 进行 RPC 进行通信,请参阅“ 通过命名管道使用 RPC 进行客户端 - 服务器通信 ”部分。
- 若要启用 Windows 11 版本 22H2 计算机以通过命名管道通过 RPC 侦听传入连接,并通过 TCP 通过 RPC 侦听 RPC,请参阅“ 通过命名管道 侦听 RPC 上的传入连接”部分
还需要以下附加配置才能在环境中正确支持基于命名管道的 RPC。
- 将 RpcAuthnLevelPrivacyEnabled 注册表值设置为 服务器/主机计算机上的 0 。 请参阅 管理 CVE-2021-1678(KB4599464) 的打印机 RPC 绑定更改的部署(microsoft.com)
- 某些方案还需要 SMB2/SMB3 中的来宾访问,默认情况下禁用。 若要启用它,请参阅 如何在 SMB2 和 SMB3 中启用不安全的来宾登录。
请参阅 如何配置 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
然后重启计算机。
备注
如果限制端口数量过多,则系统上的服务将无法有效通信,并可能导致功能出现问题。
可以通过组策略或直接通过注册表配置以下设置,以实现所需的效果。 有关每个设置的特定详细信息,请参阅组策略编辑器中的文档。
- 使用组策略启用:
路径:计算机配置>管理模板>打印机>配置 RPC 连接设置
启用并设置为 RpcOverNamedPipes。 - 使用注册表启用设置:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC" /v RpcUseNamedPipeProtocol /t REG_DWORD /d 1 /f
运行
- 通过组策略启用:
路径:计算机配置 > 管理模板 > 打印机 > 配置 RPC 侦听器设置
启用和设置允许用于 RpcOverNamedPipesAndTcp 的协议。 - 通过注册表启用设置:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC" /v RpcProtocols /t REG_DWORD /d 0x7 /f
运行
- 通过组策略启用:
路径:计算机配置>管理模板>打印机>通过 TCP 端口配置 RPC 启用并设置端口号 - 通过注册表启用设置
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC" /v RpcTcpPort /t REG_DWORD /d <port number> /f
运行
最大端口:65535
- 通过组策略启用:
路径:计算机配置>管理模板>打印机>配置 RPC 侦听器设置
启用和设置允许用于 Kerberos 的身份验证协议。 - 通过注册表启用设置
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC" /v ForceKerberosForRpc /t REG_DWORD /d 1 /f
运行