配置消息队列的防火墙
配置消息队列的防火墙
配置消息队列的防火墙
以下部分描述用于穿越防火墙进行消息传递的配置。
穿越防火墙进行 HTTP 消息传递
通过使用 HTTP 传输,可以启用 MSMQ 来利用现有的防火墙支持,并且无需使用消息队列特定的防火墙配置,建议使用 HTTP 穿越防火墙进行消息传递。有关 HTTP 消息传递的详细信息,请参阅 HTTP/HTTPS 消息。
使用消息队列协议穿越防火墙进行消息传递
要使用本机的消息队列协议穿过防火墙来发送消息,需要进行特定的配置以便允许位于防火墙两边的消息队列计算机互相通讯。请注意,为了获得更高的安全性,建议使用 HTTP 消息传递作为穿越防火墙传递消息的解决方案。这些特定的配置设定包括允许位于外部网络的消息队列计算机通过 Internet 连接到内部网络的消息队列计算机。此功能通过打开防火墙上的下列服务端口来实现。
|
TCP |
1801 |
|
RPC |
135, 2101, 2103, 2105 |
|
UDP |
3527, 1801 |
要点
- 如果位于外部网络的消息队列计算机需要访问 Active Directory,强烈建议建立一个使用点对点隧道协议 (PPTP) 的虚拟专用网 (VPN) 连接。否则,网络安全可能会受到威胁。有关 VPN 连接和 PPTP 的详细信息,请参阅 Windows 帮助文件中的点对点隧道协议 (PPTP)。
注意
- 使用直接格式名时,只需打开 TCP 端口。这提供了双向发送功能,但只能进行本地读取。如果需要从远程队列读取,或者需要通过 Active Directory 查询有关公用队列或其他消息队列对象的信息,必须同时打开 RPC 端口。
- 如果在启动消息队列服务时初始选择的 RPC 端口正在使用,RPC 端口 2103 和 2105 可以加 11。消息队列查询 RPC 端口 135 以发现 2xxx 系列端口。
- 与另一消息队列计算机建立连接之前,消息队列将在 UDP 端口 3527 上发送一个 ping 消息,以便验证其他计算机是否响应,而且只有这样才能建立连接。如果不想打开防火墙上的此端口,可以通过将注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\msmq\parameters\UsePing 的值设置为 0 来禁用此功能。这可能会因为禁用 ping 验证而导致某些性能开销。设置注册表后,需重新启动消息队列服务以使更改生效。
警告
- 编辑注册表不当可能会严重损坏您的系统。建议在更改注册表之前,应备份计算机上所有的有用数据。
- 编辑注册表不当可能会严重损坏您的系统。建议在更改注册表之前,应备份计算机上所有的有用数据。
下面的防火墙配置允许位于外部网络的远程消息队列计算机有三种不同的操作模式。
只发送消息
对于能发送消息的远程客户端,必须允许这些客户端访问防火墙上的 TCP 端口 1801。
在这种配置中,远程客户端不能访问 Active Directory,也不能通过内部网络的消息队列服务器路由消息。这意味着远程客户端必须能够通过该端口直接连接到内部网络上的目标计算机。远程客户端可以使用目标队列的直接格式名发送消息。
这种模式不能应用于从属客户端。
发送消息和访问 Active Directory
除打开 TCP 端口 1801 外,通过允许访问 RPC 端口 135 和 2101 来允许远程客户端访问 Active Directory。RPC 端口 135 用于远程客户端与消息队列服务器之间的握手。消息队列服务器还使用 RPC 端口 2101 互相通讯。
假定多址广播网络数据包允许通过防火墙,允许访问 UDP 端口 1801,还允许远程客户端发送广播消息以自动确定其站点。
这种模式不能应用于从属客户端。
发送和接收消息以及访问 Active Directory
除打开 TCP 端口 1801 和 RPC 端口 135 和 2101 外,通过允许访问 RPC 端口 2103 和 2105 还允许远程客户端访问队列并检索位于内部网络的消息队列计算机上的消息。
访问 RPC 端口 2103 和 2105 还允许远程从属客户端使用其网络上的支持服务器发送和接收消息。
浙公网安备 33010602011771号