16.1 查找工作组的主浏览器
nmblookup -M [Master Browser]
nmblookup -S [NetBIOS name]
nmblookup -A [IP address]
一个Samba服务器其实使用2个守护进程:smbd
和nmbd
。smbd
负责生成共享;nmbd
则负责将NetBIOS名称(用于标识使用SMB的机器)映射到其IP地址,这样才可能发现和浏览SMB共享。现在主要介绍与nmbd
通信的命令,以便对你正在查询的Windows工作组有总体的了解。
说明 假设在以下例子中使用的是Windows工作组,而不是域。工作组(workgroup)本质上就是由多台机器组成的一个小组,这些机器将自己标识为工作组的成员,表示它们属于某个团体。而域(domain)则需要使用一个中央服务器(在大型网络中可能有多个服务器)来验证想要加入网络的计算机和用户。域就像头体型高大、毛茸茸的野兽,很复杂,如果你想了解有关域的更多详情,最好参考本章介绍中提到的那些图书。
在Windows 工作组中,需要用一台机器来保存跟踪工作组中其他的成员的信息(例如,它们的SMB名称和IP地址)。这台机器就是所谓的Master Browser(主浏览器)。但是工作组中的哪台计算机是Master Browser呢?推选哪台计算机作为Master Browser,得基于它所运行的操作系统。最新的、功能最强的OS总能获胜,比如Windows XP总能打败Windows 2000,而Windows 2000又总能打败Windows 98。
不过,当安装Samba 服务器时,也有可能进行一定的配置,让某个服务器总能在任何这样的选举中胜出,而让其他的机器互相打架;或者干脆进行配置,让服务器总能赢得任何选举。如果已经知道Samba共享的位置,就可以直接连接到Samba共享。不过,万一有任何问题,Samba能够提供你要的Master Browser在什么位置。
要查询网络中的Master Browser,可以运行带有-M
(或--master- browser
)选项的nmblookup
命令,最后再跟一个“-
”,这个字符基本上表示“给我找一个Master Browser”。不过,现在的问题是在命令行中不能直接用这个“-
”,否则shell会认为它是表示某个选项的开始。所以,还得在它前面先多加一个“--
”,这样就告诉shell:接下来的“-
”就表示“-
”,不是某个选项的组成部分。
$ nmblookup -M -- -
querying __MSBROWSE__ on 192.168.1.255
192.168.1.151 __MSBROWSE__<01>
192.168.1.104 __MSBROWSE__<01>
真不错。在这个例子中,显示在网络中有两个Master Browser,哪一个是实际要使用的呢?因为不同的Master在不同的时间知道的机器也可能不同,这让用户在使用时也是一团糟。一分钟前,用户还能访问某个机器,接着就找不到这个机器在哪了。为什么? 因为只有一台Master知道那台机器在哪,而其他机器都不知道。试着向从事会计工作的Bob解释下这个问题。
要得到有关Master的更多信息,可以使用带有-S
(或--status
)选项的nmblookup
命令,它将返回主机使用的SMB名称,如下所示:
$ nmblookup -S 192.168.1.151
querying 192.168.1.151 on 192.168.1.255
name_query failed to find name 192.168.1.151
可结果并不好用,因为-S
选项需要的是NetBIOS名称,而不是IP地址。遗憾的是,现在还不知道机器的NetBIOS名,只知道它的IP地址。其实,这不是问题。只要再加个-A
(或--lookup-by-ip
)选项,就可以告诉nmblookup
现在给出的是IP地址,而不是NetBIOS名称。
$ nmblookup -SA 192.168.1.151
Looking up status of 192.168.1.151
JANSMAC <00> - B <ACTIVE>
JANSMAC <03> - B <ACTIVE>
JANSMAC <20> - B <ACTIVE>
..__MSBROWSE__. <01> - <GROUP> B <ACTIVE>
MILTON <00> - <GROUP> B <ACTIVE>
MILTON <1d> - B <ACTIVE>
MILTON <1e> - <GROUP> B <ACTIVE>
MAC Address = 00-00-00-00-00-00
现在就能知道IP地址为192.168.1.151的机器将它自己标记为JANSMAC
(这一定是一台Mac OS计算机),是MILTON
工作组的Master。其他IP地址呢?
$ nmblookup -SA 192.168.1.104
Looking up status of 192.168.1.104
ELIOT <00> - B <ACTIVE>
ELIOT <03> - B <ACTIVE>
ELIOT <20> - B <ACTIVE>
..__MSBROWSE__. <01> - <GROUP> B <ACTIVE>
TURING <00> - <GROUP> B <ACTIVE>
TURING <1d> - B <ACTIVE>
TURING <1e> - <GROUP> B <ACTIVE>
MAC Address = 00-00-00-00-00-00
IP地址为192.168.1.104的计算机的NetBIOS名称为ELIOT
,它是TURING
工作组的Master 。所以,这里其实没什么好担心的,因为两台机器分别是不同工作组的Master。将自己标记为MILTON
组成员的机器会向JANSMAC
查询信息,而属于TURING
组的机器使用的是ELIOT
。
说明 有关这些例子中输出内容的更多信息,可以参见Microsoft的Knowledge Base(http://support.microsoft.com/kb/q163409/)。