动态RPC端口是如何运作的呢?以MAIP客户端与Exchange Server之间的通信为例来说:如图2-1所示,客户端Outlook先连接Exchange Server的RPC Endpoint Mapper (RPC Locator Services,TCP端口135);RPC Endpoint Mapper再通知客户端应该要连接的端口(它是动态的,范围在1024~65535之间),客户端Outlook 再连接Exchange Server的这个动态端口。
 
     Active Directory数据库的复制、outlook(MAPI客户端)与Exchange Server之间的通信、文件复制服务(File Replication Service ,FRS)、分布式文件系统(Distributed File System ,DFS)等默认都是使用动态RPC端口,也就是没有固定端口,这将造成在防火墙设置的难度。还好动态RPC端口可以被限制在一个较小的范围内,因此只要在防火墙上开放这段范围的端口即可。(微软的ISA 防火墙可以很好支持RPC动态端口,无需管理员限制RPC端口是范围)
 
1、限制所有服务的动态RPC端口
     以下介绍如何将计算机所有使用的动态端口限制在指定的范围内。建议从端口号5000开始,因为很多应用程序都用使用RPC端口,因此建议至少包含20个以上的端口。端口号最大为65535

     我们需要修改注册表的方式来将动态RPC端口限制在指定范围内。到要限制动态RPC端口范围的计算机上运行注册表编辑程序REGEDIT.EXE,然后通过以下路径来设置:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc
步骤1:在上述路径下添加一个名为Internet的项
 
步骤2:请在Internet的项之下添加如下三个数值
数值名称<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

数据类型

数值

Ports

REG_MULTI_SZ( 多字符串值 )

自定义,例如 5000 5020

PortsInternetAvailable

REG_SZ( 字符串值 )

Y

UseInternetPorts

REG_SZ( 字符串值 )

Y

 
步骤3:完成修改后,重新启动计算机,检查计算机内所有用到动态RPC端口的程序,是否都会使用5000~5020之间的端口
  C:\> netstat –n
 
2、限制Active Directory数据库复制使用指定的静态端口
     若域功能级别不是windows Server 2008,则同一个域的域控制器之间在复制SYSVOL文件夹时,会使用FRS(File Replication Service).FRS默认使用动态RPC端口,但是我可以指定一个静态端口。到域控制器上运行注册表比编辑程序REGEDIT.EXE,然后通过以下路径来设置:
 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters

     在上述路径添加一个如下表所示的数值,我们将端口号设置为45678,注意此端口不可以与其他服务所使用的端口相同.完成后重新启动。以后这台域控制器的FRS服务所使用的端口将会是45678.
数值名称

数据类型

数值

RPC TCP/IP Port Assignment

REG_DWORD

自定义,例如 45678

 
3、限制FRS使用指定的静态端口
     若域功能级别为Windows Server 2008,则Windows Server 2008域控制器之间在复制SYSVOL文件夹时需要利用DFS复制服务,而DFS也是采用动态RPC端口,但是我们可以使用DFSRDIAG.EXE程序来将其设置到一个静态端口。到域控制器上打开命令提示符,然后执行以下命令:
 C:\> dfsrdiag staticRPC /port:34567

注意:此端口不可以与其他服务所用的端口相同。完成后,重新起动这台域控制器,以后DFS复制服务所使用的端口为34567.

附注:Microsoft从Windows Server 2003 R2开始提供此程序。