重要本文包含有关如何修改注册表的信息。在修改注册表之前,请确保备份注册表。确保知道如何在出现问题时还原注册表。有关如何备份、还原和修改注册表的详细信息,请单击以下文章编号以查看 Microsoft 知识库中的文章:
256986 Microsoft Windows 注册表描述
症状
当基于 Microsoft Internet 安全和加速服务器 (ISA) 2004 的计算机在高负载条件下运行时,您可能会遇到 CPU 使用率高的情况。例如,ISA 服务器计算机上的 CPU 使用率可能超过 50%。
原因
由于在 ISA 服务器安装期间应用的 TCP/IP 最大传输单元 (MTU) 设置,可能会出现此行为。为了防止攻击者更改 MTU 值,ISA Server 2004 禁用路径 MTU (PMTU) 发现。此设置在 Microsoft 安全公告 MS05-019 中记录。要查看此公告,请访问以下 Microsoft 网站:
http://www.microsoft.com/technet/security/Bulletin/MS05-019.mspx注意
-
默认情况下,Windows 使用 1,480 字节的 MTU 设置,并接受请求较小数据包大小的 Internet 控制消息协议 (ICMP) 消息。
-
如果在基于 Windows 的服务器上禁用 MTU 发现,则服务器使用 MTU 设置为 576 字节。
解决方案
警告如果使用注册表编辑器或使用其他方法错误地修改注册表,则可能会出现严重问题。这些问题可能需要您重新安装操作系统。微软不能保证这些问题能够得到解决。修改注册表的风险由您自行承担。要解决在 ISA Server 安装期间配置的 MTU 设置导致的行为,请按照以下步骤操作。重要如果已安装 Windows Server 2003 服务包 1 (SP1) 或以下 Microsoft 知识库文章中介绍的修补程序,则必须更改此注册表:
898060安装安全更新 MS05-019 或 Windows Server 2003 服务包 1 后,客户端和服务器之间的网络连接可能会失败
-
单击"开始", 单击"运行",键入"注册",然后单击"确定"。
-
找到,然后右键单击以下注册表项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\EnablePMTUDiscovery值类型: REG_DWORDValue: 0, 1 (False, True) ISA 默认值: 0 (假)注意如果启用PMTUDiscovery条目不可用,则创建该条目。
-
如果合适,根据以下信息设置或更改值:
-
值 = 1将EnablePMTUDiscovery设置为 1 时,TCP 会尝试发现远程主机路径中的 MTU 或最大数据包大小。TCP 可以删除连接使用不同 MMUS 的网络的路径中的路由器上的碎片。TCP 通过发现路径 MTU 并将 TCP 段限制为此大小来这样做。碎片对 TCP 吞吐量有不利影响。
-
值 = 0将EnablePMTUDiscovery设置为 0 时,对于与本地子网上的主机无关的所有连接,将使用 576 字节的 MTU。如果不将此值设置为 0,攻击者可能会强制 MTU 值设置为非常小的值,并过度处理堆栈。备注
-
将EnablePMTUDiscovery设置为 0 时,TCP/IP 的性能和吞吐量将受到影响。在将此值设置为 0 之前,必须完全了解性能吞吐量。
-
安装 ISA Server 2004 或 ISA Server 2004 服务包 1 时,此值也会重置为 0。
-
ISA服务器 2004 服务包 2 不会更改启用PMTU发现的值。
-
-
-
要参与发现过程,请为 ISA 服务器创建 ICMP MTU 访问规则。为此,请按照以下各节中介绍的步骤进行操作,具体取决于您的配置。
-
退出注册表编辑器,然后重启计算机。
ISA 服务器 2004,标准版
-
单击"开始",指向程序,指向微软 ISA 服务器,然后单击ISA 服务器管理。
-
在左侧窗格中,展开"数组名称",然后单击"防火墙策略"。
-
在任务窗格中,单击"工具箱"选项卡,然后单击"协议"。
-
在"协议"下,单击"新建",然后单击"协议"。
-
在"协议定义名称"框中,键入ICMP MTU 发现,然后单击"下一步"。
-
单击"新建", 然后单击"协议类型"列表中的ICMP。
-
在"方向"列表中,单击"发送接收"。
-
在ICMP 代码框中键入4,在ICMP 类型框中键入3,然后单击"确定"。
-
单击"下一步", 单击"完成",然后单击"应用"。
-
在左侧窗格中,右键单击"防火墙策略",单击"新建",然后单击"访问规则"。
-
在"访问规则名称"框中,键入"允许 ICMP MTU 发现",然后单击"下一步"。
-
单击"允许",然后单击"下一步"。
-
在"此规则应用于列表"中,单击"选定协议",然后单击"添加"。
-
在"协议"列表中,展开用户定义的。
-
单击ICMP MTU 发现,单击"添加",单击"关闭",然后单击"下一步"。
-
单击"添加"。
-
在"网络实体"列表中,展开"网络"。
-
单击"外部", 然后单击"添加"。
-
单击"内部", 单击"添加",单击"关闭",然后单击"下一步"。
-
单击"添加"。
-
在"网络实体"列表中,展开"网络"。
-
单击"本地主机", 单击"添加",单击"关闭",然后单击"下一步两次"。
-
单击"完成",然后单击"应用"。
ISA 服务器 2004, 企业版
对于 ISA Server 2004,企业版要参与 ICMP MTU 发现过程,在企业级别创建 ICMP 协议,然后在阵列级别创建 ICMP MTU 访问规则。
如何在企业级别创建 ICMP 协议
-
单击"开始",指向程序,指向微软 ISA 服务器,然后单击ISA 服务器管理。
-
在左侧窗格中,展开企业,然后单击"企业策略"。
-
在任务窗格中,单击"工具箱"选项卡,然后单击"协议"。
-
在"协议"下,单击"新建",然后单击"协议"。
-
在"协议定义名称"框中,键入ICMP MTU 发现,然后单击"下一步"。
-
单击"新建", 然后单击"协议类型"列表中的ICMP。
-
在ICMP 代码框中键入4,在ICMP 类型框中键入3,然后单击"确定"。
-
单击"下一步", 单击"完成",然后单击"应用"。备注使用规则创建向导时,无法为用户定义的 ICMP 协议创建企业访问规则。
有关如何在 ISA Server 2004 企业版策略中使用用户定义的 ICMP 协议的详细信息,请单击以下文章编号查看 Microsoft 知识库中的文章:
902348用户定义的 ICMP 协议未显示在 ISA Server 2004 企业版的新访问规则向导中
如果网络中只有一个阵列,如何手动创建 ICMP MTU 访问规则
-
单击"开始",指向程序,指向微软 ISA 服务器,然后单击ISA 服务器管理。
-
在左侧窗格中,展开数组,然后展开"数组名称"。
-
右键单击"防火墙策略",单击"新建",然后单击"访问规则"。
-
在"访问规则名称"框中,键入"允许 ICMP MTU 发现",然后单击"下一步"。
-
单击"允许",然后单击"下一步"。
-
在"此规则应用于列表"中,单击"选定协议",然后单击"添加"。
-
在"协议"列表中,展开用户定义的。
-
单击ICMP MTU 发现,单击"添加",单击"关闭",然后单击"下一步"。
-
单击"添加"。
-
在"网络实体"列表中,展开"网络"。
-
单击"外部", 然后单击"添加"。
-
单击"内部", 单击"添加",单击"关闭",然后单击"下一步"。
-
单击"添加"。
-
在"网络实体"列表中,展开"网络"。
-
单击"本地主机", 单击"添加",单击"关闭",然后单击"下一步两次"。
-
单击"完成",然后单击"应用"。
如果网络中有多个阵列成员,如何创建 ICMP MTU 访问规则
方法 1
-
在第一个阵列上手动创建 ICMP MTU 访问规则。为此,请按照所述步骤为单个数组创建访问规则。
-
复制 ICMP MTU 访问规则。为此,请按照以下步骤操作:
-
单击"开始",指向程序,指向微软 ISA 服务器,然后单击ISA 服务器管理。
-
在左侧窗格中,展开数组,然后展开"数组名称"。ArrayName是为其创建 ICMP MTU 访问规则的第一个数组。
-
单击"防火墙策略",右键单击"防火墙策略规则下允许 ICMP MTU 发现"规则,然后单击"复制"。
-
-
将 ICMP MTU 访问规则粘贴到每个阵列中。为此,请按照以下步骤操作:
-
在 ISA 服务器管理 Microsoft 管理控制台 (MMC) 中,展开要粘贴 ICMP MTU 访问规则的阵列,然后单击防火墙策略。
-
在中心窗格中,右键单击要立即遵循 ICMP MTU 访问规则的数组策略规则,然后单击"粘贴"。备注如果不存在阵列策略规则,则必须创建新的阵列策略规则,然后才能将 ICMP MTU 访问规则粘贴到阵列策略中。
-
单击"应用"。
-
-
重复步骤 3a 到 3c,直到复制所有阵列成员的 ICMP MTU 访问规则。
方法 2
-
在第一个阵列上手动创建 ICMP MTU 访问规则。为此,请按照所述步骤为单个阵列创建 ICMP MTU 访问规则。
-
导出 ICMP MTU 访问规则。为此,请按照以下步骤操作:
-
在 ISA 服务器管理 MMC 中,展开为其创建 ICMP MTU 访问规则的阵列,然后单击防火墙策略。
-
右键单击"允许 ICMP MTU 发现"规则下的防火墙策略规则,然后单击"导出选定"。
-
在"导出向导"中,单击"下一步"。
-
在"导出首选项"页上,单击"下一步"。
-
在"导出文件位置"页上,单击"浏览"。
-
选择要导出 ICMP MTU 发现规则的位置,在"文件名"框中键入MtuDiscoveryRule,然后单击"打开"。
-
单击"下一步", 然后单击"完成"以退出向导。
-
当进度指示器显示配置已成功导出的消息时,单击"确定"。
-
-
将 ICMP MTU 访问规则导入每个阵列。为此,请按照以下步骤操作:
-
在 ISA 服务器管理 MMC 中,展开要导入 ICMP MTU 访问规则的阵列,然后右键单击防火墙策略。
-
单击"导入"。
-
在"导入向导"中,单击"下一步"。
-
单击"浏览",然后找到在步骤 2f 中保存MtuDiscoveryRule文件的文件夹。
-
单击MtuDiscovery 规则文件,然后单击"打开"。
-
单击"下一步"两次。
-
单击“完成”。
-
当进度指示器显示配置已成功导入的消息时,单击"确定"。
-
单击"应用"。
-
参考
有关 Microsoft Windows 2000 中 PMTU 发现注册表设置的详细信息,请单击以下文章编号以查看 Microsoft 知识库中的文章:
315669如何强化 TCP/IP 堆栈,防止 Windows 2000 中的拒绝服务攻击有关 Microsoft Windows Server 2003 中 PMTU 发现注册表设置的详细信息,请单击以下文章编号以查看 Microsoft 知识库中的文章:
324270如何强化 TCP/IP 堆栈,防止 Windows 服务器 2003 中的拒绝服务攻击