Computer Browser工具和技巧

Windows的Computer Browser服务维护着一个网络资源的清单,其中包括基于Windows的域、工作组和计算机,还有其他支持NetBIOS协议的网络设备,“网上邻居”显示的内容正是来源于此。在基于Windows 2000的网络中,活动目录(Active Directory,AD)取代了Computer Browser服务。但是,如果网络由Win2K和Win NT混合构成,且包含非Win2K的域控制器,或者网络上某些客户端不支持AD,Computer Browser服务仍是必不可少的。

在运行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.gif

browmon2.gif

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的一个子命令,用来提取后备浏览器的清单)。

browmon3.gif

Win2K版的Browstat有一个Dumpnet子命令,能够显示出协议名称并分别赋予一位数字的协议编号,所有Browstat其他子命令中的协议名称都可以用这个协议编号替代。例如,假设Browstat dumpnet命令赋予上述协议的编号是1,则提取后备浏览器清单时,只需执行Browstat gb 1就可以了,如图四。
browmon4.gif

二、配置要点

为了减少Computer Browser服务运行中可能出现的问题,建议按照如下规则进行配置。

㈠对于所有拥有一个以上适配器和IP地址的机器,把HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services Browser\Parameters\MaintainServerList注册子键设置成No,使得该机器不会获得任何浏览器角色(包括主浏览器、后备浏览器)。

㈡确定每一个网段中的哪些机器是主浏览器。在每一个网段中,选取一到二台服务器,把它的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Browser\Parameters\IsDomainMaster注册子键设置成True。如果网段只有一台服务器,选取一到二台工作站作为浏览器,以防服务器关机。注意浏览器选举的决策过程:只有当网段中不存在服务器时,才会根据IsDomainMaster=True让工作站赢得浏览器选举。
㈢确保每一个网段的主浏览器能够找到域的主浏览器——即,能够解析domain_name<1Bh> NetBIOS名称。网段主浏览器可以通过WINS系统或AD找到域的主浏览器。如果既没有WINS也没有AD,则应当为网段中每一个潜在的浏览器配置LMHOSTS文件。

假设域的NetBIOS名称是MYDOMAIN,PDC的NetBIOS名称是DC1,IP地址是192.168.0.1,LMHOSTS文件的内容如下所示:
引用内容
192.168.0.1 "MYDOMAIN \0x1B" #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。

(1)寻找丢失计算机的网段主浏览器,执行:browstat status。Browstat显示出网段主、后备浏览器的名称以及摘要的浏览列表。Browstat把domain_name<1Dh> NetBIOS名称解析成网段主浏览器的地址。网段主浏览器赢得选举之后,它的Computer Browser服务把domain_name<1dh>名称注册到NetBIOS,但不注册到WINS,确保广播名称解析会把该名称解析成本地网段主浏览器的IP地址。如果Browstat不能找到网段主浏览器,检查网段上是否至少有一台机器有作为浏览器的资格。然后,用下面的两种方法之一强制执行浏览器选举:其一,在丢失计算机的网段中,停止并重新启动DC(或一台HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Brows-er\Parameters\IsDomainMaster注册键设置成True的机器)的Computer Browser服务;其二,执行:browstat elect 2 mydomain。

(2)检查网段主浏览器浏览列表的完整性,执行:browstat view 2 \\server1。Browstat将从命令行指定的服务器提取浏览列表。浏览列表提供了每一个机器的服务代码:MBR表示主浏览器,PBR表示可能的浏览器,BBR表示后备浏览器。如果浏览列表只包含本地网段的机器,很可能网段主浏览器不能连接到域的主浏览器(即PDC),而这又可能是由于路由或其他网络连接问题,或名称解析失败。要确定网段的主浏览器是否能够获得PDC的名称,可以在网段主浏览器所在的机器上执行:browstat getpdc 2 mydomain。这个命令在指定传输端口上发出一个domain_name<1Bh>的NetBIOS名称解析请求。如果请求成功,它将返回PDC的名称。如果Browstat Getpdc命令不能返回PDC的名称,首先必须解决名称解析问题。处理这方面的问题已经超出了本文的范围,但请参见关于WINS的详细说明:http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/tcpip/part2/tcpch07.asp。
为了提取对方的浏览列表,域的主浏览器和网段主浏览器必须能够解析对方的computer_name<00h>名称。为此,可以从网段主浏览器映射一个驱动器到域的主浏览器,验证两台机器能够解析对方的computer_name<00h>名称。如果本地网段主浏览器的列表缺少某台机器,可以用一个Browstat子命令强制本地网段的所有机器宣告自身:browstat forceannounce 2 mydomain。强制执行宣告之后,一定要等待一段时间,以便浏览列表传播到其他机器。

(3)检查域主浏览器的浏览列表的完整性,执行:browstat view 2 \\dc1。(注意DC1是域的主浏览器PDC的名称)。如果丢失的机器在它本地的网段浏览器的列表中可见,但在域主浏览器的列表中不可见,则应当检查步骤2的名称解析问题。

(4)确定客户网段的主浏览器,检查其浏览列表。如果域的主浏览器的浏览列表是完整的,则问题在客户机广播域或者客户机与域主浏览器通信过程中。按照步骤1和2的说明,确定客户机所在网段的主浏览器,检查其浏览列表。如果客户网段主浏览器的浏览列表不完整,按照步骤2的说明检查名称解析问题;如果列表完整,问题可能在网段的后备浏览器。

(5)确定客户网段的后备浏览器,检查它们的浏览列表。由于客户机可以从网段内的任意浏览器获取其浏览列表,后备浏览器如果存在问题,也可能导致客户机的浏览列表不完整。注意在同一个网段内,从主浏览器传播浏览列表的变化到后备浏览器,可能需要消耗多达12分钟的时间。利用Browmon或Browstat可以确定客户机广播域内的哪些机器是后备浏览器,然后比较后备浏览器当前的浏览列表。在Browmon中,图标中不带红点的浏览器属于后备浏览器。或者,执行Browstat的子命令browstat status,列出本地网段的每一个传输端口的后备浏览器。然后,对于每一个后备浏览器,执行browstat view 2 \\backup1检查各个浏览列表的完整性。如果后备浏览器的浏览列表不完整,通过映射一个从后备浏览器到网段主浏览器的驱动器,检查其解析segment_master_browser<00h>名称的能力。

从某种意义上来说,排除Computer Browser系统的故障是一种对综合技能的测验,需要对Windows网络子系统的全面理解。然而,只要经常实践,深入了解Windows网络的运行机制,再加上适当的工具,要诊断和排除Computer Browser故障应该不是什么难事。