症状:
ISA服务器安装windows server 2003 和ISA server 2004后,安装和配置过程一切正常,但客户端访问网页时必须多次刷新才能显示,否则将出现代码为64的错误提示。最明显的症状是163邮箱无法登录,如下错误所示:
错误代码 64: 主机不可用
背景: 网关或代理服务器失去连接到 Web 服务器。
或者通过将 ISA Server 2004 用作 Web 代理您访问网站。
在 ISA Server 2004 中启用压缩筛选 Web 筛选器。
Web 站点发送到客户端 HTTP / 0.9 响应。
原因:
最开始以为是操作系统和ISA版本的问题,但重装系统和更新ISA版本结果仍旧一样,后来的ISAcn.org朋友们的帮助下,终于解决了此问题。问题原因在于ISA 2004的http压缩筛选器存在BUG,并且windows 2003 sp2的SNP功能与ISA存在着兼容性问题。
解决方法:
1、按KB944114文章所述,运行如下脚本:
ISA服务器安装windows server 2003 和ISA server 2004后,安装和配置过程一切正常,但客户端访问网页时必须多次刷新才能显示,否则将出现代码为64的错误提示。最明显的症状是163邮箱无法登录,如下错误所示:
错误代码 64: 主机不可用
背景: 网关或代理服务器失去连接到 Web 服务器。
或者通过将 ISA Server 2004 用作 Web 代理您访问网站。
在 ISA Server 2004 中启用压缩筛选 Web 筛选器。
Web 站点发送到客户端 HTTP / 0.9 响应。
原因:
最开始以为是操作系统和ISA版本的问题,但重装系统和更新ISA版本结果仍旧一样,后来的ISAcn.org朋友们的帮助下,终于解决了此问题。问题原因在于ISA 2004的http压缩筛选器存在BUG,并且windows 2003 sp2的SNP功能与ISA存在着兼容性问题。
解决方法:
1、按KB944114文章所述,运行如下脚本:
先将如下脚本存为isa.vbs
Const SE_VPS_GUID = "{143F5698-103B-12D4-FF34-1F34767DEabc}"
Const SE_VPS_NAME = "EnableHotfix944114"
Const SE_VPS_VALUE = true
Sub SetValue()
' Create the root object.
Dim root ' The FPCLib.FPC root object
Set root = CreateObject("FPC.Root")
'Declare the other required objects.
Dim array ' An FPCArray object
Dim VendorSets ' An FPCVendorParametersSets collection
Dim VendorSet ' An FPCVendorParametersSet object
' Get references to the array object
' and to the network rules collection.
Set array = root.GetContainingArray
Set VendorSets = array.VendorParametersSets
. Error Resume Next
Set VendorSet = VendorSets.Item( SE_VPS_GUID )
If Err.Number <> 0 Then
Err.Clear
' Add the item.
Set VendorSet = VendorSets.Add( SE_VPS_GUID )
CheckError
W..Echo "New VendorSet added... " & VendorSet.Name
Else
W..Echo "Existing VendorSet found... value- " & VendorSet.Value(SE_VPS_NAME)
End If
if VendorSet.Value(SE_VPS_NAME) <> SE_VPS_VALUE Then
Err.Clear
VendorSet.Value(SE_VPS_NAME) = SE_VPS_VALUE
If Err.Number <> 0 Then
CheckError
Else
VendorSets.Save false, true
CheckError
If Err.Number = 0 Then
W..Echo "Done with " & SE_VPS_NAME & ", saved!"
End If
End If
Else
W..Echo "Done with " & SE_VPS_NAME & ", no change!"
End If
End Sub
Sub CheckError()
If Err.Number <> 0 Then
W..Echo "An error occurred: 0x" & Hex(Err.Number) & " " & Err.De.ion
Err.Clear
End If
End Sub
SetValue
Const SE_VPS_NAME = "EnableHotfix944114"
Const SE_VPS_VALUE = true
Sub SetValue()
' Create the root object.
Dim root ' The FPCLib.FPC root object
Set root = CreateObject("FPC.Root")
'Declare the other required objects.
Dim array ' An FPCArray object
Dim VendorSets ' An FPCVendorParametersSets collection
Dim VendorSet ' An FPCVendorParametersSet object
' Get references to the array object
' and to the network rules collection.
Set array = root.GetContainingArray
Set VendorSets = array.VendorParametersSets
. Error Resume Next
Set VendorSet = VendorSets.Item( SE_VPS_GUID )
If Err.Number <> 0 Then
Err.Clear
' Add the item.
Set VendorSet = VendorSets.Add( SE_VPS_GUID )
CheckError
W..Echo "New VendorSet added... " & VendorSet.Name
Else
W..Echo "Existing VendorSet found... value- " & VendorSet.Value(SE_VPS_NAME)
End If
if VendorSet.Value(SE_VPS_NAME) <> SE_VPS_VALUE Then
Err.Clear
VendorSet.Value(SE_VPS_NAME) = SE_VPS_VALUE
If Err.Number <> 0 Then
CheckError
Else
VendorSets.Save false, true
CheckError
If Err.Number = 0 Then
W..Echo "Done with " & SE_VPS_NAME & ", saved!"
End If
End If
Else
W..Echo "Done with " & SE_VPS_NAME & ", no change!"
End If
End Sub
Sub CheckError()
If Err.Number <> 0 Then
W..Echo "An error occurred: 0x" & Hex(Err.Number) & " " & Err.De.ion
Err.Clear
End If
End Sub
SetValue
在命令行下运行
c s c r i p t isa.vbs。
3、更改如下注册表键值:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
EnablePMTUDiscovery 设置为1
EnableTCPChimney 设置为0
EnabledRSS 设置为0
4、重启ISA。
再不行,再打上 KB948496补丁.
替代方法:
禁用Add-in--webfilters-httpfilter,再取消http协议与web proxy filter的绑定。但不建议这样做,因为这样ISA将无法进行HTTP应用层进行过滤,对网络安全造成影响。
本文转自 donhuang 51CTO博客,原文链接:http://blog.51cto.com/donhuang/107602