<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[gOxiA=苏繁=SuFan Blog]]></title> 
<link>https://maytide.net/index.php</link> 
<description><![CDATA[gOxiA,苏繁,sufan,Microsoft MVP]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[gOxiA=苏繁=SuFan Blog]]></copyright>
<item>
<link>https://maytide.net/read.php/1670.htm</link>
<title><![CDATA[[CRM]在 Windows 8 上为 Outlook 2013 设置 CRM for Outlook]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Archive]]></category>
<pubDate>Sun, 07 Apr 2013 10:35:00 +0000</pubDate> 
<guid>https://maytide.net/read.php/1670.htm</guid> 
<description>
<![CDATA[ 
	<p><a href="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/dynam.png"><img title="dynam" border="0" alt="dynam" src="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/dynam_thumb.png" width="260" height="80"></a></p> <p><font size="4"><strong>在 Windows 8 上为 Outlook 2013 设置 CRM for Outlook</strong></font></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;接上篇《<a href="http://goxia.maytide.net/read.php/1668.htm" target="_blank">安装 Microsoft Dynamics CRM 2011 Workgroup</a>》我们完成了 CRM Server 的安装，在文末 gOxiA 曾提到测试的客户端是 Windows 8 + Office 2013，并且在初次设置时遇到了一些麻烦，所以本文将与大家分享在 Windows 8 上为 Outlook 2013 设置 CRM for Outlook 的过程。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Microsoft Dynamics CRM 2011 除了支持通过浏览器访问以外，还可以与 Outlook 集成使用。当我们首次访问 CRM 站点时会提示获取 CRM for Outlook 的提示，为了获得更好的体验并提高效率，建议安装 CRM for Outlook，根据提示下载并安装。</p> <p><a href="http://goxia.maytide.net/ftpupfiles/CRM_FDF4/image.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://goxia.maytide.net/ftpupfiles/CRM_FDF4/image_thumb.png" width="634" height="528"></a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;但是在配置向导中输入地址进行连接测试时失败了，提示“与 Microsoft Dynamics CRM 服务器通信时出现问题。服务器可能不可用。请稍后重试。如果此问题仍然存在，请与您的系统管理员联系。”而故障的要点是“调用方未由服务进行身份验证。”具体可参考下图：</p> <p><a href="http://goxia.maytide.net/ftpupfiles/CRM_FDF4/crm_error_1.png"><img title="crm_error_1" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="crm_error_1" src="http://goxia.maytide.net/ftpupfiles/CRM_FDF4/crm_error_1_thumb.png" width="610" height="528"></a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在网上查了一下 KB 提示要先进行 Web 访问测试，但之前 Web 访问是正常的，而 CRM for Outlook 连接配置向导只让填写了 CRM Server 地址而未让我填写账号和密码，因为测试的客户端未加入到 AD，所以问题应该出在身份验证的过程上。回忆之前《<a href="http://goxia.maytide.net/read.php/1630.htm" target="_blank">在未加入域的客户端计算机上自动登录 SharePoint Companyweb</a>》这篇文章，颇为相似！于是将 CRM Server 的地址加入到 IE 的本地 Intranet 区域中，再次测试故障解除。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;但接下来又出现了另外一个错误“无法加载与 8082 版本的 Ado.NET 提供程序相对应的 SQL Server Compact 的本机组件。请安装 SQL Server Compact 的正确版本。有关详细信息，请参阅知识库文章 974247。”参阅了 <a href="http://support.microsoft.com/kb/974247" target="_blank">KB974247</a> 也安装了给出的 SQL Server Compact 但还是出现一样的故障，后来继续搜索才找到了最终正确的版本，即安装 <a href="http://support.microsoft.com/kb/2289547/zh-cn" target="_blank">SQL Server Compact 3.5 Service pack 2 的累计更新 2</a>（<a href="http://support.microsoft.com/kb/2289547/zh-cn" target="_blank">KB2289547</a>），注意：该补丁需要向微软注册申请。</p> <p><a href="http://goxia.maytide.net/ftpupfiles/CRM_FDF4/crm_error_2.png"><img title="crm_error_2" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="crm_error_2" src="http://goxia.maytide.net/ftpupfiles/CRM_FDF4/crm_error_2_thumb.png" width="528" height="528"></a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;现在终于设置连接上了，可进入 Outlook 2013 后，当切换至 CRM for Outlook 时又出现了错误，如下图所示！不过这个问题比较容易解决，只需为 CRM Server 打上最新的补丁即可。</p> <p><a href="http://goxia.maytide.net/ftpupfiles/CRM_FDF4/crm_error_3.png"><img title="crm_error_3" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="crm_error_3" src="http://goxia.maytide.net/ftpupfiles/CRM_FDF4/crm_error_3_thumb.png" width="634" height="344"></a></p><br/>Tags - <a href="https://maytide.net/go.php/tags/microsoft/" rel="tag">microsoft</a> , <a href="https://maytide.net/go.php/tags/dynamics/" rel="tag">dynamics</a> , <a href="https://maytide.net/go.php/tags/crm/" rel="tag">crm</a> , <a href="https://maytide.net/go.php/tags/2011/" rel="tag">2011</a> , <a href="https://maytide.net/go.php/tags/windows/" rel="tag">windows</a> , <a href="https://maytide.net/go.php/tags/8/" rel="tag">8</a> , <a href="https://maytide.net/go.php/tags/outlook/" rel="tag">outlook</a> , <a href="https://maytide.net/go.php/tags/2013/" rel="tag">2013</a>
]]>
</description>
</item><item>
<link>https://maytide.net/read.php/1668.htm</link>
<title><![CDATA[[CRM]安装 Microsoft Dynamics CRM 2011 Workgroup]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Archive]]></category>
<pubDate>Tue, 02 Apr 2013 06:17:14 +0000</pubDate> 
<guid>https://maytide.net/read.php/1668.htm</guid> 
<description>
<![CDATA[ 
	<p><a href="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/dynam.png"><img title="dynam" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="dynam" src="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/dynam_thumb.png" width="260" height="80"></a></p> <p><font color="#fd3f0d" size="4"><strong>安装 Microsoft Dynamics CRM 2011 Workgroup</strong></font></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因为 <a href="http://goxia.maytide.net/" target="_blank">gOxiA</a> 所在的公司要开始 Microsoft Office 365 的业务，为了能够更好的为用户服务，计划在内部部署一套 CRM 系统。而公司的级别只能使用 Microsoft Dynamics CRM 2011 Workgroup（CRM 2011 wks），所以本文将以此作为演示环境与大家分享 CRM 2011 wks 的安装过程。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 与以往一样，在开始接触一个新的微软产品时应当养成一个良好的习惯，那就是去 TechNet 上阅读一遍相关的 Library，再上手进行操作。尤其像产品软件需求方面的资料一定要了解，这样便能有效避免不该发生的问题故障。CRM 2011 的实施指南可以参考：<a title="http://technet.microsoft.com/zh-cn/library/hh699811.aspx" href="http://technet.microsoft.com/zh-cn/library/hh699811.aspx">http://technet.microsoft.com/zh-cn/library/hh699811.aspx</a>，在规划部分的要点便是 <a href="http://technet.microsoft.com/zh-cn/library/hh699671.aspx" target="_blank">Microsoft Dynamics CRM 2011 的软件要求</a>。结合公司实际情况，CRM 2011 wks 的操作系统选定为 Windows Server 2008 R2，数据库为 SQL Server 2008 R2。 </p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 系统方面，Windows Server 2008 R2 安装了 IIS 角色，而数据库方面 SQL Server 除了要安装基本的组件外，还需要 SQL Server 全文索引，和 Reporting Services 并确保安装后 SQL Server 代理服务为运行状态。其他到没有什么要特别注意的，插入 CRM 2011 的安装光盘，启动安装向导，会首先检测需求组件是否已经安装，当然像 IIS 这类的角色需求还是需要提前安装好的，CRM 2011 安装向导不会帮你自动安装的。</p> <p><a href="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/1.png"><img title="1" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="1" src="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/1_thumb.png" width="633" height="476"></a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因为 SQL Server 是部署在 CRM Server 上的，所以在数据库服务器选择这里，选定当前 CRM 服务器，并确认为“创建新部署”。</p> <p><a href="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/2.png"><img title="2" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="2" src="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/2_thumb.png" width="633" height="476"></a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因为 CRM 2011 会创建相关的安全组，所以请为这些安全组先创建一个 OU。</p> <p><a href="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/3.png"><img title="3" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="3" src="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/3_thumb.png" width="633" height="476"></a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因为是测试部署，所以服务账户配置都指定为 Network Service。</p> <p><a href="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/4.png"><img title="4" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="4" src="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/4_thumb.png" width="633" height="476"></a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果要将 CRM 站点部署到当前网站上，则在“选择网站”处选择，否则可以按照端口号创建新的网站。</p> <p><a href="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/5.png"><img title="5" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="5" src="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/5_thumb.png" width="633" height="476"></a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; “电子邮件路由器服务器名称”通常为邮件服务器的名称，这里也可以先略过配置。</p> <p><a href="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/6.png"><img title="6" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="6" src="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/6_thumb.png" width="633" height="476"></a></p> <p>在“组织设置”页面，为当前公司命名一个组织名，并为其指定数据库的名称，其他默认即可。</p> <p><a href="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/7.png"><img title="7" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="7" src="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/7_thumb.png" width="633" height="476"></a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因为报表服务器也安装在 CRM 上，所以地址为“http://crm/reportserver”。</p> <p><a href="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/8.png"><img title="8" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="8" src="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/8_thumb.png" width="633" height="476"></a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在系统检查部分，有些消息是可以忽略并继续的。</p> <p><a href="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/9.png"><img title="9" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="9" src="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/9_thumb.png" width="633" height="476"></a></p> <p><a href="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/9-1.png"><img title="9-1" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="9-1" src="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/9-1_thumb.png" width="633" height="476"></a></p> <p><a href="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/10.png"><img title="10" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="10" src="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/10_thumb.png" width="633" height="476"></a></p> <p><a href="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/11.png"><img title="11" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="11" src="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/11_thumb.png" width="633" height="476"></a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最后完成 CRM Server 部分的安装，基本上是一路“下一步”过来的，非常简单！之后安装向导会自动弹出 Microsoft Dynamics CRM Reporting Extension 的安装向导，跟随向导一步步配置操作即可，可参考下面的截图。</p> <p><a href="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/re1.png"><img title="re1" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="re1" src="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/re1_thumb.png" width="633" height="476"></a></p> <p><a href="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/re2.png"><img title="re2" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="re2" src="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/re2_thumb.png" width="633" height="476"></a></p> <p><a href="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/re3.png"><img title="re3" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="re3" src="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/re3_thumb.png" width="633" height="476"></a></p> <p><a href="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/re4.png"><img title="re4" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="re4" src="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/re4_thumb.png" width="633" height="476"></a></p> <p><a href="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/re5.png"><img title="re5" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="re5" src="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/re5_thumb.png" width="633" height="476"></a></p> <p><a href="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/re6.png"><img title="re6" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="re6" src="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/re6_thumb.png" width="633" height="476"></a></p> <p><a href="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/re7.png"><img title="re7" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="re7" src="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/re7_thumb.png" width="633" height="476"></a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 全部过程安装结束后，便可以通过浏览器访问 CRM Server“http://crm”。客户端除了可以通过 Web 浏览器方式来访问使用，也可以与 Outlook 集成使用，gOxiA参与测试的客户端是一台 Windows 8 + Office 2013，在连接配置过程中遇到一些问题，介于篇幅的原因将会在下一篇文章单独与大家分享。</p> <p><a href="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/crm_http_main.png"><img title="crm_http_main" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="crm_http_main" src="http://goxia.maytide.net/ftpupfiles/CRM-Microsoft-Dynamics-CRM-2011_C1DA/crm_http_main_thumb.png" width="634" height="429"></a></p>
]]>
</description>
</item><item>
<link>https://maytide.net/read.php/1583.htm</link>
<title><![CDATA[[TMG] 经验分享：因操作系统与TMG网络适配器配置信息未同步引发的网络访问故障]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Archive]]></category>
<pubDate>Fri, 27 Apr 2012 07:14:13 +0000</pubDate> 
<guid>https://maytide.net/read.php/1583.htm</guid> 
<description>
<![CDATA[ 
	<p><img src="http://goxia.maytide.net/ftpupfiles/Exchange_DD0C/Forefront_TMG2010_rgb_261x50.png"></p> <p><font color="#fd3f0d" size="4"><strong>经验分享：因操作系统与TMG网络适配器配置信息未同步引发的网络访问故障</strong></font></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;前段时间在协助一家企业进行 TMG 的评估工作，大致的环境是在位于两个城市的中心机房各部署一套 TMG，并使用 PPTP 实现了 Site-to-Site VPN，从而将两地的 IT 环境相联。但是遇到了一系列的诡异问题，特与大家分享一下。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;初期的测试都是非常顺利的，但是在运行一段时间后，评估环境内的用户反应有某银行的网上银行站点无法访问，通过 Live Log 以及 Network Capture 对一系列访问数据进行分析发现 Live Log 中记录的都是 RST对方银行使用了某种网络优化手段，对子站点实施了线路优化，但是又有违常规，简单说当用户访问“http://www.xxxbank.com”时对应的是一个 IP 地址，但是当通过该站点页面访问二级目录“http://www.xxxbank.com/enterprise”时却会被重定向到另外一个 IP 地址上。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;利用 ping 等命令也做了简单的测试，发现“www.xxxbank.com”是别名解析，对应的是“www.lc.xxxbank.com”，而这个域名会自动识别用户 IP 来重定向到对应的另一个主机域名-&gt;网络 IP。这一系列的访问过程却让评估环境下的 TMG 用户出现了无法访问的故障，而这一故障并不是一直会重现，偶尔能够正常访问。当错误发生时在 Live Log 中能看到是因为 RST 相关的错误，此外在 TMG 本机访问银行是没有问题的，如果将客户端配置为 Web Proxy 便能恢复正常。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;而在另外一个城市的 TMG 环境下测试发现均未出现此类的故障。但是两地解析域名所得到的 IP 会有所不同，问题出在了哪里呢？！曾经与银行方面也联系过，未果！后来在微软技术支持工程师的帮助下了解到，TMG 在创建 Site-to-Site VPN 后，会将对端网络中的 DNS 作为本机的主 DNS，那么就会出现 TMG 本机上访问网站时得到的解析结果是 VPN 对端网络里的 DNS Server 给出的，而本地 TMG 后端的用户解析则是本地 DNS Server 给出的，其结果将会得到两个解析数据。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;之后在“路由和远程访问”中对 VPN 拨号连接进行了设置，将 TCP/IP 下的 DNS 手动改为 TMG 本地网中的 DNS Server 地址，随后的一段时间里访问看起来是“正常了”。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;果然，好景不长！评估环境的用户又反应访问某市公安局网站（也实施了线路优化）时无法访问，这次即使为客户端配置 Web Proxy 也无济于事，同时在 TMG 本机测试也无法访问，问题到底出在哪里了呢？！从早期检测到的 RST 未返回数据包到 FIN 三次握手失败等一系列的故障看，TMG 自身一定是存在问题。先后在多个 TMG 环境下对比测试，排除了 TMG 软件设计方面可能存在的不兼容问题，那么就要将注意力集中到这台 TMG 配置上。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最后发现，在 TMG 网络适配器中，当前外网的网卡默认 IP 与操作系统的外网网卡默认 IP 不同（注：TMG 外网绑定了多个 IP 地址），问题可能就出在这里。当 TMG 访问外部时，可能使用系统配置的 IP 作为宿主，但是客户端访问时却使用了 TMG 配置的 IP，这有可能就是引发 RST 和 FIN 问题的最终原因。随后将两个配置信息重新修改一致后，所有的访问都恢复了正常，之前的故障未在出现！</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;但是，引发数据不同步的原因一直不明，回忆之前的部署过程，有过两个管理员同时配置 TMG，而服务器也因为内存问题出现过故障，还导致 TMG 缓存配置与数据库不一致的问题。目前评估工作一直在进行着，最近又接到通知 TMG 在华停止销售，因为销售许可到期，不过听闻也许在五月底就能恢复销售！</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;总之，TMG 作为一款受青睐的企业级的网络安全和加速产品，在华业务任重道远……</p><br/>Tags - <a href="https://maytide.net/go.php/tags/microsoft/" rel="tag">microsoft</a> , <a href="https://maytide.net/go.php/tags/threat/" rel="tag">threat</a> , <a href="https://maytide.net/go.php/tags/management/" rel="tag">management</a> , <a href="https://maytide.net/go.php/tags/gateway/" rel="tag">gateway</a> , <a href="https://maytide.net/go.php/tags/2010/" rel="tag">2010</a> , <a href="https://maytide.net/go.php/tags/tmg/" rel="tag">tmg</a>
]]>
</description>
</item><item>
<link>https://maytide.net/read.php/1547.htm</link>
<title><![CDATA[[TMG] 解决 TMG 服务器日志报 ADWS ID1202 错误的问题]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Archive]]></category>
<pubDate>Mon, 19 Dec 2011 12:48:02 +0000</pubDate> 
<guid>https://maytide.net/read.php/1547.htm</guid> 
<description>
<![CDATA[ 
	<p><img src="http://goxia.maytide.net/ftpupfiles/Exchange_DD0C/Forefront_TMG2010_rgb_261x50.png"> <font color="#fd3f0d" size="4"><strong>解决 TMG 服务器日志报 ADWS ID1202 错误的问题</strong></font></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Forefront Threat Management Gateway（TMG）2010 需要 ADAM 支持，因为它将配置信息都存储在 ADAM 中！所以在正式安装前需要执行“运行准备工具”，而这个阶段会根据用户的选择（安装”Forefront TMG 服务和管理”） 安装必须要的组件支持，如“Active Directory 轻型目录服务”即：AD LDS，用于存储 TMG 配置数据。</p> <p><a href="http://goxia.maytide.net/ftpupfiles/TMG--TMG--ADWS_11C69/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://goxia.maytide.net/ftpupfiles/TMG--TMG--ADWS_11C69/image_thumb.png" width="640" height="343"></a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;但是，在部署完 TMG 之后，我们会在“应用程序和服务日志”下的“Active Directory Web Services”中看到产生了很多的错误日志，如下图所示：</p> <p><a href="http://goxia.maytide.net/ftpupfiles/TMG--TMG--ADWS_11C69/ADWS_1202.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="ADWS_1202" border="0" alt="ADWS_1202" src="http://goxia.maytide.net/ftpupfiles/TMG--TMG--ADWS_11C69/ADWS_1202_thumb.png" width="644" height="446"></a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;仔细查看日志，来源“ADWS”，事件ID“1202”，大致内容“现在该计算机正在托管指定的目录实例，但 Active Directory Web 服务无法为其服务。Active Directory Web 服务将定期重试该操作。……”</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;搜索了 Microsoft Support 未找到任何线索，考虑到本机未安装有 Web 服务，所以果断在“服务”管理器中将 Active Directory Web Services 服务禁用（<font style="background-color: #ffff00">sc config adws start= disabled</font>）。重新启动 TMG 错误日志消失，系统和应用程序工作正常，未发现不良影响！至此问题解决！</p><br/>Tags - <a href="https://maytide.net/go.php/tags/microsoft/" rel="tag">microsoft</a> , <a href="https://maytide.net/go.php/tags/tmg/" rel="tag">tmg</a> , <a href="https://maytide.net/go.php/tags/2010/" rel="tag">2010</a> , <a href="https://maytide.net/go.php/tags/adws/" rel="tag">adws</a> , <a href="https://maytide.net/go.php/tags/1202/" rel="tag">1202</a>
]]>
</description>
</item><item>
<link>https://maytide.net/read.php/1546.htm</link>
<title><![CDATA[[TMG] 解决因 TMG 配置数据不完整引发的 MMC 操作故障]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Archive]]></category>
<pubDate>Fri, 16 Dec 2011 09:05:56 +0000</pubDate> 
<guid>https://maytide.net/read.php/1546.htm</guid> 
<description>
<![CDATA[ 
	<p><img src="http://goxia.maytide.net/ftpupfiles/Exchange_DD0C/Forefront_TMG2010_rgb_261x50.png">&nbsp;&nbsp;&nbsp;&nbsp;<font size="3">解决因 TMG 配置数据不完整引发的 MMC 操作故障</font></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最近遇到一个 TMG 故障，在使用 TMG 控制器进行配置操作时没有问题，但是保存时提示错误，仔细查看发现在规则列表中竟然有两个规则只有名称而没有其他配置信息，当去操作或查看时会报下面的错误截图，导致无法对 TMG 进行操作和修改。</p> <p><a href="http://goxia.maytide.net/ftpupfiles/e756ace17e06_E544/TMG_MMC_Error.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="TMG_MMC_Error" border="0" alt="TMG_MMC_Error" src="http://goxia.maytide.net/ftpupfiles/e756ace17e06_E544/TMG_MMC_Error_thumb.png" width="639" height="239"></a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;回忆一下之前的操作，极有可能是因为两个管理员同时配置 TMG 在保存时，配置数据未能同步，从而引发了此故障问题。之后给微软开了 Case，提出了两个解决办法：</p> <ol> <li>使用 TMG 光盘对安装进行修复。（PS：感觉这个解决办法风险太大，首先要暂停网络访问，而且可能会导致之前的规则丢失。）</li> <li>直接操作 TMG 配置数据库，从数据库中删除不完整的规则。（PS：我个人认为这是一种可行的办法，但是直接修改 TMG 数据库的风险也很大，而且要找到规则对应的 GUID。）</li></ol> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最终选择了第二种解决方法，现在要解决两个问题：如何访问到 TMG 配置数据库；如何确认规则所对应的 GUID。前者，微软工程师给了连接到 TMG 配置数据库的方法，可参考 <a href="http://goxia.maytide.net/" target="_blank">gOxiA</a> 之前些的日志《<a href="http://goxia.maytide.net/read.php/1545.htm" target="_blank">使用 ADSI 访问 TMG 的配置数据库</a>》。而后者，gOxiA 尝试导出 TMG 的规则，进行查看果然找到了规则对应的 GUID，如下图所示：</p> <p><a href="http://goxia.maytide.net/ftpupfiles/e756ace17e06_E544/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://goxia.maytide.net/ftpupfiles/e756ace17e06_E544/image_thumb.png" width="644" height="353"></a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;其中“StorageName”便是规则所对应的 GUID，而且知道规则隶属于“PolicyRule”，接下来参考《<a href="http://goxia.maytide.net/read.php/1545.htm" target="_blank">使用 ADSI 访问 TMG 的配置数据库</a>》去操作 TMG 的配置数据库（ADAM），如下图所示：</p> <p><a href="http://goxia.maytide.net/ftpupfiles/e756ace17e06_E544/image_3.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://goxia.maytide.net/ftpupfiles/e756ace17e06_E544/image_thumb_3.png" width="644" height="424"></a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;展开 CN=FPC2，CN=Array-Root，CN-Arrays，CN=GUID，CN=ArrayPolicy，CN=PolicyRules。从字面上不难理解这些项的意思，但是其中 FPC2 表示 TMG 的配置数据库，而导出的规则文件中则为 FPC4，gOxiA 个人认为可能是微软为了区分数据等级，将 FPC2 认定为本机配置，FPC4 为备份配置。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;由于 TMG 的 ADAM 无法查询或筛选，要从 PolicyRules 下找到其 GUID 也确实是件难事，gOxiA 用了一个比较笨的办法，就是先导出列表，然后使用带有标注行号的编辑器打开导出的列表文件进行搜索。一旦找到对应的 GUID 便根据位置靠上从上数的原则确定在第几行，然后再到 ADSI 中去定位！</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最终结果当然是令人满意，未使用修复安装便解决了此故障！ 如果有遇到同样问题的朋友，可以借鉴一下，希望会有帮助！此外，建议对 TMG 有兴趣的朋友可以看一下《<a href="http://www.isaserver.org/tutorials/Microsoft-Forefront-TMG-Storage-101.html" target="_blank">TMG Storage</a>》这篇文章，有介绍 TMG 的配置存储机制。其中就讲到了 TMG 还会在注册表中缓存一份配置信息，如果要重建注册表中的配置缓存，可以使用下面的办法：</p> <ul> <li>首先在 CMD 中执行如下命令行：<br/><div class="code">reg add HKLM＼SOFTWARE＼Microsoft＼RAT＼Stingray＼Debug＼ISACTRL /v CTRL_MIXER_CACHE_BUILD_NEW_IN_NEXT_UPDATE /t REG_DWORD /d 1 /f</div></li> <li>然后重启 TMG 服务</li> <li>最后再在 CMD 中执行如下命令行：<br/><div class="code">reg add HKLM＼SOFTWARE＼Microsoft＼RAT＼Stingray＼Debug＼ISACTRL /v CTRL_MIXER_CACHE_BUILD_NEW_IN_NEXT_UPDATE /t REG_DWORD /d 0 /f</div></li></ul> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;原文可参考：<a href="http://blogs.technet.com/b/isablog/archive/2009/01/26/rebuilding-isa-configuration-cache.aspx" target="_blank">Rebuilding ISA Configuration Cache</a></p><br/>Tags - <a href="https://maytide.net/go.php/tags/microsoft/" rel="tag">microsoft</a> , <a href="https://maytide.net/go.php/tags/tmg/" rel="tag">tmg</a> , <a href="https://maytide.net/go.php/tags/2010/" rel="tag">2010</a> , <a href="https://maytide.net/go.php/tags/adam/" rel="tag">adam</a> , <a href="https://maytide.net/go.php/tags/adsi/" rel="tag">adsi</a> , <a href="https://maytide.net/go.php/tags/policyrules/" rel="tag">policyrules</a> , <a href="https://maytide.net/go.php/tags/array/" rel="tag">array</a>
]]>
</description>
</item><item>
<link>https://maytide.net/read.php/1545.htm</link>
<title><![CDATA[[TMG] 使用 ADSI 访问 TMG 的配置数据库]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Archive]]></category>
<pubDate>Thu, 15 Dec 2011 14:29:06 +0000</pubDate> 
<guid>https://maytide.net/read.php/1545.htm</guid> 
<description>
<![CDATA[ 
	<p><a href="http://goxia.maytide.net/ftpupfiles/Exchange_DD0C/Forefront_TMG2010_rgb_261x50.png"><img title="Forefront_TMG2010_rgb_261x50" border="0" alt="Forefront_TMG2010_rgb_261x50" src="http://goxia.maytide.net/ftpupfiles/Exchange_DD0C/Forefront_TMG2010_rgb_261x50_thumb.png" width="261" height="50"></a>&nbsp;&nbsp;使用 ADSI 访问 TMG 的配置数据库</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.microsoft.com/en-us/server-cloud/forefront/threat-management-gateway.aspx" target="_blank">Forefront Threat Management Gateway 2010</a>（TMG 2010） 的前身便是 Internet Security and Acceleration Server（ISA），他是 MS ITPro 熟知的一款网络安全产品，被广泛应用在企业中，担当安全网关、Web 代理、Web 缓存、VPN 和发布内部服务的角色。在 ISA 升级到 TMG 后，其功能也更加强大，稳定性也有所提升！但是任何一款产品都并非完美，总会出现一些问题，表面看来可能致命，其实基本上都能进行排错解决！</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;今天 <a href="http://goxia.maytide.net/" target="_blank">gOxiA</a> 要与大家分享的是如何使用 ADSI 工具访问 TMG 的配置数据库。TMG 配置数据通过 ADAM 进行存储，我们可以用 ADSI 工具进行访问操作。</p> <ul> <li>首先打开“管理工具”中的“ADSI 编辑器”，在左侧窗体选择“<font style="background-color: #ffff00">ADSI 编辑器</font>”并鼠标右键点击“连接到…”</li> <li>在“连接点”的“选择或键入可分辨名称或命名上下文”的下拉框键入“<font style="background-color: #ffff00">CN=FPC2</font>”</li> <li>在“计算机”的“选择或键入域或服务器”下拉框中键入“<font style="background-color: #ffff00">localhost:2171</font>”</li> <li>最后点击“确定”</li></ul> <p><a href="http://goxia.maytide.net/ftpupfiles/e2d0353002e2_127F0/ADSI-TMG-ADAM.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="ADSI-TMG-ADAM" border="0" alt="ADSI-TMG-ADAM" src="http://goxia.maytide.net/ftpupfiles/e2d0353002e2_127F0/ADSI-TMG-ADAM_thumb.png" width="644" height="393"></a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;只要能够连接到 TMG 的配置数据库，那么几乎所有在 TMG 控制器操作时出现的故障都能够解决。后续日志 gOxiA 会与大家分享一个典型的 TMG 排错案例！</p><br/>Tags - <a href="https://maytide.net/go.php/tags/microsoft/" rel="tag">microsoft</a> , <a href="https://maytide.net/go.php/tags/tmg/" rel="tag">tmg</a> , <a href="https://maytide.net/go.php/tags/isa/" rel="tag">isa</a> , <a href="https://maytide.net/go.php/tags/adsi/" rel="tag">adsi</a> , <a href="https://maytide.net/go.php/tags/adam/" rel="tag">adam</a> , <a href="https://maytide.net/go.php/tags/css/" rel="tag">css</a>
]]>
</description>
</item><item>
<link>https://maytide.net/read.php/1536.htm</link>
<title><![CDATA[[TMG] 多外网 IP 环境下为特定计算机或网络集指定 NAT 出口]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Archive]]></category>
<pubDate>Mon, 24 Oct 2011 03:49:30 +0000</pubDate> 
<guid>https://maytide.net/read.php/1536.htm</guid> 
<description>
<![CDATA[ 
	<p><a href="http://goxia.maytide.net/ftpupfiles/Exchange_DD0C/Forefront_TMG2010_rgb_261x50.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Forefront_TMG2010_rgb_261x50" border="0" alt="Forefront_TMG2010_rgb_261x50" src="http://goxia.maytide.net/ftpupfiles/Exchange_DD0C/Forefront_TMG2010_rgb_261x50_thumb.png" width="261" height="50"></a> 多外网 IP 环境下为特定计算机或网络集指定 NAT 出口</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="goxia.maytide.net/" target="_blank">gOxiA</a> 所在的公司前段时间进行了并网，将办公室网络与机房主干网进行了联结！至此，访问互联网的速度得到了质的提升。而办公室内的 Windows Small Business Server 2011 Standard（SBS2011）服务器不再需要通过 Smart Host 进行邮件的外发处理，而可以直接使用机房的公网IP。但是随即也引发了一些问题！因为前端部署有 TMG 服务器，而外网多个 IP 都绑定在 TMG 的外部网卡上（用于服务发布），默认情况下内网用户都会经由 TMG 的 Primary IP 进行 NAT 访问，因为业务需求 TMG 开放了内网 SMTP 的访问权限，那么此时就会出现安全问题。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;因为邮件服务器与其他用户使用同一个 Primary IP 访问 Internet，那么一些用户的访问行为可能会影响邮件服务器的信用等级！该如何为特定的计算机或网络集指定 NAT 呢？！<a href="goxia.maytide.net/" target="_blank">gOxiA</a> 就此问题曾咨询了 Microsoft Partner Support，获得的解决方案是需要部署 Exchange Edge，但是对于 SBS 来讲此解决方案并不合适，后来向 China MVP 的 MailList（NDA） 发送了求助邮件，获得了一个简单可行的解决办法！</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在 ISA/TMG 中我们可以利用网络规则来为特定资源指定 NAT 地址，这样 <a href="goxia.maytide.net/" target="_blank">gOxiA</a> 便可以为 SBS2011 单独指定一个 NAT IP，与办公室上网所用默认的 Primary IP 分离，从而保证了服务器的安全。为此，需要打开 TMG 控制器进行配置。</p> <ul> <li>在左侧的“控制台树”中展开“Forefront TMG”，并切换至“网络连接”</li> <li>在中间的内容窗体中点击“网络规则选项卡”</li> <li>在任务窗体中点击“创建网络规则”</li> <li>跟随向导执行操作，创建一个名为“SBS2011 to Internet”的网络规则</li> <li>在网络通讯源中添加一个“计算机”源，其中计算机源就是 SBS2011</li> <li>在网络通讯目标中添加“外部”</li> <li>在网络关系中选择“网络地址转换”</li> <li>在 NAT 地址选择中选择“使用指定的 IP 地址”，为 SBS2011 指定专用的 NAT IP</li> <li>最后完成操作</li></ul> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;至此，配置操作即告完成。现在我们可以服务器上访问 ip138 网站看看识别的 NAT IP 是否为指定的地址。最后感谢 王春海 和 <a href="http://liulike.blog.51cto.com" target="_blank">刘力科</a> 两位 MVP 提供的帮助！</p><br/>Tags - <a href="https://maytide.net/go.php/tags/microsoft/" rel="tag">microsoft</a> , <a href="https://maytide.net/go.php/tags/forefront/" rel="tag">forefront</a> , <a href="https://maytide.net/go.php/tags/tmg/" rel="tag">tmg</a> , <a href="https://maytide.net/go.php/tags/isa/" rel="tag">isa</a> , <a href="https://maytide.net/go.php/tags/nat/" rel="tag">nat</a> , <a href="https://maytide.net/go.php/tags/exchange/" rel="tag">exchange</a> , <a href="https://maytide.net/go.php/tags/sbs/" rel="tag">sbs</a>
]]>
</description>
</item><item>
<link>https://maytide.net/read.php/1230.htm</link>
<title><![CDATA[简谈 Microsoft Dynamics CRM 安装需求]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Archive]]></category>
<pubDate>Tue, 02 Jun 2009 09:45:44 +0000</pubDate> 
<guid>https://maytide.net/read.php/1230.htm</guid> 
<description>
<![CDATA[ 
	<p><a href="http://goxia.maytide.net/ftpupfiles/9b8819a2fbf7_E634/image.png"><img style="display: inline; border: 0px" src="http://goxia.maytide.net/ftpupfiles/9b8819a2fbf7_E634/image_thumb.png" border="0" alt="image" title="image" width="640" height="58" /></a> </p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Microsoft Dynamics &mdash;&mdash; 微软的商务管理解决方案，其实我本人对这套方便并不了解，不过之前有听说过其中的 Microsoft Dynamics CRM （以下简称：MSCRM）产品，其实是知道 CRM （客户关系管理）的意思，感觉在今后的业务运营中 CRM 的作用还是非常大的。目前所在单位购买的是国内的小软件厂商开发的 CRM 系统，基于 DotNet 开发，整体而言貌似并没有体现出传说中的 CRM 超强功能和理念。而这几天我突然对 MSCRM 感兴趣，是因为我在设想如果将来我要重新开始创业，那么我最迫切需要的是什么，反复考虑我个人认为不论业务是否已经开始，公司是否已经成立，我都应该先制定一套 CRM 系统作为业务的支撑平台，这样在今后我才能有序的开展我的业务，开始我的再次创业历程。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 目前市场上的 CRM 系统非常多，开源的也不少，最终选择 MSCRM v4.0 除了钟情于微软的产品和技术外，软件的获取也是非常容易。在安装测试前，我一边准备测试环境，一边在网上查找有关的软硬件需求，很可惜网上几乎都是 MSCRM v3 的资讯，而完整的针对 MSCRM v4.0 的 Step By Step 却完全没有，无奈搜集了相关的资料决定自己尝试安装，确实费劲！（PS：令人纳闷的是，微软的官方网站和文档也没找到具体有关 MSCRM v4.0 的软件需求，实在令人无奈！）安装 SQL Server 2005，再打 SP2，最后安装 MSCRM&hellip;&hellip;足足用了半天的时间，幸好之前在 Hyper-V 上安装了一个 Exchange 2003 的环境，否则后果可想而知&hellip;&hellip;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 硬件方面的需求就不再专门复述了，内存要保证有 1G。我在 Hyper-V 开了两台虚机，一台 DC+Exchange+SQLServer，另一台专门用来跑 MSCRM。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 软件方面，此次的安装测试使用的是 Windows Server 2003 Enterprise R2 with SP2 系统，没有选择 Windows Server 2008，除了对硬件要求较高外，从 KB 看貌似与 CRM 有兼容性，没看明白也没再深入学习。MSCRM 必须构建在微软活动目录服务（AD）上，所以 DC 是必须的。由于 MSCRM 与 Exchange 紧密集成，还提供了 MSCRM for Outlook 的客户端程序，所以建议试验环境中应该部署 Exchange（本环境中 DC 上正好安装了 Exchange，省了不少事情！），</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用于安装 MSCRM 的服务器应该事先启动 Indexing Service 服务，我们可以通过 services.msc 打开服务管理器将 Indexing Service 服务的启动方式改为自动，并启动该服务。之后，我们还需要安装 IIS 服务，务必选中 ASP.NET 和消息队列组件。其他必须的组件，如：Microsoft .NET Framework 2.0、Report Viewer Redistributable 2005、Visual C++ 2005 Redistributable 都可以在 MSCRM 安装过程中通过向导进行自动安装。下面的截图是我试验环境中 MSCRM 服务器的程序安装情况，我是在 MSCRM 安装前先对系统执行了在线更新。</p><p><a href="http://goxia.maytide.net/ftpupfiles/9b8819a2fbf7_E634/mscrm_feature.png" target="_blank"><img style="display: inline; border: 0px" src="http://goxia.maytide.net/ftpupfiles/9b8819a2fbf7_E634/mscrm_feature_thumb.png" border="0" alt="mscrm_feature" title="mscrm_feature" width="644" height="554" /></a> </p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 除上面所述的准备工作之外 MSCRM 还需要一台 SQL Server 服务器用于存储数据，这里我在 DC 上安装了 SQL Server 2005 标准版，并安装了 Reporting Services，这个服务组件是必须的，之前本人就是因为没有安装 Reporting Services 吃了不少亏，除了要重新启动 SQL Server 2005 的安装程序，还重新打了一遍 SP2 的补丁，要知道 SQL Server 2005 的安装可是非常耗时的。完成安装后，我们还要启动 Reporting Services 配置程序对该服务进行配置。需要注意的是，如果环境内没有 SharePoint 服务器切勿在数据库安装这步种复选&ldquo;创建 SharePoint 集成模式的报表服务器数据库。&rdquo;否则你的配置过程就点重来一遍！</p><p><a href="http://goxia.maytide.net/ftpupfiles/9b8819a2fbf7_E634/reporting_services.png" target="_blank"><img style="display: inline; border: 0px" src="http://goxia.maytide.net/ftpupfiles/9b8819a2fbf7_E634/reporting_services_thumb.png" border="0" alt="reporting_services" title="reporting_services" width="644" height="538" /></a> </p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从上面的叙述我们了解到了安装所需要注意的环节，那么下面的 MSCRM 安装过程将十分顺利。根据向导提示填写组织名称，选择数据库服务器，创建新的 MSCRM 数据库，并填写数据报表服务的 URL 地址（<a href="http://servername/reportserver">http://servername/reportserver</a>），创建站点&hellip;&hellip;之后我们就可以使用 IE 登录 MSCRM 系统了。</p><p><a href="http://goxia.maytide.net/ftpupfiles/9b8819a2fbf7_E634/mscrm_webmain.png" target="_blank"><img style="display: inline; border: 0px" src="http://goxia.maytide.net/ftpupfiles/9b8819a2fbf7_E634/mscrm_webmain_thumb.png" border="0" alt="mscrm_webmain" title="mscrm_webmain" width="644" height="612" /></a>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最后我再列表总结一下 MSCRM 的软件需求，如有错误和遗漏还望见谅并指正！</p><ul><li>Active Directory（AD）</li><li>Indexing Service</li><li>IIS <br />ASP.NET、消息队列</li><li>Microsoft .NET Framework 2.0、Report Viewer Redistributable 2005、Visual C++ 2005 Redistributable</li><li>SQL Server 2005 <br />SQL Server Reporting Services <br />SQL Server Service Pack 2</li></ul><br/>Tags - <a href="https://maytide.net/go.php/tags/microsoft/" rel="tag">microsoft</a> , <a href="https://maytide.net/go.php/tags/dynamics/" rel="tag">dynamics</a> , <a href="https://maytide.net/go.php/tags/crm/" rel="tag">crm</a>
]]>
</description>
</item><item>
<link>https://maytide.net/read.php/1161.htm</link>
<title><![CDATA[识别 ISA Server 的版本号]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Archive]]></category>
<pubDate>Thu, 26 Feb 2009 03:57:10 +0000</pubDate> 
<guid>https://maytide.net/read.php/1161.htm</guid> 
<description>
<![CDATA[ 
	<p><a href="http://goxia.maytide.net/ftpupfiles/ISAServer_A7CA/logoheaderffisaserver.gif"><img style="display: inline; border-width: 0px" src="http://goxia.maytide.net/ftpupfiles/ISAServer_A7CA/logoheaderffisaserver_thumb.gif" border="0" alt="logo-header-ff-isaserver" title="logo-header-ff-isaserver" width="326" height="80" /></a> 识别 ISA Server 的版本号</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ISA Server 上我们从产品关于信息中能够看到当前的版本号码，但是却很难确定该版本号码所对应的版本名称。今天 gOxiA 从 <a href="http://blogs.technet.com/isablog/archive/2009/02/25/isa-server-build-numbers.aspx" target="_blank">Forefront TMG(ISA Server) Product Team Blog</a> 看到了 ISA Server 版本号的说明，特记录至此作为备忘，便于今后使用。</p><p><strong>ISA Server 2000 (SE and EE)</strong></p><p>RTM 3.0.1200.50</p><p>SP1 3.0.1200.166</p><p>FP1 3.0.1200.235</p><p>SP2 3.0.1200.365</p><p>Latest HotFix (not accumulated) 1200.443</p><p><strong>ISA Server 2004 SE</strong></p><p>BETA 4.0.2161.153</p><p>RTM 4.0.2161.50</p><p>SP1 4.0.2163.213</p><p>SP2 4.0.2165.594</p><p>SP3 4.0.2167.887</p><p>Latest HotFix (accumulated) 2167.905</p><p><a href="http://support.microsoft.com/kb/951958">KB951958</a></p><p><strong>ISA 2004 EE</strong></p><p>BETA 4.0.3437.63</p><p>RTM 4.0.3439.50</p><p>SP2 4.0.3443.594</p><p>SP3 4.0.3445.887</p><p>Latest HotFix (accumulated) 3445.905</p><p><a href="http://support.microsoft.com/kb/951958">KB951958</a></p><p><strong>ISA Server 2006 EE/SE</strong></p><p>RTM 5.0.5720.100</p><p>Supportability 5.0.5721.240</p><p>SP1 5.0.5723.493</p><p>latest hotfix 5.0.5723.507</p><p><a href="http://support.microsoft.com/kb/960148">KB 960148</a></p><br/>Tags - <a href="https://maytide.net/go.php/tags/isa/" rel="tag">isa</a> , <a href="https://maytide.net/go.php/tags/server/" rel="tag">server</a> , <a href="https://maytide.net/go.php/tags/build/" rel="tag">build</a>
]]>
</description>
</item><item>
<link>https://maytide.net/read.php/1104.htm</link>
<title><![CDATA[[Troubleshooting] ISA Server 出现 TermService 1036 无法远程桌面]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Archive]]></category>
<pubDate>Fri, 21 Nov 2008 09:19:51 +0000</pubDate> 
<guid>https://maytide.net/read.php/1104.htm</guid> 
<description>
<![CDATA[ 
	<p><img alt="" src="http://goxia.maytide.net/ftpupfiles/ISAServerExchangeServerOWA_E2A3/image_thumb.png" /> ISA Server 出现 TermService 1036 导致无法远程桌面<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一台 ISA Server 2006 with SP1 标准版，每次停电重新启动后会导致不论从内部还是外部均无法远程桌面到该服务器上故障。一直找不到原因，困扰已久！唯一的解决办法就是删除访问策略重新添加，便可以恢复正常，甚是诡异！<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这次再次发生这个故障，不过总算是找到了线索，留意到一个事件日志，如下图所示：<br /><a href="http://goxia.maytide.net/ftpupfiles/TroubleshootingISAServerTermService1036_F3D1/remotedesktoperror_isa.png"><img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="remotedesktoperror_isa" width="406" height="446" src="http://goxia.maytide.net/ftpupfiles/TroubleshootingISAServerTermService1036_F3D1/remotedesktoperror_isa_thumb.png" /></a>&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 来源：TermServcice，事件ID：1036，描述：终端服务器会话创建失败。相关的状态代码为 0x2740。阅读了KB555382，该KB地址是：<a title="http://support.microsoft.com/kb/555382" href="http://support.microsoft.com/kb/555382">http://support.microsoft.com/kb/555382</a><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 了解到应该是 RDP 协议未能正确绑定网卡而导致的。根据 KB 对注册表进行了检查，发现并为有异常。那么问题出在了哪里呢？！<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先重新审查 ISA Server 的配置及规则策略。该 ISA Server 外部绑定有 3 个公网 IP，内部共有3块网卡，有2块物理网卡连接两个子网，一块 Microsoft Loopback 网卡用于虚拟机网络。为了方便管理，在其中一个公网 IP 上发布了局域网中一台服务器的 RDP 服务，另外两个发布了本机的其中一个内网网卡IP上。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OK，根据前面KB中所描述的信息，分析本案例发现，ISA Server 上的 RDP 绑定了所有网卡，也就是说在 Remote Desktop 启动后会对这些网卡上的 IP 进行侦听，假设我们创建了访问规则允许内部或外部访问 ISA Server 的 3389 或者创建了一个完全访问 ISA Server 规则，那么这条访问规则是正确的，ISA Server 开启了对本机 3389 的访问。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 但是，让我创建了一个发布规则，就意味着我需要在外部或某个接口上创建侦听，通俗讲就是在指定接口上创建了一个仿真服务用于接收用户请求，然后转向到指定要发布的服务器上。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 现在，真相大白了！原来是在 ISA Server 上创建的 RDP 发布规则与本机 RDP 协议冲突，从而导致重新启动后，RDP 启动失败。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因为本案例中涉及发布 RDP ，那么正确的配置可以是这样的。配置 RDP 协议只侦听内部的一块网卡，然后创建侦听来自外部的 RDP 请求即可！<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 问题很简单，但是一直没有注意到，可能也是因为创建的发布规则并没有收到 ISA Server 的警告。不过，自己做深刻检讨！主要的原因还是在自己&hellip;&hellip;</p><br/>Tags - <a href="https://maytide.net/go.php/tags/isaserver/" rel="tag">isaserver</a> , <a href="https://maytide.net/go.php/tags/termservice/" rel="tag">termservice</a> , <a href="https://maytide.net/go.php/tags/remotedesktop/" rel="tag">remotedesktop</a>
]]>
</description>
</item><item>
<link>https://maytide.net/read.php/1068.htm</link>
<title><![CDATA[在工作组环境下的 ISA Server 2006 上发布 Windows SBS 2003 R2 ST 中的 Exchange Server OWA]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Archive]]></category>
<pubDate>Wed, 17 Sep 2008 10:11:13 +0000</pubDate> 
<guid>https://maytide.net/read.php/1068.htm</guid> 
<description>
<![CDATA[ 
	<a href="http://goxia.maytide.net/ftpupfiles/ISAServerExchangeServerOWA_E2A3/image.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="47" alt="image" width="165" border="0" src="http://goxia.maytide.net/ftpupfiles/ISAServerExchangeServerOWA_E2A3/image_thumb.png" /></a><a href="http://goxia.maytide.net/ftpupfiles/ISAServerExchangeServerOWA_E2A3/image_3.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="47" alt="image" width="315" border="0" src="http://goxia.maytide.net/ftpupfiles/ISAServerExchangeServerOWA_E2A3/image_thumb_3.png" /></a><a href="http://goxia.maytide.net/ftpupfiles/ISAServerExchangeServerOWA_E2A3/image_4.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="47" alt="image" width="194" border="0" src="http://goxia.maytide.net/ftpupfiles/ISAServerExchangeServerOWA_E2A3/image_thumb_4.png" /></a><br /><br /><span style="font-size: larger"><i><b>在工作组环境下的 ISA Server 2006 上发布 Windows SBS 2003 R2 ST 中的 Exchange Server OWA<br /></b></i></span><br />环境说明：<br />两个子网（子网 A 和子网 B）分别是两个独立的 AD，其中子网 B 基于 Windows SBS 2003 R2，共同使用同一台 ISA Server 2006 访问互联网，并同时使用同一个公网 IP 用于服务的发布。其中 子网 A 暂不提供邮件服务的发布。<br /><br />实施目标：<br />使用 ISA Server 2006 发布子网 B 中 Windows SBS 2003 R2 上 Exchange Server 的 OWA<br /><br />实施要点：<br />1、导出 Windows SBS 2003 R2 中涉及的证书；<br />2、修改 Exchange Server 中的 HTTP 协议，禁用&ldquo;启用基于表单的身份验证&rdquo;；<br />3、在 ISA Server 2006 上导入 Windows SBS 2003 R2 的证书；<br />4、在 ISA Server 2006 上访问 OWA 进行测试，确保访问过程无任何提示警告（如：证书警告）；<br />5、在 ISA Server 2006 上配置 LDAP 服务器的访问；<br />6、在 ISA Server 2006 上创建用于发布服务的端口侦听；<br />7、在 ISA Server 2006 上创建用于发布 OWA 的防火墙策略；<br /><br />实施步骤：<br />一、在 Windows SBS 2003 R2 中导出证书，该证书用于 ISA Server 2006 发布 OWA 时所需。<br />1、在 Windows SBS 2003 R2 上打开 IIS 管理器，进入 Exchange 站点属性。<a href="http://goxia.maytide.net/ftpupfiles/ISAServerExchangeServerOWA_E2A3/export_cert_1.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="360" alt="export_cert_1" width="504" border="0" src="http://goxia.maytide.net/ftpupfiles/ISAServerExchangeServerOWA_E2A3/export_cert_1_thumb.png" /></a><br/>............<br/>
]]>
</description>
</item><item>
<link>https://maytide.net/read.php/76.htm</link>
<title><![CDATA[推荐：Microsoft Internet Security and Acceleration (ISA) Server 2006 支持更新]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Archive]]></category>
<pubDate>Fri, 16 Nov 2007 08:12:10 +0000</pubDate> 
<guid>https://maytide.net/read.php/76.htm</guid> 
<description>
<![CDATA[ 
	<p>      早先在运营的一台 SBS 2003 上发现 ISA 日志监控中有非常详细的监控信息栏，感觉非常有用，可是发现自己手边的 ISA 及 Labs 里的 ISA 都没有这个功能，感觉非常遗憾，以为只有 SBS 2003 中的 ISA 包含这个特性，昨天在 QQ 群组中向大家询问了一下，发现有一个网友同样是 ISA 2006 但是有我说到的信息栏，郁闷！难道又遭遇 RPWT 了？！</p><p>      进入 Microsoft Download Center 寻找有关 ISA 的下载终于让我找到了，原来微软提供了一个针对 ISA 的支持更新包，安装这个支持更新包后，ISA 便拥有了强大的日志查询和分析的功能。看看下面的截图</p><p><img src="http://goxia.maytide.net/up/isasupporttools.jpg" /></p><p>官方详细的说明：</p><p>Microsoft Internet Security and Acceleration (ISA) Server 2006 支持更新</p><h4><font size="2">概述</font></h4><div class="downloadInfo"><a name="Description"></a><span>Internet Security and Acceleration (ISA) Server 2006 支持更新为 ISA Server 2006 标准版和 ISA Server 2006 企业版提供了增强的疑难解答工具和改进的日志查看器功能。强烈建议客户在所有运行 ISA Server 2006 的计算机上安装此支持更新。 <br /><br />可以在运行 ISA Server 2006 的计算机上直接安装 ISA Server 2006 支持更新，其中包括下列内容：<br /><br />• 自 ISA Server 2006 投入生产以来发布的所有软件更新。<br />• 改进的日志查看器功能，包括增强的详细信息窗格视图、文本着色和新增的日志筛选功能。 <br />• 更新的 ISA Server Microsoft 管理控制台 (MMC) 管理单元功能，凭借它可以直接从 ISA Server 管理控制台访问可用疑难解答工具和选项。 <br />• 与 Microsoft ISA Server Best Practices Analyzer 工具相集成。有关详细信息，请参阅 http://go.microsoft.com/fwlink/?LinkId=79754。<br />• 新增的诊断日志记录功能。</span></div><div class="downloadInfo"><span></span></div><div class="downloadInfo"><span>下载地址：<a href="http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=6f629eac-d8c6-4437-9d20-b47b02db413a">http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&amp;FamilyID=6f629eac-d8c6-4437-9d20-b47b02db413a</a></span></div>
]]>
</description>
</item><item>
<link>https://maytide.net/read.php/107.htm</link>
<title><![CDATA[[QAT] ISA 服务器遭遇 RPC 故障]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Archive]]></category>
<pubDate>Tue, 04 Sep 2007 04:57:54 +0000</pubDate> 
<guid>https://maytide.net/read.php/107.htm</guid> 
<description>
<![CDATA[ 
	<p>决定在 Blog 上有限地与大家公开分享我为网友解答问题及排错的经验和心得。这里需要注意标题中的 Q&amp;A&amp;T，他们分别是 Question；Answer；TroubleShooting 的缩写，其中要多加个 T 意在表示这个问题解答中包含排错的经验和心得。</p><p>网友Q：一台 ISA 服务器为 AD 成员，之前 ISA 运行良好，最近 ISA 总报 RPC 错误，无法登录到 AD?</p><p>A&amp;T：首选需要检查日志中是否有可疑的警告或错误事件报告，经过查阅发现一条来源：Winlogon，事件ID：1219的错误警告。</p><p><img src="/up/1188880372.jpg" border="0" width="374" height="356" /></p><p>在描述中明确指出RPC服务不可用，说明RPC及相关的服务出现了故障，使用addiag、dcdiag、netdiag分别作了测试，其中netdiag中检测到了可疑信息。</p><p>D:&#92;Support Tools&gt;netdiag</p><p>...................................</p><p>&nbsp;&nbsp;&nbsp; Computer Name: ISA<br />&nbsp;&nbsp;&nbsp; DNS Host Name: isa.contoso.com<br />&nbsp;&nbsp;&nbsp; System info : Windows 2000 Server (Build 3790)<br />&nbsp;&nbsp;&nbsp; Processor : x86 Family 15 Model 4 Stepping 3, GenuineIntel<br />&nbsp;&nbsp;&nbsp; List of installed hotfixes :<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KB911564<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KB925398_WMP64<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KB925876<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KB925902<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KB930178<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KB931768<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KB931784<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KB931836<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KB932168<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Q147222</p><p><br />Netcard queries test . . . . . . . : Passed<br />&nbsp;&nbsp;&nbsp; [WARNING] The net card 'RAS 同步适配器' may not be working because it has no<br />t received any packets.<br />&nbsp;&nbsp;&nbsp; GetStats failed for '直接并口'. [ERROR_NOT_SUPPORTED]<br />&nbsp;&nbsp;&nbsp; GetStats failed for 'WAN 微型端口 (PPTP)'. [ERROR_NOT_SUPPORTED]<br />&nbsp;&nbsp;&nbsp; GetStats failed for 'WAN 微型端口 (PPPOE)'. [ERROR_NOT_SUPPORTED]<br />&nbsp;&nbsp;&nbsp; [WARNING] The net card 'WAN 微型端口 (IP)' may not be working because it has<br />&nbsp;not received any packets.<br />&nbsp;&nbsp;&nbsp; GetStats failed for 'WAN 微型端口 (L2TP)'. [ERROR_NOT_SUPPORTED]<br />&nbsp;&nbsp;&nbsp; [WARNING] The net card 'Intel(R) PRO/1000 MT Network Connection' may not be<br />working.</p><p></p><p>Per interface results:</p><p>&nbsp;&nbsp;&nbsp; Adapter : contoso</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Netcard queries test . . . : Passed</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Host Name. . . . . . . . . : isa<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IP Address . . . . . . . . : 10.194.145.2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subnet Mask. . . . . . . . : 255.255.255.0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Default Gateway. . . . . . :<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetBIOS over Tcpip . . . . : Disabled<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dns Servers. . . . . . . . : 10.194.145.5<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.194.145.8</p><p><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AutoConfiguration results. . . . . . : Passed</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Default gateway test . . . : Skipped<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [WARNING] No gateways defined for this adapter.</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetBT name test. . . . . . : Skipped<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetBT is disabled on this interface. [Test skipped]</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WINS service test. . . . . : Skipped<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetBT is disable on this interface. [Test skipped].</p><p>&nbsp;&nbsp;&nbsp; Adapter : Internet</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Netcard queries test . . . : Passed</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Host Name. . . . . . . . . : isa<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IP Address . . . . . . . . : 202.202.202.2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subnet Mask. . . . . . . . : 255.255.255.248<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Default Gateway. . . . . . : 202.202.202.1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetBIOS over Tcpip . . . . : Disabled<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dns Servers. . . . . . . . : 202.202.202.202</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IpConfig results . . . . . : Failed</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [WARNING] Your default gateway is not on the same subnet as your IP<br />address.</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AutoConfiguration results. . . . . . : Passed</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Default gateway test . . . : Passed</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetBT name test. . . . . . : Skipped<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetBT is disabled on this interface. [Test skipped]</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WINS service test. . . . . : Skipped<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetBT is disable on this interface. [Test skipped].</p><p>&nbsp;&nbsp;&nbsp; Adapter : VPDN</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Netcard queries test . . . : Passed</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Host Name. . . . . . . . . : isa<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IP Address . . . . . . . . : 10.194.146.129<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subnet Mask. . . . . . . . : 255.255.255.192<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Default Gateway. . . . . . :<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetBIOS over Tcpip . . . . : Disabled<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dns Servers. . . . . . . . :</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AutoConfiguration results. . . . . . : Passed</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Default gateway test . . . : Skipped<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [WARNING] No gateways defined for this adapter.</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetBT name test. . . . . . : Skipped<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetBT is disabled on this interface. [Test skipped]</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WINS service test. . . . . : Skipped<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetBT is disable on this interface. [Test skipped].</p><p>&nbsp;&nbsp;&nbsp; Adapter : DMZ</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Netcard queries test . . . : Passed</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Host Name. . . . . . . . . : isa<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IP Address . . . . . . . . : 172.16.0.1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subnet Mask. . . . . . . . : 255.255.255.0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Default Gateway. . . . . . :<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetBIOS over Tcpip . . . . : Disabled<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dns Servers. . . . . . . . :</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AutoConfiguration results. . . . . . : Passed</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Default gateway test . . . : Skipped<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [WARNING] No gateways defined for this adapter.</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetBT name test. . . . . . : Skipped<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetBT is disabled on this interface. [Test skipped]</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WINS service test. . . . . : Skipped<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetBT is disable on this interface. [Test skipped].</p><p>&nbsp;&nbsp;&nbsp; Adapter : EP</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Netcard queries test . . . : Passed</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Host Name. . . . . . . . . : isa<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IP Address . . . . . . . . : 172.18.145.18<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subnet Mask. . . . . . . . : 255.255.255.248<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Default Gateway. . . . . . :<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetBIOS over Tcpip . . . . : Disabled<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dns Servers. . . . . . . . :</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AutoConfiguration results. . . . . . : Passed</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Default gateway test . . . : Skipped<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [WARNING] No gateways defined for this adapter.</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetBT name test. . . . . . : Skipped<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetBT is disabled on this interface. [Test skipped]</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WINS service test. . . . . : Skipped<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetBT is disable on this interface. [Test skipped].</p><p>&nbsp;&nbsp;&nbsp; Adapter : JL</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Netcard queries test . . . : Failed<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetCard Status:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DISCONNECTED<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Some tests will be skipped on this interface.</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Host Name. . . . . . . . . : isa<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IP Address . . . . . . . . : 0.0.0.0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subnet Mask. . . . . . . . : 0.0.0.0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Default Gateway. . . . . . :<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetBIOS over Tcpip . . . . : Disabled<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dns Servers. . . . . . . . :</p><p><br />&nbsp;&nbsp;&nbsp; Adapter : &#123;6981CD9A-AA04-4FEE-8986-0B672B1A35BE&#125;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Netcard queries test . . . : Passed</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Host Name. . . . . . . . . : isa<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IP Address . . . . . . . . : 10.194.146.65<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subnet Mask. . . . . . . . : 255.255.255.255<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Default Gateway. . . . . . :<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dns Servers. . . . . . . . :</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AutoConfiguration results. . . . . . : Passed</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Default gateway test . . . : Skipped<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [WARNING] No gateways defined for this adapter.</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetBT name test. . . . . . : Passed<br /><span style="color: #c00000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [WARNING] At least one of the &lt;00&gt; 'WorkStation Service', &lt;03&gt; 'Messenge<br />r Service', &lt;20&gt; 'WINS' names is missing.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; No remote names have been found.</span></p><p><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WINS service test. . . . . : Skipped<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; There are no WINS servers configured for this interface.</span></p><p><br />Global results:</p><p><br />Domain membership test . . . . . . : Passed</p><p><br />NetBT transports test. . . . . . . : Passed<br />&nbsp;&nbsp;&nbsp; List of NetBt transports currently configured:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetBT_Tcpip_&#123;6981CD9A-AA04-4FEE-8986-0B672B1A35BE&#125;<br />&nbsp;&nbsp;&nbsp; 1 NetBt transport currently configured.</p><p><br />Autonet address test . . . . . . . : Passed</p><p><br />IP loopback ping test. . . . . . . : Passed</p><p><br />Default gateway test . . . . . . . : Passed</p><p><br /><span style="color: #c00000">NetBT name test. . . . . . . . . . : Passed<br />&nbsp;&nbsp;&nbsp; [WARNING] You don't have a single interface with the &lt;00&gt; 'WorkStation Servi<br />ce', &lt;03&gt; 'Messenger Service', &lt;20&gt; 'WINS' names defined.</span></p><p><br />Winsock test . . . . . . . . . . . : Passed</p><p><br />DNS test . . . . . . . . . . . . . : Passed</p><p><br /><span style="color: #c00000">Redir and Browser test . . . . . . : Failed<br />&nbsp;&nbsp;&nbsp; List of NetBt transports currently bound to the Redir<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetBT_Tcpip_&#123;6981CD9A-AA04-4FEE-8986-0B672B1A35BE&#125;<br />&nbsp;&nbsp;&nbsp; The redir is bound to 1 NetBt transport.</span></p><p><span style="color: #c00000">&nbsp;&nbsp;&nbsp; List of NetBt transports currently bound to the browser<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetBT_Tcpip_&#123;6981CD9A-AA04-4FEE-8986-0B672B1A35BE&#125;<br />&nbsp;&nbsp;&nbsp; The browser is bound to 1 NetBt transport.<br />&nbsp;&nbsp;&nbsp; [FATAL] Cannot send mailslot message to '&#92;contoso*MAILSLOTNETNETLOGON' vi<br />a redir. [ERROR_BAD_NETPATH]</span></p><p><br />DC discovery test. . . . . . . . . : Passed</p><p><br /><span style="color: #c00000">DC list test . . . . . . . . . . . : Failed<br />&nbsp;&nbsp;&nbsp; 'contoso': No DCs are up.</span></p><p><br /><span style="color: #c00000">Trust relationship test. . . . . . : Failed<br />&nbsp;&nbsp;&nbsp; 'contoso': No DCs are up (Cannot run test).<br />&nbsp;&nbsp;&nbsp; Secure channel for domain 'contoso' is to '&#92;WSUS.contoso.com'.</span></p><p><br />Kerberos test. . . . . . . . . . . : Skipped</p><p><br />LDAP test. . . . . . . . . . . . . : Passed<br /><span style="color: #c00000">&nbsp;&nbsp;&nbsp; [WARNING] Failed to query SPN registration on DC 'fileserver.contoso.com'.<br />&nbsp;&nbsp;&nbsp; [WARNING] Failed to query SPN registration on DC 'WSUS.contoso.com'.</span></p><p><br />Bindings test. . . . . . . . . . . : Passed</p><p><br />WAN configuration test . . . . . . : Skipped<br />&nbsp;&nbsp;&nbsp; No active remote access connections.</p><p><br />Modem diagnostics test . . . . . . : Passed</p><p>IP Security test . . . . . . . . . : Skipped</p><p>&nbsp;&nbsp;&nbsp; Note: run &quot;netsh ipsec dynamic show /?&quot; for more detailed information</p><p><br />The command completed successfully</p><p>D:&#92;Support Tools&gt;</p><p>从上述错误中可以看到一些服务器因 NetBT 故障导致运行错误，运行&quot;Services.msc&quot;进入服务管理器检查并允许自动运行&quot;TCP/IP NetBIOS helper&quot;服务，之后发现问题依然存在。继续检查内网连接的网卡TCP/IP属性配置下&ldquo;高级&rdquo;-&ldquo;WINS&rdquo;-&ldquo;NetBIOS 设置&rdquo;，应确保内部网卡启用&ldquo;默认&rdquo;设置或&ldquo;启用 TCP/IP 上的 NetBIOS&rdquo;设置。</p><p><img src="/up/1188881547.jpg" border="0" width="378" height="232" /></p><p>因管理员之前为了保证 ISA 的安全，禁用了&ldquo;TCP/IP NetBIOS helper&rdquo;服务，并且在TCP/IP高级属性中启用了&ldquo;禁用 TCP/IP 上的 NetBIOS&rdquo;（之前询问时管理员一直未回忆起进行过该项操作！:-)），导致 RPC 故障。经过恢复配置该问题得到了解决。建议，因为 ISA 为 AD 成员，所以因该保留内部网卡的TCP/IP配置，并为每个外部网卡单独配置&ldquo;禁用 TCP/IP 上的 NetBIOS&rdquo;，无须禁用&ldquo;TCP/IP NetBIOS helper&rdquo;服务。</p>
]]>
</description>
</item><item>
<link>https://maytide.net/read.php/182.htm</link>
<title><![CDATA[扩展 ISA 防火墙的SSL隧道端口范围]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Archive]]></category>
<pubDate>Tue, 22 May 2007 06:34:20 +0000</pubDate> 
<guid>https://maytide.net/read.php/182.htm</guid> 
<description>
<![CDATA[ 
	<p>      因为公司内部需要访问外部公网上的一个对帐系统，而这个对帐系统使用8443作为SSL的隧道端口，当从内部访问时便会出现错误。之前做过一次添加，因为升级到了ISA2006，重新修改了访问规则等配置，竟然忘记扩展端口了，最近频繁有员工反映这个问题，于是决定载入到 Blog 上做个永久性工作笔记。</p><p>      先创建一个.js文件，当然这个文件是从网上获取到现成的，我直接将代码粘贴至此，方便我拷贝。</p><p><div class="code">/*<br />  This program is Copyright (c) 2004 Microsoft Corporation.  <br />  <br />   All rights reserved.<br />  <br />   THIS CODE AND INFORMATION IS PROVIDED &quot;AS IS&quot; WITHOUT WARRANTY OF<br />   ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO<br />   THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A<br />   PARTICULAR PURPOSE.<br />  <br />   IN NO EVENT SHALL MICROSOFT AND/OR ITS RESPECTIVE SUPPLIERS BE<br />   LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY<br />   DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,<br />   WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS<br />   ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE<br />   OF THIS CODE OR INFORMATION.</p><p>   This program will allow the user to create, remove and display <br />   Tunnel Port Ranges on either ISA 2000 or ISA 2004.</p><p>   Revisions:<br />   - 08/19/2004 - First working version<br />*/</p><p>var g_oObjects = new Objects;<br />var g_oValues = new Values;<br />var g_oMessages = new Messages;</p><p>main();</p><p>/**********************************************************************<br /> * main()<br /> * This function:<br /> * 1. Attempts to create the ISA Admin COM object<br /> *  Determines if the environment is ISA 2K or ISA 2K4<br /> *  Sets g_oObjects.tpRanges to a proper TPR object<br /> *      Defers to ParseArgs() to perform the proper tasking<br /> * 2. calls into<br /> *      GetISA()<br /> *      ParseArgs()<br /> *  3. called by <br /> *  - user -<br /> *<br /> * if successful:<br /> * 1. g_oObjects.ISA and g_oObjects.ThisArray are valid ISA objects<br /> *  2. returns the result of GetISA() or ParseArgs() as appropriate<br /> *<br /> * if unsuccessful:<br /> * 1. called functions indicate the failure and cause<br /> *  2. returns the result of GetISA() or ParseArgs() as appropriate<br /> *********************************************************************/<br />function main()<br />&#123;<br /> //WScript.Echo( 'working in main().' );<br /> var iRtn;</p><p> iRtn = GetISA();<br /> if ( iRtn == g_oValues.OK )<br /> &#123;<br />   g_oObjects.tpRanges = <br />    g_oObjects.thisArray.ArrayPolicy.WebProxy.TunnelPortRanges;<br />     iRtn = ParseArgs( );<br /> &#125;</p><p> return iRtn;<br />&#125;</p><p><br />/**********************************************************************<br /> * GetISA( )<br /> * This function:<br /> * 1. Creates the default ISA COM object<br /> *  Determines if the environment is ISA 2K or ISA 2K4<br /> *  Sets g_oObjects.ISA to the proper ISA object<br /> * 2. calls into<br /> *  GetISA2KSE()<br /> *  GetISA2K4SE()<br /> *  ShowErrors()<br /> *  3. called by <br /> *  main()<br /> *<br /> * if successful:<br /> * 1. g_oObjects.ISA and g_oObjects.ThisArray are valid objects<br /> *  2. returns g_oValues.OK<br /> *<br /> * if unsuccessful:<br /> * 1. ShowErrors indicate the failure and cause<br /> * 2. returns values provided by called functions<br /> *********************************************************************/<br />function GetISA( )<br />&#123;<br /> //WScript.Echo( 'working in GetISA().' );<br /> var szSE = 'FPC.Root';<br /> var iRtn;<br /> <br /> try<br /> &#123;<br />  g_oObjects.ISA = new ActiveXObject( szSE );<br />  iRtn = GetISA2KSE( );<br />  if( iRtn == g_oValues.notISA2K )<br />  &#123; <br />   iRtn = GetISA2K4SE( );<br />  &#125;<br />  if( iRtn )<br />  &#123;<br />   WScript.Echo( g_oMessages.L_NoISA_txt )<br />   ShowUsage( WScript.Arguments );<br />  &#125;<br /> &#125;<br /> catch( err )<br /> &#123;<br />  ShowErrors( err, g_oMessages.L_NoISA_txt );<br />  ShowUsage( WScript.Arguments );<br />  iRtn = g_oValues.noISA;<br /> &#125;</p><p> return iRtn;<br />&#125;</p><p>/**********************************************************************<br /> * GetISA2KSE( )<br /> * This function:<br /> * 1. Distinguishes between ISA2KSE, ISA2KEE and ISA Admin-only<br /> * 2. calls into<br /> *  GetISA2K4EE()<br /> *  ShowErrors()<br /> *  3. called by <br /> *  GetISA()<br /> *<br /> * if successful:<br /> * 1. g_oObjects.ISA and g_oObjects.ThisArray are valid ISA objects<br /> *  2. returns g_oValues.OK<br /> *<br /> * if unsuccessful:<br /> * 1. ShowErrors indicate the failure and cause<br /> * 2. returns values provided by called functions<br /> *********************************************************************/<br />function GetISA2KSE( )<br />&#123;<br /> //WScript.Echo( 'working in GetISA2KSE().' );<br /> var fpcTypeArray = 2;<br /> var iRtn = g_oValues.OK;<br /> <br /> try<br /> &#123;<br />  if( g_oObjects.ISA.Type == fpcTypeArray )<br />  &#123;<br />   iRtn = GetISA2KEE( );<br />  &#125;</p><p>  if( iRtn == g_oValues.OK )<br />  &#123;<br />   g_oObjects.thisArray = g_oObjects.ISA.Arrays.GetContainingArray();<br />  &#125;<br /> &#125;<br /> catch( err )<br /> &#123;<br />  switch( ToHex( err.number ) )<br />  &#123;<br />   case g_oValues.lErrNotSupported:<br />    iRtn = g_oValues.notISA2K;<br />    err.clear;<br />    break;<br />   default:<br />    iRtn = err.number;<br />    ShowErrors( err, g_oMessages.L_notISA2K_txt );<br />  &#125;<br /> &#125;</p><p> return iRtn;<br /> <br />&#125;</p><p>/**********************************************************************<br /> * GetISA2KEE( )<br /> * This function:<br /> * 1. Sets g_oObjects.ISA to the correct EE context<br /> * 2. calls into<br /> *  GetISA2K4EE()<br /> *  ShowErrors()<br /> *  3. called by <br /> *  GetISASE()<br /> *<br /> * if successful:<br /> * 1. g_oObjects.ISA is a valid EE object<br /> *  2. returns g_oValues.OK<br /> *<br /> * if unsuccessful:<br /> * 1. ShowErrors indicate the failure and cause<br /> * 2. returns values provided by called functions<br /> *********************************************************************/<br />function GetISA2KEE( )<br />&#123;<br /> //WScript.Echo( 'working in GetISA2KEE().' );<br /> var szEE = 'FPCDS.Root';<br /> var iRtn;<br /> <br /> try<br /> &#123;<br />  g_oObjects.ISA = new ActiveXObject( szEE );<br />  iRtn = g_oValues.OK;<br /> &#125;<br /> catch( err )<br /> &#123;<br />  iRtn = err.number;<br />  ShowErrors( err, g_oMessages.L_ErrUnknown_txt );<br /> &#125;<br /> return iRtn;<br />&#125;</p><p>/**********************************************************************<br /> * GetISA2K4SE( )<br /> * This function:<br /> * 1. Sets g_oObjects.ISA to the an ISA 2004SE context<br /> * 2. calls into<br /> *  ShowErrors()<br /> *  3. called by <br /> *  GetISASE()<br /> *<br /> * if successful:<br /> * 1. g_oObjects.ISA is a valid ISA 2004 SE object<br /> *  2. returns g_oValues.OK<br /> *<br /> * if unsuccessful:<br /> * 1. ShowErrors indicate the failure and cause<br /> * 2. returns values according to determined state<br /> *********************************************************************/<br />function GetISA2K4SE( )<br />&#123;<br /> //WScript.Echo( 'working in GetISA2K4SE().' );<br /> var iRtn;<br /> <br /> try<br /> &#123;<br />  g_oObjects.thisArray = g_oObjects.ISA.GetContainingArray();<br />  g_oObjects.thisArray.Refresh();<br />  iRtn = g_oValues.OK;<br /> &#125;<br /> catch( err )<br /> &#123;<br />  switch( ToHex( err.number ) )<br />  &#123;<br />   case g_oValues.lErrNotFound:<br />    err.clear;<br />    iRtn = g_oValues.AdminOnly;<br />    break;<br />   default:<br />    iRtn = err.number<br />    ShowErrors( err, g_oMessages.L_ErrUnknown_txt );<br />  &#125;   <br /> &#125;<br /> return iRtn;<br />&#125;</p><p><br />/**********************************************************************<br /> * ParseArgs( )<br /> * This function:<br /> * 1. Evaluates the cmd-line arguments<br /> *     Calls appropriate function<br /> * 2. calls into<br /> *      AddRange()<br /> *      DelRange()<br /> *      ShowRanges()<br /> *  ShowUsage()<br /> *  3. called by <br /> *  main()<br /> *<br /> * if successful:<br /> * 1. user-defined action is executed<br /> *  2. returns value from called function<br /> *<br /> * if unsuccessful:<br /> * 1. returns values according to determined state<br /> *********************************************************************/<br />function ParseArgs( )<br />&#123;<br /> //WScript.Echo( 'working in ParseArgs( ).' );<br /> var Args = WScript.Arguments;<br /> var iRtn = g_oValues.badCommand;<br /> var szName = '';<br /> var szJob = '';<br /> var inx;<br /> <br /> if ( Args.length == 0 )<br /> &#123;<br />  return ShowRanges( '' );<br /> &#125;</p><p> szJob = Args( 0 ).toLowerCase();<br /> if( Args.length == 1 &amp;&amp; ( szJob == '/add' || szJob == '/del' ) )<br /> &#123;<br />  szJob = '';<br /> &#125;</p><p> if( Args.length &gt;= 2 )<br /> &#123;<br />  szName = Args( 1 );<br /> &#125;<br />  <br /> switch( szJob )<br /> &#123;<br />  case '/add':<br />   if( Args.length &gt;= 3 &amp;&amp; CheckPorts( Args ) == g_oValues.OK )<br />   &#123;<br />    if( AddRange( Args ) == g_oValues.OK )<br />    &#123;<br />     ShowRanges( szName );<br />    &#125;<br />    else<br />    &#123;<br />     ShowRanges( '' );<br />    &#125;<br />   &#125;<br />   else<br />   &#123;<br />    ShowUsage( Args );<br />   &#125;<br />   break;<br />  case '/del':<br />   if( Args.length &gt;= 2 )<br />   &#123;<br />    iRtn = DelRange( szName );<br />    ShowRanges( '' );<br />   &#125;<br />   else<br />   &#123;<br />    ShowUsage( Args );<br />   &#125;<br />   break;<br />  case '/show':<br />   iRtn = ShowRanges( szName );<br />   break;<br />  default:<br />   ShowUsage( Args );<br /> &#125;<br /> return iRtn;<br />&#125;</p><p><br />/**********************************************************************<br /> * AddRange( )<br /> * This function:<br /> * 1. Adds a defined tunnel port range to ISA Web Proxy<br /> * 2. calls into<br /> *  ShowError()<br /> *  3. called by <br /> *  ParseArgs()<br /> *<br /> * if successful:<br /> * 1. user-defined tunnel port range is added<br /> *  2. returns g_oValues.OK<br /> *<br /> * if unsuccessful:<br /> * 1. returns values according to failure state<br /> *********************************************************************/<br />function AddRange( oArgs )<br />&#123;<br /> //WScript.Echo( 'working in AddRange().' );<br /> var iRtn = g_oValues.OK;<br /> var name = '';<br /> var port1 = 0;<br /> var port2 = 0;</p><p> name = oArgs( 1 );<br /> port1 = oArgs( 2 );</p><p> if( oArgs.length == 3 )<br /> &#123;<br />  port2 = port1;<br /> &#125;<br /> else<br /> &#123;<br />  port2 = oArgs( 3 );<br /> &#125;</p><p> if( port1 &gt; port2 )<br /> &#123;<br />  port1 = oArgs( 3 );<br />  port2 = oArgs( 2 );<br /> &#125;</p><p> if( DoesItExist( name, port1, port2 ) )<br /> &#123;<br />  return g_oValues.PortsExist ;<br /> &#125;</p><p> try<br /> &#123;<br />  g_oObjects.tpRanges.AddRange( name, port1, port2 );<br />  g_oObjects.tpRanges.Save();<br />  WScript.Echo( g_oMessages.L_RestartSvcs_txt );<br />  iRtn = g_oValues.OK;<br /> &#125;<br /> catch( err )<br /> &#123;<br />  iRtn = err.number;<br />  ShowErrors( err, g_oMessages.L_GenError_txt + <br />     ' adding \'' + name + '\'.\r\n' );<br /> &#125;<br /> return iRtn;<br />&#125;</p><p><br />/**********************************************************************<br /> * DelRange( )<br /> * This function:<br /> * 1. Removes a defined tunnel port range from ISA Web Proxy<br /> * 2. calls into<br /> *  ShowError()<br /> *  3. called by <br /> *  ParseArgs()<br /> *<br /> * if successful:<br /> * 1. user-defined tunnel port range is removed<br /> *  2. returns g_oValues.OK<br /> *<br /> * if unsuccessful:<br /> * 1. returns values according to failure state<br /> *********************************************************************/<br />function DelRange( szName )<br />&#123;<br /> //WScript.Echo( 'working in DelRange().' );<br /> var iRtn = g_oValues.OK;</p><p> try<br /> &#123;<br />  g_oObjects.tpRanges.Remove( szName );<br />  g_oObjects.tpRanges.Save();<br />  WScript.Echo( g_oMessages.L_RestartSvcs_txt );<br />  iRtn = g_oValues.OK;<br /> &#125;<br /> catch( err )<br /> &#123;<br />  if( ToHex( err.number ) == g_oValues.lErrNotFound )<br />  &#123;<br />   WScript.Echo( '\'' + szName + g_oMessages.L_TprNotFound_txt );<br />  &#125;<br />  else<br />  &#123;<br />   iRtn = err.number<br />   ShowErrors( err, g_oMessages.L_GenError_txt + <br />      ' deleting \'' + szName + '\'.\r\n' );<br />  &#125;<br /> &#125;<br /> return iRtn;<br />&#125;</p><p><br />/**********************************************************************<br /> * ShowRanges( )<br /> * This function:<br /> * 1. displays eiither a selected range or the entire tunnel port ranges<br /> *     listing depending on user-provided options<br /> * 2. calls into<br /> *      ShowRange()<br /> *      ShowUsage()<br /> *  3. called by <br /> *  ParseArgs()<br /> *<br /> * if successful:<br /> * 1. user-defined tunnel port range or entire tunnel port definition<br /> *     is displayed<br /> *<br /> * if unsuccessful:<br /> * 1. returns values according to failure state<br /> *********************************************************************/<br />function ShowRanges( szName )<br />&#123;<br /> //WScript.Echo( 'working in ShowRanges(' + szName + ').' );<br /> var cTprList = null;<br /> var TPR  = null;<br /> var iRtn = g_oValues.OK;</p><p> if( szName == '' )<br /> &#123;<br />     WScript.Echo ( g_oMessages.L_ShowList_txt );<br />  cTprList = new Enumerator( g_oObjects.tpRanges );<br />  for ( ; !cTprList.atEnd(); cTprList.moveNext() )<br />  &#123;<br />         TPR = cTprList.item();<br />   ShowRange( TPR );<br />     &#125;<br />  return iRtn;<br /> &#125;<br />  <br /> try<br /> &#123;<br />  TPR = g_oObjects.tpRanges( szName );<br />     WScript.Echo ( g_oMessages.L_ShowItem_txt + szName + ':\r\n' );<br />  ShowRange( TPR );<br /> &#125;<br /> catch( err )<br /> &#123;<br />  if( ToHex( err.number ) == g_oValues.lErrNotFound )<br />  &#123;<br />   WScript.Echo( '\'' + szName + g_oMessages.L_TprNotFound_txt );<br />   iRtn = ShowRanges( '' );<br />  &#125;<br />  else<br />  &#123;<br />   iRtn = err.number<br />   ShowErrors( err, g_oMessages.L_GenError_txt + <br />      ' showing \'' + szName + '\'.\r\n' );<br />  &#125;<br /> &#125;<br /> return iRtn;<br />&#125;</p><p><br />/**********************************************************************<br /> * ShowRange( )<br /> * This function:<br /> * 1. displays the data from a selected tunnel pot range<br /> * 2. calls into<br /> *     - none -<br /> *  3. called by <br /> *  ShowRanges()<br /> *<br /> * if successful:<br /> * 1. selected tunnel port range definition is displayed<br /> *<br /> * if unsuccessful:<br /> * 1. dunno<br /> *********************************************************************/<br />function ShowRange( oTPR )<br />&#123;<br /> //WScript.Echo( 'working in ShowRange(' + oTPR.Name + ' ).' );</p><p>    if ( oTPR.TunnelLowPort == oTPR.TunnelHighPort )<br /> &#123;<br />        WScript.Echo( '\t' + oTPR.Name + ' (single port): ' + oTPR.TunnelLowPort );<br /> &#125;<br />    else<br /> &#123;<br />        WScript.Echo( '\t' + oTPR.Name + ' (port range) : ' + oTPR.TunnelLowPort + <br />            ' --&gt; ' + oTPR.TunnelHighPort );<br /> &#125;<br />&#125;</p><p>/**********************************************************************<br /> * CheckPorts( oArgs )<br /> * This function:<br /> * 1. Compares the user-specified port values to predefined limits<br /> * 2. calls into<br /> *     - none -<br /> *  3. called by <br /> *  ParseArgs()<br /> *<br /> * Returns g_oValues.OK if ports are within limits, g_oValues.badCommand<br />     otherwise<br /> *********************************************************************/<br />function CheckPorts( oArgs )<br />&#123;<br /> var iRtn = g_oValues.OK;<br /> <br /> if( parseInt( oArgs( 2 ) ) &lt; 1 ||<br />  parseInt( oArgs( 2 ) ) &gt; 65535 )<br />  &#123;<br />   WScript.Echo( '\'' + oArgs( 2 ) + '\'' + g_oMessages.L_NaN_txt );<br />   iRtn = g_oValues.badCommand;<br />  &#125;<br /> if( oArgs.length &gt;= 4 )<br /> &#123;<br />  if( parseInt( oArgs( 3 ) ) &lt; 1 ||<br />   parseInt( oArgs( 3 ) ) &gt; 65535 )<br />   &#123;<br />    WScript.Echo( '\'' + oArgs( 3 ) + '\'' + g_oMessages.L_NaN_txt );<br />    iRtn = g_oValues.badCommand;<br />   &#125;<br /> &#125;<br /> return iRtn;<br />&#125;</p><p>/**********************************************************************<br /> * DoesItExist( szName, iPort1, iPort2 )<br /> * This function:<br /> * 1. compares the new port range data to existing definitions<br /> * 2. calls into<br /> *  - nothing -<br /> *  3. called by <br /> *  AddRange()<br /> *<br /> *  4 Returns true if definition exists in any form, false otherwise<br /> *<br /> * errors are not evaluated<br /> *********************************************************************/<br />function DoesItExist( szName, iPort1, iPort2 )<br />&#123;<br /> //WScript.Echo( 'working in DoesItExist(' + szName + ', ' + iPort1 + ', ' + iPort2 + ').' );<br /> var TPR;<br /> var cTprList = new Enumerator( g_oObjects.tpRanges );</p><p> for ( ; !cTprList.atEnd(); cTprList.moveNext() )<br /> &#123;<br />        TPR = cTprList.item();<br />  if( TPR.Name.toLowerCase() == szName.toLowerCase() ||<br />   ( TPR.TunnelLowPort == iPort1 &amp;&amp; <br />    TPR.TunnelHighPort == iPort2 )<br />    )<br />  &#123;<br />   WScript.Echo( g_oMessages.L_TprExists_txt + TPR.Name + '\'' );<br />   return true;<br />  &#125;<br />    &#125;<br /> return false;<br />&#125;</p><p>/**********************************************************************<br /> * ToHex( lValue)<br /> * This function:<br /> * 1. Converts a number to its hexadecimal equivalent and accounts for <br /> *  negative numbers (hResults)<br /> * 2. calls into<br /> *  - nothing -<br /> *  3. called by <br /> *  - nearly all functions -<br /> *<br /> * errors are not evaluated<br /> *********************************************************************/<br />function ToHex( lValue)<br />&#123;<br /> var lNewVal;<br /> var szHexVal;</p><p> if( lValue &gt;= 0 &amp;&amp; lValue &lt; 10 )<br /> &#123;<br />  szHexVal = lValue.toString();<br /> &#125;<br /> else<br /> &#123;<br />  lNewVal = ( lValue &lt; 0 )? lValue + 0x100000000: lValue;<br />  szHexVal = lNewVal.toString( 16 ).toUpperCase();<br /> &#125;<br /> return szHexVal;<br />&#125;</p><p>/**********************************************************************<br /> * ShowErrors( oErr, szMessage )<br /> * This function:<br /> * 1. Displays szMessage and any error data if not running in MPSReports<br /> *  <br /> * 2. calls into<br /> *  LogMessage<br /> *  3. called by <br /> *  - nearly all functions -<br /> *<br /> * errors are not evaluated<br /> *********************************************************************/<br />function ShowErrors( oErr, szMessage )<br />&#123;<br /> var WshShell = new ActiveXObject( 'WScript.Shell' );<br /> var Exclamation = 48;<br /> var YesNo = 4;<br /> var Yes = 6;<br /> var No = 7;<br /> var RtnVal;<br /> <br /> if( oErr != null )<br /> &#123;<br />   szMessage += g_oMessages.L_ErrNum_txt + ToHex( oErr.number ) + <br />     g_oMessages.L_ErrDesc_txt + oErr.description +<br />     g_oMessages.L_CopyMsg_txt;<br /> &#125;</p><p> RtnVal = WshShell.Popup( szMessage, 0, g_oMessages.L_TitleMsg_txt, <br />       Exclamation + YesNo );<br /> if( RtnVal == No )<br /> &#123;<br />  WScript.quit();<br /> &#125;<br /> oErr.clear;<br />&#125;</p><p>/**********************************************************************<br /> * ShowErrors( oErr, szMessage )<br /> * This function:<br /> * 1. Displays szMessage and any error data if not running in MPSReports<br /> *  <br /> * 2. calls into<br /> *  LogMessage<br /> *  3. called by <br /> *  - nearly all functions -<br /> *<br /> * errors are not evaluated<br /> *********************************************************************/<br />function ShowUsage( oArgs )<br />&#123;<br /> var szJob = WScript.ScriptName;<br /> var inx;<br /> <br /> for( inx = 0; inx &lt; oArgs.length; inx++ )<br /> &#123;<br />  szJob += ( ' ' + oArgs( inx ) );<br /> &#125;<br /> if( szJob.indexOf( '?' ) == -1 )<br /> &#123;<br />  WScript.Echo( g_oMessages.L_BadCommand_txt + '\'' + szJob + '\'\r\n' );<br /> &#125;<br /> WScript.Echo( g_oMessages.L_Usage_txt );<br />&#125;</p><p><br />/**********************************************************************<br /> * Objects()<br /> * This function holds our global objects<br /> *  <br /> *********************************************************************/<br />function Objects()<br />&#123;<br /> this.ISA = null;   //core ISA COM object<br /> this.thisArray = null;  //current operating array<br /> this.tpRanges = null;  //selected tunnel port range collection<br />&#125;</p><p>/**********************************************************************<br /> * Values()<br /> * This function holds our global values<br /> *  <br /> *********************************************************************/<br />function Values()<br />&#123;<br /> this.OK = 0;<br /> this.ng_oObjects = 999;  //failed to get a useful ISA COM object<br /> this.AdminOnly = 666;  //ISA Admin only<br /> this.notISA2K = 333;  //not an ISA 2000 COM<br /> this.badCommand = 123;<br /> this.PortsExist = 321;<br /> this.lErrNotFound = '80070002';  //E_NOT_FOUND<br /> this.lErrNotSupported = '800A01B6'; //method/property not supported<br /> this.lErrExists = '800700B7';  //item already exists<br />&#125;</p><p>/**********************************************************************<br /> * Messages()<br /> * This function holds our global messages<br /> *  <br /> *********************************************************************/<br />function Messages()<br />&#123;<br /> this.divider = '###############################################################################\r\n';<br /> this.L_Version_txt = '1.0';<br /> this.L_TitleMsg_txt = WScript.ScriptName + ' version ' + this.L_Version_txt;<br /> this.L_CopyMsg_txt = '\r\n\r\nHit &lt;Ctrl&gt;-C to copy this message to the clipboard.';<br /> this.L_noISA_txt = '\r\nISA COM objects are not properly registered on this machine.'<br /> this.L_notISA2K_txt = '\r\nThis is machine not an ISA 2000 Server.';<br /> this.L_notISA2K4_txt = '\r\nThis machine is not an ISA 2004 Server.';<br /> this.L_NoISA_txt = '\r\nThis is not an ISA Server.';<br /> this.L_ErrUnknown_txt = '\r\nUnknown error occured...';<br /> this.L_BadCommand_txt = '\r\n\t\tIncorrect usage: ';<br /> this.L_NaN_txt = ' is not a valid numerical value.';<br /> this.L_GenError_txt = 'Error encountered while ';<br /> this.L_TprNotFound_txt = '\' was not found in the list; make sure you typed it correctly.\r\n';<br /> this.L_TprExists_txt = 'That definiton already exists as \'';<br /> this.L_ShowList_txt = '\r\nThis is your current Tunnel Port Range list:\r\n';<br /> this.L_ShowItem_txt = '\r\nThis is the definition for ';<br /> this.L_ErrNum_txt = '\r\n\r\nError Number : ';<br /> this.L_ErrDesc_txt = '\r\nDescription  : ';<br /> this.L_ErrSource_txt = '\r\nSource       : ';<br /> this.L_RestartSvcs_txt = '\r\nThe Web Proxy service should be restarted to pick up the change.';<br /> this.L_Usage_txt = this.divider +<br />     '# \t\t\t' + this.L_TitleMsg_txt + '\r\n' +<br />     this.divider +<br />     '#\r\n' +<br />     '# You must execute this tool on an ISA Server as:\r\n' +<br />     '# cscript ' + WScript.ScriptName + ' [/opt1] [opt2] [port1] [port2], where:\r\n' +<br />     '# ..opt1 (text) \'/add\', \'/del\' or \'/show\'\r\n' +<br />      '# ..opt2 (text) The name of the tunnel port range.  This is mandatory for \r\n' +<br />      '#         \'/add\' and \'/del\', optional for \'/show\'.\r\n' +<br />     '# ..port1 (digit &gt;0 and &lt;65536 )\r\n' +<br />     '#         The first value of the port range.  This value is mandatory for \r\n' +<br />     '#         \'/add\' and is ignored for \'/del\' and \'/show\'.\r\n' +<br />     '# ..port2 (digit &gt;0 and &lt;65536 )\r\n' +<br />     '#         The second value of the port range. This value is optional for \r\n' +<br />     '#         \'/add\' and is ignored for \'/del\' and \'/show\'.\r\n' +<br />     '#\r\n' +<br />     '#        The order of the port1 and port2 values is not important and if they\r\n' +<br />     '#        are equal, a static port definition will be created.\r\n' +<br />     '#\r\n' +<br />     '# Specifying no options displays all currently configured Tunnel Port entries.\r\n' +<br />     '#\r\n' +<br />     this.divider + <br />     '#\r\n' +<br />     '# Examples:\r\n' +<br />     '#\r\n' +<br />     '# cscript ' + WScript.ScriptName + ' /add port123 123\r\n' +<br />     '#         ..adds a single port called \'port123\' with a static value of \'123\'\r\n' +<br />     '# cscript ' + WScript.ScriptName + ' /add port123-124 123 124\r\n' +<br />     '#         ..adds a port range called \'port123-124\' with a range of \'123\'-\'124\'\r\n' +<br />     '# cscript ' + WScript.ScriptName + ' /del port123\r\n' +<br />     '#         ..removes a port range called \'port123\'\r\n' +<br />     '# cscript ' + WScript.ScriptName + ' /show port123\r\n' +<br />     '#         ..displays a port range called \'port123\'\r\n' +<br />     '# cscript ' + WScript.ScriptName + ' /show\r\n' +<br />     '#         ..displays all defined port ranges\r\n' +<br />     '#\r\n' +<br />     this.divider;<br />     <br />&#125;<br /></div></p><p>      之后运行这个脚本，将会显示当前使用的端口，之后添加我们需要的端口，如添加8443：</p><p><div class="code">cscript name.js /add Ext8443 8443</div></p><p>完毕。</p>
]]>
</description>
</item><item>
<link>https://maytide.net/read.php/301.htm</link>
<title><![CDATA[实践基于ISA环境的双线路策略路由访问]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Archive]]></category>
<pubDate>Mon, 25 Dec 2006 08:28:10 +0000</pubDate> 
<guid>https://maytide.net/read.php/301.htm</guid> 
<description>
<![CDATA[ 
	<p align="center"><font size="3"><strong>实践基于ISA环境的双线路策略路由访问</strong></font></p><p align="left">      国内Internet发展迅速，可是中国网通和中国电信之间的互联互通问题总是得不到改进而且越演越烈，就像那句话中讲到的，世界上最远的距离不是中国到美国，而是网通到电信！两大ISP间的竞争直接影响到了广大的网民，但是也是因为这样的竞争才又养活了不少靠互通产品发财的商人们！互通真的就这么难么？是的，互通就是这么难，大家想尽了办法去解决这个难题，用软件用设备统统上来，国内双WAN路由器卖的也是异常火爆，不少企业、特别是网吧成为支撑这些产品的大客户！软件方面好像并没有太好的产品出现，本身就受ISP的共享限制，谁还有精力去研发这些产品呢，虽然网上已经有不少通过类似VPN 技术实现的互联互通产品，可是毕竟中间存在一些应用兼容性、使用便捷性、安全性等诸多的问题！</p><p align="left">      在IDC应用上，目前最为成熟地实现双向多线路的主要技术就是BGP，但是对于企业和个人来说简直就是登天！对于我们的应用而言，我们只需要实现双线路访问就可以了！是购买设备好呢？还是使用纯软件方式来实现呢？之前已经说过软件的实现主要是通过一些开发商制作的程序连接到他们的多线路网络环境访问互联网，但是安全确实隐患要知道所有的数据都要经过他们，那么应用中涉及到的明文密码该如何解决安全问题呢？看似这种方式也不是一种很好的解决办法，玩玩还是可以的！而硬件方式也不乐观，有些网络环境可能使用硬件会制约整个企业应用，虽然这些硬件的内部系统功能也非常强大！我个人不考虑购置硬件！<br/>............<br/>
]]>
</description>
</item><item>
<link>https://maytide.net/read.php/306.htm</link>
<title><![CDATA[顺利实施基于ISA的双线路策略路由访问]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Archive]]></category>
<pubDate>Thu, 21 Dec 2006 12:52:19 +0000</pubDate> 
<guid>https://maytide.net/read.php/306.htm</guid> 
<description>
<![CDATA[ 
	<p>      今天公司网通的ADSL正式开通，决定不添加硬件路由器毕竟要节省成本啊，以下是需要考虑的问题：</p><p>      1、不添加专用路由器实现河南网通ADSL的共享上网</p><p>           解决办法：使用专用的破解程序，好像是有个北极星</p><p>      2、不添加专用双WAN路由器实现线路访问的自动选择</p><p>           解决办法：因为服务器是ISA，所以必须基于ISA来实现那么只有使用策略路由是最好的解决办法</p><p>      3、在一条线路出现问题后可以快速的切换</p><p>           解决办法：在ISA中配置额外线路为外部网络，使用批处理方式载入策略路由，如果线路出现问题则手工删除添加的路由</p><p>      4、服务器自动开机后能够自动拨号ADSL，并载入策略路由</p><p>           解决方法：因为中午开通测试，明天上班前要搞定不容多加思考采用专用帐号自动登录方式来实现，但是其中需要考虑几个方面避免不必要的麻烦</p><p>      哈哈，看来要考虑的问题和要做的工作还是很多的，不果总算在晚上9点左右测试并实施完毕，效果不错。接下来的几天会积极地测试并收集问题报告找到解决办法。当然也会尽快地将心得与大家分享！毕竟期间还是遇到不障碍！</p>
]]>
</description>
</item><item>
<link>https://maytide.net/read.php/706.htm</link>
<title><![CDATA[实现ISA2004的WPAD（自动发现功能）]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Archive]]></category>
<pubDate>Tue, 13 Sep 2005 04:55:49 +0000</pubDate> 
<guid>https://maytide.net/read.php/706.htm</guid> 
<description>
<![CDATA[ 
	<p>使ISA的功能和特性得到完全的体现，需要客户端安装FWC。其实原本我都是用sNAT模式，后来因为要做基于AD的身份验证访问，所以需要用到代理方式，为了客户端能够快速的配置，决定分发FWC，但是因为其默认安装后是自动查找ISA服务器，那么就必须开启ISA的WPAD功能。于是经过几番周折终于实现了ISA的WPAD。</p><p>其实之前作完配置一直有问题时因为早期作AD迁移遗留下来的一个小问题及我恢复过DHCP保留造成的。后来解决也就正常了，但是考虑了一下还是做一个完整的配置记录比较好！</p><p><font color="#ff6000">首先需要了解一下ISA的WPAD的感念（以下是引用微软MVP吕劼专栏中“深入探讨ISA Server的自动发现特性”的文字）：</font></p><p><font color="#d4d0c8">ISA Server是Microsoft开发的用于替代Microsoft Proxy Server2.0的最新代理服务器和防火墙产品，其强大的功能及易用性给不同规模的企业带来的很多显而易见的好处。因此，ISA Server也正在逐步的成为很多企业，特别的基于Microsoft网络的企业的首选代理服务器和防火墙产品。今天，朗月繁星想和大家一起来深入的研究一下ISA Server中的自动发现（AutoDiscovery）特性。</font></p><p><font color="#d4d0c8">        在一个全球性的企业里，网络覆盖全球的很多城市，在每个城市里或者站点里有很多ISA Server或者是ISA Server的阵列（Array）。工作在这个企业的员工有很大一部分是使用笔记本电脑来访问位于公司其他站点或者是Internet上的资源，我们知道如果一台客户机要访问位于ISA Server外端的资源就必须成为ISA Server的三种客户端之一，要么是SNAT客户端，要么是Web代理客户端，要么是Firewall Client客户端（以下简称FWC）。三种客户端的共同之处是要明确自己的代理服务器的位置，也就是要知道代理服务器的IP地址。然而，当一个移动用户从一个城市或者站点出差（漫游）到另外一个城市或者站点的时候，你该如何配置这些客户机使他们无障碍地访问Internet的资源？换句话讲你将做什么样的配置使这些移动的客户机顺利的找到提供代理服务的ISA Server？</font></p><p><font color="#d4d0c8">我想读到这里的朋友可能已经猜到了，是的，没错！就是利用ISA Server的自动发现（AutoDiscovery）特性！这是一个令人振奋的功能，下面朗月繁星就来谈谈支持自动发现（AutoDiscovery）特性所涉及的一些技术要素。</font></p><p><font color="#d4d0c8">如果您急于在网络中实现ISA Server的自动发现功能，你或许不需要了解过多的技术细节和讨论。这样，你可以直接参考设置“自动发现”之实施篇。<br />在此文中说的客户机和客户端是有区别的，客户机指用户使用的计算机，他可能使用Windows9x,Windows NT/2000或者其他Microsoft的操作系统，甚至是Linux；客户端指客户机操作系统上的某种应用程序或某种配置，例如，我们可以给Internet Explorer（以下简称IE）配置一个代理的信息，使之成为Web代理客户端；或者给用户的操作系统配置IP地址，网关以及DNS，这样这个操作系统就可以作为 SNAT客户端；如果您安装的ISA Server光盘中的Firewall Client，则运行在用户的操作系统上的网络应用程序的Winsock请求就会被FWC截获，从而做为ISA Server的FWC客户端。换句话说，客户机上可能存在多种客户端。此外，文中的domainsuffix.net指您的网络的DNS命名空间或者是您网络的域名称。在具体配置“自动发现”时，注意以您网络的所用的名称来代替domainsuffix.net。</font></p><p><br /><font color="#d4d0c8">自动发现（AutoDiscovery）特性的定义<br />自动发现是使ISA Server的客户端在不知道ISA Server的具体位置（IP地址）的情况下，通过网络上的其他网络服务来自动的发现ISA Server的IP地址及端口（Web代理客户需要知道提供Web代理服务的端口）的特性。</font></p><p><font color="#d4d0c8">何种的客户端可以利用自动发现（AutoDiscovery）特性<br />我们知道ISA Server有三种客户端类型，在这3中客户端类型中，只有Web代理客户端和FWC可以利用自动发现（AutoDiscovery）特性，SNAT客户端不行！而且对于客户机使用的操作系统也有一定要求，客户机的OS必须是下面列表中的一种：<br />Windows98<br />Windows ME<br />Windows 2000<br />Windows XP<br />注意：不包含WinNT和Win95（Win95可以利用DHCP服务器发现ISA Server）</font></p><p><font color="#d4d0c8">自动发现（AutoDiscovery）特性的机制讨论<br />之所以Microsoft称之为自动发现，足以证明ISA Server 的客户端在不经过“发现”这一过程前，是不知道代理服务器的具体位置的。那么，不难推断，在“发现”这一过程中，客户机肯定不是向ISA Server 来查询，所以就我的知识范围来讲，我想只有2种可以使用的方法来查找代理服务器ISA Server ：一个是通过发送广播，另外一个是向某个公共的中心服务器来查找这个信息。最终Microsoft采取了后者，我想这也是明智之选，因为以广播的方式查找，对于网络的利用极其不利。以太网中广播是任何网络管理员应该避免的问题，说广播是网络杀手，我想不会有人有异议！在一个LAN（或者VLAN）中，所有节点都处于一个广播域，所以，当其中一个节点发送广播数据帧时，任何处于这个广播域的所有其他节点都会处理这个帧，尽管这个帧对于很多节点都是毫无意义的。如果在一个包含一个非常的大的冲突域的基于CSMA/CD的以太网中，广播会导致处于这个冲突域的其他节点，无法“抢夺”到传输介质，而导致暂时无法发送和接受其他数据的情况，直到这个广播被所有节点处理完成。</font></p><p><font color="#d4d0c8">现在我们就来谈谈ISA Server的客户端是如何向中心服务器来查找代理服务器ISA Server的。这个中心服务器的角色可以是DNS，也可以是DHCP，或者是其两者（请放心，两者同时利用不会产生任何冲突，而是会提高发现ISA Server的机率）。Web代理客户端和FWC都可以利用DHCP和DNS来发现ISA Server。没有FWC只能使用其中之一（指DNS和DHCP），或者Web代理客户只能使用其中之一这样的限制。正是由于没有这样的限制，所以最终Web代理客户和FWC究竟是从DNS还是从DHCP来“自动发现”ISA Server的始终是我们困惑的问题。所以，朗月繁星分以下几种情况分析说明。</font></p><p><font color="#d4d0c8">如果客户机不是DHCP Client，那么不论的Web代理客户还是FWC都是不能通过DHCP服务器“自动发现”ISA Server的，那么就只能利用DNS服务器。向DNS查询的条件就是：客户机配置了DNS。如果DNS服务器上的WPAD记录配置正确，则查询成功；如果DNS服务器没有配置DNS或者错误配置了WPAD记录，则查询失败。如果客户机是DHCP Clinet，这种情况，客户机具备从DNS和DHCP“自动发现”ISA Server，但至于是否可以完成“自动发现”要看DHCP和DNS服务器的设置。执行的过程如下，DHCP Client在引发“发现”这个过程时，它会向自己的DHCP服务器发送Inform消息，当DHCP服务器收到这个信息后，会给客户机发送ACK信息，这个信息告诉客户机到什么位置去得到配置信息的文件，这个配置文件的作用就是把客户机配置成为Web代理客户端或者是FWC，配置成功后，客户机就可以通过ISA Server来访问特定的资源了。如果DHCP服务器上没有配置252记录（也就是用于支持自动发现特性的252记录），但客户机配置了DNS，则客户机就会向DNS服务器查询wpad.domainsuffix.net，如果DNS配置了WPAD记录，则“自动发现”成功，如果DNS服务器没有配置WPAD记录，则“自动发现”失败。若客户机根本没有配置DNS，那么也会失败。这里还有一点要注意，如果DHCP服务器虽然配置了252记录，但是配置有错误，那么客户机也不会在向DNS服务器查询，所以，结果还是会失败！有关上边的论述，我做了一张流程图，如图1，大家可以参考。</font></p><p><img src="http://goxia.maytide.net/up/1126584045.jpg" /></p><p><font color="#00a0ff">接下来就是我的操作步骤：</font></p><p><font color="#00a0ff">我的环境：<br />ISASrv：Windows Server 2003 ST SP1，ISA2004，DCHP，WINS，WAN219.154.154.1，LAN192.168.0.1<br />ADSrv：Windows Server 2003 ST SP1，AD，DNS<br />XPClient：Windows XP Pro SP2</font></p><p><font color="#00a0ff">备注：之前此环境使用的是sNat方式，在客户端直接配置网关访问，ISA上直接作了条Allow 4 All（嘿嘿比较懒）。后来准备实施基于AD身份验证的访问规则，发现客户端就无法访问了，后来才想起来需要配置代理方式才可以，还是群里的哥们提醒！想了想直接安装FWC又方便又可靠。于是开始实施（之前并不知道WPAD），之后发现自动查找ISA服务器失败，才搜索资料找到了微软MVP吕劼的那篇文章，粗略的浏览了一下，看了主要的细节，其实还是很头大，干脆做着理解着算了！（昨天本来就头脑混乱，没想到下午下班前还试验成功了！）</font></p><p><font color="#00a0ff">1、准备工作：<br />其实也没什么准备工作可言，XPClient的IE默认连接我全部不打勾，直接通过网关访问，DHCP已经配置好了TCP/IP数据。ISA在部署的时候就选择了安装FWC并共享。我所做的就是进入AD管理中为OU建立一个策略，分发FWC。</font></p><p><font color="#00a0ff">2、配置DNS和DHCP支持WPAD：<br />WPAD可以用DNS和DHCP实现，推荐两者都作设置，这样ISA在实现WPAD更加准确有效。<br />（1）DNS方式：<br />进入DNS控制台，查找ISA服务器的A记录，如果没有就建立。（废话，我的ISA是成员，所以在DNS中存在它的A记录）。<br />之后，为这个A记录建立一个CNAME记录，命名为WPAD（注：一定要用这个WPAD名字，别问问什么微软的ISA自动发现就认这个名字）<br /><img src="http://goxia.maytide.net/up/1126585359.jpg" /><br />理论上讲，到这里DNS下WPAD的设置就完成，客户端应该可以自动查询到ISA服务器，但是我这里的一些故障导致查询失败，所以就继续DHCP下WPAD的设置，浏览此文章的朋友可以自己试验一下。</font></p><p><font color="#00a0ff">（2）、DHCP方式：<br />首先进入DHCP控制台，单击DHCP服务器，右键选择“预定义的选项和值”，单击“添加”<br />之后在“名称”填写“WPAD”，数据类型选择“字符串”，“代码”填写“252”<br /><img src="http://goxia.maytide.net/up/1126585876.jpg" /><br />然后点击“确定”，并为此选型类型定义值为“http://isasrv.office.local:8080/wpad.dat”（<font color="#e00000">注：如果你只有一台ISA，那么这个值完全可以填写为IP方式，毕竟使用域名会增加一次对DNS的查询。另外wpad.dat必须是小写，因为ISA对他的名字大小写敏感。</font>）<br /><img src="http://goxia.maytide.net/up/1126586012.jpg" /><br />最后单击左侧选项中的“服务器选项”，右键选择“配置选项”，找到“252 WPAD”并购选，当完成这一步后，“作用域选项”中就自动添加上了此选择配置（在“服务器选项”上应用这个配置是一个高效的做法）。<br /><img src="http://goxia.maytide.net/up/1126586290.jpg" /></font></p><p><font color="#00a0ff">3、设置ISA启动WPAD<br />进入ISA2004控制台，单击ISA服务器，选择“配置”-“网络”-选择网络下的“内部”-右键“属性”<br />之后切换到“自动发现”购选“发布自动发布信息”<br /><img src="http://goxia.maytide.net/up/1126586591.jpg" /><br />最后切换到“防火墙客户端”，复查配置是否正确。（有网友提到如果将ISA服务器名称添写为IP，更加适合FWC客户端的查找，这里我依旧是用的是完整的FQDN，并且最终测试无错误！）<br /><img src="http://goxia.maytide.net/up/1126586805.jpg" /></font></p><p><font color="#00a0ff">完成以上的配置，ISA2004的WPAD就完成了。在客户端配置FWC自动查询，你就可以查找到ISA服务器。</font></p><p><font color="#00a0ff">结尾，在完成这些配置后我这边的客户端依旧无法找到ISA服务器，最终在DHCP中找到了问题，我设置的保留中出现了错误的MAC绑定，正好影响了AD服务器。修正后我这边才算大功告成！！欣慰啊。</font></p><p><font color="#000000">微软MVP吕劼的“深入探讨ISA Server的自动发现特性”这边文章的地址是：<br /><a href="http://www.microsoft.com/china/community/Columns/Lvjie/3.mspx">http://www.microsoft.com/china/community/Columns/Lvjie/3.mspx</a></font></p>
]]>
</description>
</item><item>
<link>https://maytide.net/read.php/708.htm</link>
<title><![CDATA[如何在ISA2004中实现EXCHANGE的OWA密码修改功能]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Archive]]></category>
<pubDate>Tue, 06 Sep 2005 10:08:21 +0000</pubDate> 
<guid>https://maytide.net/read.php/708.htm</guid> 
<description>
<![CDATA[ 
	<p>最近要啃啃 Exchange 这个产品，首先让我注意到的就是关于OWA通过ISA发布时密码修改的问题！本来打算自己做一下实验，后来因为环境比较差，所以把人家的经验总结摘抄到自己的Blog下，方便以后调试时参考！</p><p><strong>一、 设置EXCHANGE前后端服务器允许OWA修改密码</strong></p><p>1:修改后端服务器注册表<br />EXCHANGE 2003 OWA修改密码功能<br />HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeWEB\owa下面的<br />value  name:  DisablePassword<br />Type:  REG_DWORD<br />Data  :1<br />把1改为0</p><p>2：在后端服务器上建立虚拟目录<br />程序→管理工具→INTERNET服务器管理器→INTERNET信息服务界面<br /> 在默认WEB站点内，建立虚拟目录“IISADMPWD”字不错，切记。选择路径?<br />c:\windows\system32\inetsrv\iisadmpwd  。如果你安装IIS没改目录的话，就是这个目<br />录了。如果改了目录，你需要找到IISADMPWD目录。如果没有此目录，则你证书安装有<br />问题。安装权限选择“读取、运行脚本”。在IISADMPWD目录上选属性--目录安全性—<br />匿名访问和验证控制—编辑—勾选匿名访问，确定退出。</p><p>3：转到CMD界面<br />cd c:\inetpub\AdminScripts<br />运行以下的命令:<br />”adsutil.vbs set w3svc/passwordchangeflags 0”<br />注:出现提示一直点确定</p><p>4：为前端服务器申请证书<br />1) 建立CA服务器<br />2) 为WEB站点申请证书<br />选择服务器证书,在公共名称这里一定要注意要填写你在公网上的域名为前端WEB站点启用SSL</p><p>5：为前端服务器建立虚拟目录<br />程序→管理工具→INTERNET服务器管理器→INTERNET信息服务界面<br /> 在默认WEB站点内，建立虚拟目录“IISADMPWD”，应一字不错，切记。选择路径：<br />c:\windows\system32\inetsrv\iisadmpwd  。如果你安装IIS没改目录的话，就是这个目<br />录了。如果改了目录，你需要找到IISADMPWD目录。如果没有此目录，则你证书安装有<br />问题。安装权限选择“读取、运行脚本”。在IISADMPWD目录上选属性--目录安全性—<br />匿名访问和验证控制—编辑—勾选匿名访问，确定退出。<br />转到DOS字符界面<br />cd c:\inetpub\AdminScripts<br />运行以下的命令:<br />”adsutil.vbs set w3svc/passwordchangeflags 0”</p><p><strong>二、 把EXCHANGE的证书需要导出并导入给ISASERVER</strong></p><p>在前端服务器上,选择IIS管理器----默认网站----属性---目录安全性<br />选择复制到文件把证书导出,并把导出的文件COPY给ISASERVER计算机.<br />注:(在导出的时候一定要选择导出私钥)<br />在ISASERVER计算机上把证书导入.<br />在ISA服务器上运行输入MMC----证书----计算机证书<br />在证书控制台选择个人---所有任务导入证书</p><p><strong>三、 在ISA2004发布EXCHANGE的OWA</strong></p><p>1:打开ISA管理器选择防火墙策略邮件发布策略</p><p>2:选择访问类型的时候选择发布OWA,在桥接模式选项选择加密到客户端和邮件服务器</p><p>3:在WEB服务器选项选择EXCHANGE的前端服务器</p><p>4:公共域名处填写<a href="http://www.ISACN.ORG">WWW.ISACN.ORG</a>(注意:这里所填写的一定要和证书的域名一致)</p><p>5:选择WEB监听器选择启用SSL,在选择处加载在上面我们导入的证书</p><p>6:在建立的发布策略添加路径/IISADMPWD/*<br />要允许用户更改密码，务必向 Outlook Web Access 邮件服务器发布规则添加 /IISADMPWD/* 文件夹。否则，用户每次单击 Outlook Web Access 中的“更改密码”按钮时都会收到错误</p>
]]>
</description>
</item><item>
<link>https://maytide.net/read.php/709.htm</link>
<title><![CDATA[部署防火墙策略的十六条守则]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Archive]]></category>
<pubDate>Tue, 06 Sep 2005 03:43:29 +0000</pubDate> 
<guid>https://maytide.net/read.php/709.htm</guid> 
<description>
<![CDATA[ 
	<p align="left"><font size="2"><font face="Verdana">ISA使用者总结出来的守则：</font></font></p><p align="left"><font size="2"><font face="Verdana">1、<font color="#006699"><b>计算机没有大脑</b></font>。所以，当ISA的行为和你的要求不一致时，请检查你的配置而不要埋怨ISA。</font> </font></p><p><font face="Verdana" size="2">2、<b><font color="#006699">只允许你想要允许的</font></b>客户、源地址、目的地和协议。仔细的检查你的每一条规则，看规则的元素是否和你所需要的一致。</font><font face="Verdana"><font size="2"> </font></font><font face="宋体" size="2"></font></p><p><font face="Verdana" size="2">3、针对相同用户或含有相同用户子集的访问规则，<b><font color="#006699">拒绝的规则</font></b>一定要放在允许的规则前面。</font></p><p><font size="2"><font face="Verdana">4、当需要使用拒绝时，<b><font color="#006699">显式拒绝</font></b>是首要考虑的方式。</font> </font></p><p><font size="2"><font face="Verdana">5、在不影响防火墙策略执行效果的情况下，请将<b><font color="#006699">匹配度更高的规则</font></b>放在前面。</font> </font></p><p><font size="2"><font face="Verdana">6、在不影响防火墙策略执行效果的情况下，请将<b><font color="#006699">针对所有用户的规则</font></b>放在前面。</font> </font></p><p><font size="2"><font face="Verdana">7、尽量<b><font color="#006699">简化你的规则</font></b>，执行一条规则的效率永远比执行两条规则的效率高。</font> </font></p><p><font size="2"><font face="Verdana">8、永远不要在商业网络中使用<font color="#006699"><b> Allow</b> <font color="#000000"></font><font color="#ff0000"><b>4 ALL</b></font></font><font color="#000000">规则</font>（<b><font color="#006699">Allow</font></b> <font color="#ff0000">all</font> users use <font color="#ff0000">all</font> protocols from <font color="#ff0000">all</font> networks to<font color="#ff0000"> all</font> networks），这样只是让你的ISA形同虚设。</font> </font></p><p><font size="2"><font face="Verdana">9、如果可以通过<font color="#006699"><b>配置系统策略</b></font>来实现，就没有必要再建立自定义规则。</font> </font></p><p><font size="2"><font face="Verdana">10、ISA的<font color="#006699"><b>每条访问规则都是独立的</b></font>，执行每条访问规则时不会受到其他访问规则的影响。</font> </font></p><p><font size="2"><font face="Verdana">11、永远也<font color="#006699"><b>不要允许任何网络访问ISA本机的所有协议</b></font>。内部网络也是不可信的。</font> </font></p><p><font size="2"><font face="Verdana">12、<font color="#006699"><b>SNat客户不能提交身份验证信息</b></font>。所以，当你使用了身份验证时，请配置客户为Web代理客户或防火墙客户。</font> </font></p><p><font size="2"><font face="Verdana">13、无论作为访问规则中的目的还是源，<font color="#006699"><b>最好使用IP地址</b></font>。</font> </font></p><p><font size="2"><font face="Verdana">14、如果你一定要在访问规则中使用<font color="#006699"><b>域名集</b></font>或<font color="#006699"><b>URL集</b></font>，最好将客户配置为<font color="#006699"><b>Web代理客户</b></font>。</font> </font></p><p><font size="2"><font face="Verdana">15、请不要忘了，<b><font color="#006699">防火墙策略的最后</font></b>还有一条<font color="#ff0000">DENY 4 ALL</font>。</font> </font></p><p><font size="2"><font face="Verdana">16、最后，请记住，防火墙策略的<font color="#006699"><b>测试是必需的</b></font>。</font></font></p>
]]>
</description>
</item><item>
<link>https://maytide.net/read.php/724.htm</link>
<title><![CDATA[检讨ISA2004 VPN部署失败原因]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Archive]]></category>
<pubDate>Thu, 14 Jul 2005 05:02:22 +0000</pubDate> 
<guid>https://maytide.net/read.php/724.htm</guid> 
<description>
<![CDATA[ 
	<p>部署前看了些资料，发现并不难，于是开始测试。</p><p>搭建好虚拟平台，使用2003SP1系统，ISA2004标准版</p><p>安装后没发现什么异常，然后部署VPN，启用后死活就是无法连接上，到底是哪里错了？哪里的配置都没有错啊！只是日志中总有什么防火墙无法写入到注册表，我以为是内存太少造成的也就没有理会，继续分析。就这样折腾了好几天，最后跟一个朋友在QQ谈起来问及补丁的事情才发现，NND问题原来出在没有安装补丁的原因，因为2003SP1的安全级别更高所以会限制ISA的一些运行机制，必须安装ISA2004SP1补丁后才可以，最后急忙打上补丁果然一切OK了，我考！就是一个这个小小的疏忽，让我折腾了几天都没搞明白为什么我错误配置都是对的他NND就是连接不上。</p><p>所以我告诫自己，以后一定要查看运行说明，2003SP1看来真的是和自家的产品也过意不去。</p><p>ISA2004 SP1的下载地址是：</p><p><a href="http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=69c5d85c-5c80-473c-9cb4-60dda75d568d">http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&amp;FamilyID=69c5d85c-5c80-473c-9cb4-60dda75d568d</a></p>
]]>
</description>
</item><item>
<link>https://maytide.net/read.php/726.htm</link>
<title><![CDATA[将ISA Server 2004服务器计算机配置为DHCP服务器]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Archive]]></category>
<pubDate>Wed, 06 Jul 2005 04:57:29 +0000</pubDate> 
<guid>https://maytide.net/read.php/726.htm</guid> 
<description>
<![CDATA[ 
	<p>在ISACN.ORG看到一篇好文章特转到自己的Blog上保留</p><p><font color="#006699"><span style="FONT-WEIGHT: 700; FONT-SIZE: 16pt">概述</span></font> <br /></p><p>在某些配置中，您可能想在一台 DHCP 服务器上安装 Microsoft Internet Security and Acceleration (ISA) Server 2004。本文档将设法解决您在配置这样一个方案时可能会遇到的问题。 </p><p /><p>　 <br /></p><p><font color="#006699"><span style="FONT-WEIGHT: 700; FONT-SIZE: 16pt">创建 DHCP <br />规则</span></font> <br /></p><p>默认情况下，当您在一台 DHCP 服务器上安装 ISA 服务器时，DHCP 服务器不会对请求做出响应。要使 DHCP 服务器运行，您需要创建下列规则： <br /></p><ul><br /><li>一条允许从 DHCP 客户端所在的网络向本地主机网络发送 DHCP 请求的规则。 <br /></li><li>一条允许从本地主机网络向 DHCP 客户端所在的网络发送 DHCP 答复的规则。 <br /></li></ul><p><br /></p><p>　 <br /></p><p><font color="#006699"><span style="FONT-WEIGHT: 700; FONT-SIZE: 16pt">允许 DHCP（请求）协议 </span></font>在此过程中，DHCP 客户端位于内部网络中。要允许 DHCP（请求）协议，请执行以下步骤。 <br /></p><p></p><p>1.在“ISA 服务器管理”的“防火墙策略”节点中，右键单击“防火墙策略”，指向“新建”，然后单击“访问规则”。 <br /></p><p>2.在“新建访问规则向导”中，为该规则键入一个名称。例如：允许 DHCP 请求。然后，单击“下一步”。 <br /></p><p>3.在“规则操作”页上，单击“允许”。然后，单击“下一步”。 <br /></p><p>4.在“协议”页上，在“此规则应用于”中，单击“所选的协议”。然后单击“添加”。 <br /></p><p>5.在“添加协议”中，在“所有协议”部分单击“DHCP（请求）”。单击“添加”，单击“关闭”，然后单击“下一步”。 <br /></p><p>6.在“访问规则来源”页上，单击“添加”。 <br /></p><p>7.在“添加网络实体”中，在“网络”部分单击“内部”。单击“添加”，单击“关闭”，然后单击“下一步”。 <br /></p><p>8.在“访问规则目标”页上，单击“添加”。 <br /></p><p>9.在“添加网络实体”中，在“网络”部分单击“本地主机”。单击“添加”，单击“关闭”，然后单击“下一步”。 <br /></p><p>10.在“用户设置”页上，默认情况下“所有用户”已选中。单击“下一步”，然后单击“完成”。 <br /></p><p>　 <br /></p><p /><p><font color="#006699"><span style="FONT-WEIGHT: 700; FONT-SIZE: 16pt">允许 DHCP（答复）协议 </span></font>在此过程中，DHCP 客户端位于内部网络中。要允许 DHCP（答复）协议，请执行以下步骤。 <br /></p><p></p><p>1.在“ISA 服务器管理”的“防火墙策略”节点中，右键单击“防火墙策略”，指向“新建”，然后单击“访问规则”。 <br /></p><p>2.在“新建访问规则向导”中，为该规则键入一个名称。例如：允许 DHCP 答复。然后，单击“下一步”。 <br /></p><p>3.在“规则操作”页上，单击“允许”。然后，单击“下一步”。 <br /></p><p>4.在“协议”页上，在“此规则应用于”中，单击“所选的协议”。然后单击“添加”。 <br /></p><p>5.在“添加协议”中，在“所有协议”部分单击“DHCP（答复）”。单击“添加”，单击“关闭”，然后单击“下一步”。 <br /></p><p>6.在“访问规则来源”页上，单击“添加”。 <br /></p><p>7.在“添加网络实体”中，在“网络”部分单击“本地主机”。单击“添加”，单击“关闭”，然后单击“下一步”。 <br /></p><p>8.在“访问规则目标”页上，单击“添加”。 <br /></p><p>9.在“添加网络实体”中，在“网络”部分单击“内部”。单击“添加”，单击“关闭”，然后单击“下一步”。 <br /></p><p>10.在“用户设置”页上，默认情况下“所有用户”已选中。单击“下一步”，然后单击“完成”。 </p><p /><p /><p /><p><font color="#006699"><span style="FONT-WEIGHT: 700; FONT-SIZE: 16pt">排序DHCP请求规则 </span></font>DHCP 请求目标是一个广播地址。ISA 服务器不会对广播通讯执行名称解析，而会拒绝这种通讯。如果有一条允许或拒绝规则匹配 DHCP 请求并要求进行名称解析，并且此规则在规则顺序中高于您所创建的 DHCP 请求规则，则 DHCP 通讯可能会被拒绝。 </p><p></p><p /><p>要求进行名称解析的规则在目标（至）条件中包含一个域名称集或一个 URL 集。请注意，如果在此规则中有其他不匹配 DHCP 请求的条件，就不会发生冲突。 </p><p /><p><font color="#ff0000">为避免冲突，应确保您配置的允许 DHCP 请求的规则在规则排序中高于其他任何匹配 DHCP <br />请求的、使用名称解析的规则</font>。从下面的例子中可以看出此原则。</p>
]]>
</description>
</item>
</channel>
</rss>