在运行Computer Browser的环境中,IP网络的域的主浏览器与网段的主浏览器交互,借助NetBIOS名称解析和几个特殊的NetBIOS名称,装配出成员机器和设备的列表。要顺利解决Computer Browser服务运行中出现的问题,就必须掌握必要的工具,熟悉应当采用怎样的步骤来检测故障。
一、诊断工具
微软提供了两个专门用来监视和检测浏览服务的工具:Browser Monitor(即browmon.exe),和Browser Status(browstat.exe)。应当注意的是,在多协议网络中,这两个工具都只报告本地机器支持的协议的浏览列表。
Browmon是一个GUI工具,Win NT 4.0和Win 2K的资源工具包都提供了这个工具。Browmon针对每一个要求监视的域,显示出各个协议的浏览子系统的状态,如图一所示。双击一种协议显示出图二的详细信息,包括主、后备浏览器的名称和每一个浏览器上域、服务器的清单。
图一
Browmon能够按照用户指定的间隔自动刷新浏览列表,利用Browmon可以快速找出域的主浏览器和后备浏览器。
Browstat比Browmon还要强大,除了显示浏览列表之外,它还能够强制执行选举和复位主浏览器。NT 4.0资源工具包提供了Browstat的一个早期版本,Win 2K资源工具包提供了Browstat的一个升级版本。两个版本的故障检测能力基本相同,但Win 2K的版本用起来方便一些。NT 4.0提供的Browstat要求在每一个命令中提供协议名称。协议名称可以通过Net Config Rdr命令获得。例如,假设在一台Win 2K Pro机器上执行Net Config Rdr命令的结果如图三所示,如果要用NT 4.0版本的Browstat显示出后备浏览器清单,应当执行:browstat gb NetBT_Tcpip_{4C8BA126-9BF4-476D-8BDB-3BB8548347B3}。(其中Gb即为Getblist,它是Browstat的一个子命令,用来提取后备浏览器的清单)。
图三:
图四
二、配置要点
为了减少Computer Browser服务运行中可能出现的问题,建议按照如下规则进行配置。
㈡确定每一个网段中的哪些机器是主浏览器。在每一个网段中,选取一到二台服务器,把它的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Browser\Parameters\IsDomainMaster注册子键设置成True。如果网段只有一台服务器,选取一到二台工作站作为浏览器,以防服务器关机。注意浏览器选举的决策过程:只有当网段中不存在服务器时,才会根据IsDomainMaster=True让工作站赢得浏览器选举。
㈢确保每一个网段的主浏览器能够找到域的主浏览器——即,能够解析domain_name<1Bh> NetBIOS名称。网段主浏览器可以通过WINS系统或AD找到域的主浏览器。如果既没有WINS也没有AD,则应当为网段中每一个潜在的浏览器配置LMHOSTS文件。
192.168.0.1 "MYDOMAIN x1B" #PRE
192.168.0.1 DC1 #PRE #DOM:MYDOMAIN
第一行内容显式地配置了domain_name<1Bh> NetBIOS名称解析方式。注意,域名(包含从第16个字符开始的十六进制值,中间用空格补足位数)必须用引号包围。第二行表示DC1是MYDOMAIN的DC,并要求生成一个MYDOMAIN<1Ch>的组纪录。准备好LMHOSTS文件后,执行nbtstat -R装入LMHOSTS文件,执行nbtstat -r显示验证修改结果。
三、排除故障
是否能够成功地浏览网络资源,依赖于一系列Windows基本网络子系统是否能够正确协作,因此也不存在放之四海而皆准的故障解决方案,具体的解决步骤应当根据症状表现确定,而且往往还依赖于对网络结构有一个正确、全面的了解。
尽管无法给出通用的解决方案,但我们可以讨论一种典型的情形:客户机的浏览列表中缺少一台或者多台计算机,或者缺少某个广播域的所有计算机。在排除故障过程中,一种行之有效的办法是按照系统的处理过程,逐步检查,直至找到故障点所在。所以,检查过程应当从丢失的计算机所在的广播域开始,最后到客户机广播域上的不完整浏览列表。
下面的检查过程假定已经对丢失的计算机进行了最基本的检查,包括它是否正在运行,网络连接是否有效。这个过程可以找出那个地方出了问题,确定了故障点之后就可以确定哪些项目必须进一步检查。在排除浏览故障的过程中,应注意故障的原因可能是名称解析失败,可能是由于一台或者多台计算机的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\Hidden注册子键设置成了1,可能是由于网段的主浏览器无法接收到成员机器的通告,还可能是由于主浏览器和丢失的机器没有运行共同的传输协议。
检查操作最好在网段主浏览器所在广播域内的机器上进行,避免路由或WINS服务器可能对检查过程产生的影响。下面的检查步骤说明假定使用的是Win2K版的Browstat,协议编号2,域名MYDOMAIN,PDC的名称是DC1,网段主浏览器SERVER1,后备浏览器是BACKUP1。
如果Browstat不能找到网段主浏览器,检查网段上是否至少有一台机器有作为浏览器的资格。然后,用下面的两种方法之一强制执行浏览器选举:其一,在丢失计算机的网段中,停止并重新启动DC(或一台HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Brows-er\Parameters\IsDomainMaster注册键设置成True的机器)的Computer Browser服务;其二,执行:browstat elect 2 mydomain。
⑵ 检查网段主浏览器浏览列表的完整性,执行:browstat view 2 \\server1。Browstat将从命令行指定的服务器提取浏览列表。浏览列表提供了每一个机器的服务代码:MBR表示主浏览器,PBR表示可能的浏览器,BBR表示后备浏览器。
如果浏览列表只包含本地网段的机器,很可能网段主浏览器不能连接到域的主浏览器(即PDC),而这又可能是由于路由或其他网络连接问题,或名称解析失败。要确定网段的主浏览器是否能够获得PDC的名称,可以在网段主浏览器所在的机器上执行:browstat getpdc 2 mydomain。这个命令在指定传输端口上发出一个domain_name<1Bh>的NetBIOS名称解析请求。如果请求成功,它将返回PDC的名称。
如果Browstat Getpdc命令不能返回PDC的名称,首先必须解决名称解析问题。处理这方面的问题已经超出了本文的范围,但请参见关于WINS的详细说明:[url]http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/tcpip/part2/tcpch07.asp[/url]。
为了提取对方的浏览列表,域的主浏览器和网段主浏览器必须能够解析对方的computer_name<00h>名称。为此,可以从网段主浏览器映射一个驱动器到域的主浏览器,验证两台机器能够解析对方的computer_name<00h>名称。
如果本地网段主浏览器的列表缺少某台机器,可以用一个Browstat子命令强制本地网段的所有机器宣告自身:browstat forceannounce 2 mydomain。强制执行宣告之后,一定要等待一段时间,以便浏览列表传播到其他机器。
⑶ 检查域主浏览器的浏览列表的完整性,执行:browstat view 2 \\dc1。(注意DC1是域的主浏览器PDC的名称)。如果丢失的机器在它本地的网段浏览器的列表中可见,但在域主浏览器的列表中不可见,则应当检查步骤2的名称解析问题。
⑷ 确定客户网段的主浏览器,检查其浏览列表。如果域的主浏览器的浏览列表是完整的,则问题在客户机广播域或者客户机与域主浏览器通信过程中。按照步骤1和2的说明,确定客户机所在网段的主浏览器,检查其浏览列表。如果客户网段主浏览器的浏览列表不完整,按照步骤2的说明检查名称解析问题;如果列表完整,问题可能在网段的后备浏览器。
⑸ 确定客户网段的后备浏览器,检查它们的浏览列表。由于客户机可以从网段内的任意浏览器获取其浏览列表,后备浏览器如果存在问题,也可能导致客户机的浏览列表不完整。注意在同一个网段内,从主浏览器传播浏览列表的变化到后备浏览器,可能需要消耗多达12分钟的时间。
利用Browmon或Browstat可以确定客户机广播域内的哪些机器是后备浏览器,然后比较后备浏览器当前的浏览列表。在Browmon中,图标中不带红点的浏览器属于后备浏览器。或者,执行Browstat的子命令browstat status,列出本地网段的每一个传输端口的后备浏览器。然后,对于每一个后备浏览器,执行browstat view 2 \\backup1检查各个浏览列表的完整性。如果后备浏览器的浏览列表不完整,通过映射一个从后备浏览器到网段主浏览器的驱动器,检查其解析segment_master_browser<00h>名称的能力。