学习 Linux, 302(混合环境): NetBIOS 和 WINS

配置 Samba 为名称提供服务并管理浏览

在 SMB/CIFS 网络中,命名并不常用。虽然现代的客户端可以使用互联网域名来互相引用,但依赖于 Microsoft 特定的系统的旧客户端被称为 Windows Internet Name Service (WINS) 服务器,或 NetBIOS Name Server (NBNS);这两个术语是同义词。因此,正确配置 Samba 对于名称解析而言非常重要。对浏览进行配置也很重要,浏览是服务器了解特定服务器上哪些共享内容可用的一种机制。

Roderick W. Smith, 顾问兼作家

Roderick W. Smith 是一位顾问兼作家,他撰写了十多本关于 UNIX 和 Linux 的书,包括 The Definitive Guide to Samba 3、Linux in a Windows World Linux Professional Institute Certification Study Guide。他还是 GPT fdisk 分区软件的作者。他目前定居罗得岛州的 Woonsocket 市。



2012 年 2 月 20 日

关于本系列

本系列文章帮助您了解 Linux 系统管理任务。您可以使用本系列文章的资料准备 Linux Professional Institute Certification 级别 3 (LPIC-3) 考试

参见我们的 学习 Linux, 302(混合环境):LPI-302 路线图,查看本系列中各篇文章的介绍和链接。路线图目前仍在更新中,目前反映的最新内容是 LPIC-3 考试的最新目标(2011 年 3 月)。在我们完成每篇文章后,都会将其添加到路线图中。

概述

在本文中,将学习以下概念:

  • Windows Internet Name Service (WINS)
  • Network Input/Output System (NetBIOS)
  • 本地主浏览器特性
  • 域主浏览器特性
  • 名称解析
  • 配置和使用 Samba 作为 WINS/NetBIOS Name Server (NBNS)
  • NetBIOS 浏览、选举和服务公告

本文帮助您准备 Linux Professional Institute's (LPI) Mixed Environment 特性考试 (302) 的主题 314 下的目标 314.2。该目标的权值为 7。


先决条件

关于可选的 LPI-302 考试

与其他许多认证一样,Linux Professional Institute Certification (LPIC) 提供多个不同级别,每个级别都比前一个级别要求更多知识和经验。LPI-302 考试是 LPIC 层级的第三级中的一门选修专业考试,要求具备高级 Linux 系统管理知识。

要通过 LPIC-3 认证,您必须通过前两个一级考试(101 和 102),两个二级考试(201 和 202),以及 LPIC-3 核心考试 (301)。到达这个级别后,才能参加一些选修专业考试,比如 LPI-302

本文假设您拥有 Linux 命令行函数的工作知识,理解 Samba 配置的基础知识。您应该熟悉 smb.conf 配置文件的总体结构。您还应该对域名系统 (DNS) 有基本的了解,DNS 是本文所涉及的部分主题的比较点。


理解 NetBIOS 名称解析

构建您自己的提要

您可以构建一个 RSS、Atom 或 HTML 提要,以便在我们添加新文章或更新内容时收到通知。访问 developerWorks RSS 提要。选择 Linux 作为专区, Articles 作为类型,输入 Linux Professional Institute 作为关键字。然后选择您想要的提要类型。

在大多数情况下,无论您使用何种协议,计算机的名称都可能是相同的。不过,在使用 Server Message Block (SMB)/Common Internet File System (CIFS) 协议的情况下,存在一些小问题,主要原因是普通 TCP/IP 范围之外的协议历史。具体来说,SMB/CIFS 起源于使用 NetBIOS 和 NetBIOS Extended User Interface (NetBEUI) 协议的网络,这些协议有自己的规则。当 SMB/CIFS 被修改为能与 TCP/IP 协议配合使用时,有些旧的 NetBIOS 命名约定必须适应 TCP/IP 的使用。虽然您不必总是遵循现代的 SMB/CIFS 客户端和服务器的 NetBIOS 命名约定,但有时您必须这样做,所以您应该理解这些规则,其中包括 NetBIOS 解析名称的不同方式以及 WINS 服务器在您的网络上的作用。

理解 NetBIOS

图 1 使用 Open System Interconnection(开放系统互连)模型显示了一对网络堆栈(客户端和服务器)的表示形式。可以将 SMB/CIFS 视为该模型中的一个表示层协议栈。在最初的预 TCP/IP 实现中,SMB/CIFS 依赖于会话层的 NetBIOS,而 NetBIOS 又依赖于传输层上的 NetBEUI。

图 1. NetBEUI 和 NetBIOS 是网络协议栈中的会话层和传输层协议
该图显示了 NetBEUI 和 NetBIOS 如何成为网络协议栈中的会话层和传输层协议

在 Linux 中,NetBIOS 和 NetBEUI 都不存在。Samba 承担起了 SMB/CIFS 协议和 NetBIOS 实现的职责。Samba 没有使用 NetBEUI,而是通过 TCP 和 User Datagram Protocol(UDP,用户数据报协议)进行通信。TCP/IP 与 NetBIOS 相结合,有时也被称为 NBT,其职责包括:

  • 名称服务。在 TCP/IP 网络中,计算机具有供人们使用的名称,但计算机通常使用 IP 地址和硬件地址进行通信。在 NetBEUI 中,没有使用 IP 地址,只使用名称和硬件地址。因此,NBT 负责创建 IP 地址,但这在使用 NetBIOS 和 NetBEUI 网络的 SMB/CIFS 上是不需要的。本文的上半部分专门将讨论这个主题。
  • 数据报服务。这是一种网络通信类型,它不会创建永久连接。在 TCP/IP 中,它大致相当于 UDP,所以 NBT 对需要数据报服务的特性使用 UDP,如在本文下半部分中所描述的浏览器选举。
  • 会话服务。NetBIOS 事务为大部分数据传输请求(例如,用户装载文件共享)提供更长时间的连接。这种服务类型逻辑映射到 TCP/IP 协议的 TCP 部分,因此,NBT 对这种连接使用 TCP。

在实践中,NBT 很少被提及;在描述 SMB/CIFS 网络中所使用的名称以及如何将它们映射到 IP 地址的时候,我们通常使用 NetBIOS 名称NetBIOS 名称解析。NetBIOS 名称由两部分组成:

  • 机器名称。与 DNS 中的机器名称相似,该名称代表一台特定的计算机。在实际操作中,该名称最好与计算机的 DNS 机器名称相同。机器名称在整个世界中可能并不是惟一的,但它在您的网络上应该是惟一的,至少在该计算机的工作组或域中应该是惟一的。
  • 工作组名称。该名称适用于网络中所有相关的计算机。在一个简单的(非域)SMB/CIFS 配置中,如本文下半部分所述,工作组名称只是一种组织计算机的方式,方便浏览使用。在被配置为域的网络中,会将工作组名称分配给域,如在 “学习 Linux,302(混合环境):域控制” 中所述,它提供域级别的服务。

NetBIOS 网络是本地范围的,其原因之一正是这个两级的命名系统,至少与基于 TCP/IP 的遍布全球的 Internet 相比而言是这样。由于只有两个命名级别,要使所创建的名称的惟一性真正足以识别数十亿台计算机,这是不切实际的。

在 NetBIOS 网络中,每台计算机都配置了自己的名称,并使用广播 向网络公布自己的名称。对于相对缺乏经验的用户和管理员来说,这种分散的命名方式使得安装变得比较容易,只要他们尝试使用的名称尚未被使用即可。

NetBIOS 名称的长度最多为 15 个字符。它们可以包含字母、数字和下列符号:

! @ # $ % ^ & ( ) - ' { } . ~

在实际操作中,会将名称限制为字母形式,也可以包含数字,通常最好结合使用字母和数字。在名称中的字母不区分大小写。在本文中,我在 NetBIOS 名称中使用大写字母,在 DNS 名称中则使用小写字母。

尽管 DOS、Windows 和 IBM Operating System/2 (OS/2) 都支持 NetBEUI,但它们如今基本上都使用 NBT,即使在所有计算机都使用 NetBEUI 的网络中也是如此。NBT 操作和 NetBIOS 名称解析的基本原理在所有这些平台上都是相同的。

NetBIOS 名称解析的类型

假设用户坐在工作站前,他要访问名称为 SPEAKER 的服务器。用户启动一个合适的客户端应用程序,并输入 SPEAKER 作为服务器名称。接下来会发生什么呢?NBT 网络上有四种不同的名称解析方法:

  • 广播解析。客户端可以发送一条本地网络上的所有计算机都能接收的广播消息,询问与主机名 SPEAKER 有关联的 IP 地址。然后,该计算机应该做出响应,客户端可以发起连接,进行后续的数据传输。这种类型的名称解析有时也被称为 B 模式 名称解析,而使用该方法的计算机上被专门称为 B-node(B-节点)
  • 使用名称服务器。客户端可以联系 NBNS 服务器或 WINS 服务器。(这两个术语是同义词。)像 DNS 服务器一样,WINS 服务器维护 IP 地址和主机名称之间的映射。不过,WINS 服务器收集映射的依据是计算机在启动时发出的广播,而不是本地维护的配置文件和咨询其他服务器。这种方法有时被称为 P 模式 名称解析。
  • 使用 lmhosts。一个名为 lmhosts 的配置文件(通常存储在 Samba 系统上的 /etc/samba 中,或存储在Windows系统上的 C:\WINDOWS\SYSTEM32\DRIVERS\ETC 中)可以将 IP 地址存储到主机名称的映射。该文件类似于 /etc/hosts 文件,它提供的用途与 TCP/IP 主机名称类似。
  • 使用 DNS。虽然它不是 NBT 的一部分,但您可以配置 Samba,使用 DNS 进行 NetBIOS 名称解析。(对于流行版本的 Windows 也同样如此。)

许多计算机都被配置为以某个特定的顺序使用几种名称解析方法,以便最大限度地找到所需的系统,并尽量降低制造混乱的可能性。旧的 Microsoft Windows 9x 或 Windows Me 系统默认使用 B 模式解析,但大多数较新版本的 Windows 使用 DNS 作为主要的 NetBIOS 名称解析方法。

无论是运行 Samba 的 Linux 计算机上还是 Windows 服务器,WINS 服务器都必须侦听名称广播,维护 IP 地址到 NetBIOS 名称的映射,并回答客户端对这些映射的查询。在实际操作中,这意味着 WINS 服务器必须在所有时间内可用,或者在您可以管理的范围内尽可能接近该目标。通常情况下,域控制器是用作 WINS 服务器的一个很好的候选。如果您的计算机承载它自己的 DNS 服务器,该计算机可能也会是一个不错的选择。您必须将您所选择的计算机显式配置为 WINS 服务器,该任务将在下一节介绍 Samba 服务器时进行描述。


设置 Samba 名称解析选项

考虑好 NetBIOS 名称解析的需求和方法,就可以继续配置 Samba 的名称解析选项。这些选项分为两大类:Samba 客户端选项,以及控制 Samba 作为 WINS 服务器的行为的选项。

设置 Samba 客户端选项

有些 smb.conf 选项可以影响 Samba 如何向网络表示自己或者如何解析 NetBIOS 名称,您可能想调整这些选项:

  • netbios name此选项设置服务器所声明的 NetBIOS 名称。如果省略此选项,它的默认值是您的 DNS 主机名中的机器名称部分,如果 DNS 主机名是 tunesmith.example.com,那么该选项默认值为 TUNESMITH。
  • netbios aliases一台计算机可以声明多个 NetBIOS 名称。您可以使用此选项实现这一点,例如, netbios aliases = PRILL HALRLOPRILLALAR。通过 netbios name 选项将这些名称另外 声明为任何名称集。
  • workgroup使用此选项设置工作组或域名称。为了使浏览和域特性可以正常工作,您必须将此选项设置为正确的值。默认值是 WORKGROUP
  • name resolve order此参数采用四个选项中的一个或多个,控制 Samba 套件中的程序使用这四个名称解析方法中的哪一个。虽然这在服务器端没有什么实际影响,但该选项的确会对 smbclient 等工具如何解析名称造成影响。
  • wins server您可以利用此选项,为被配置为 WINS 服务器的计算机指定主机名或 IP 地址。请注意,指定此选项并不能保证这些服务器会被咨询;由 name resolve order 选项决定相关细节。

通常情况下,默认的 netbios name 选项就足够用了,不需要使用 netbios aliases 选项;但是,在某些情况下您可能想同时使用这两个选项。例如,如果您配置了一台 Samba 服务器,用它来接管将要退役的其他服务器的职责,此时您可能想使用 netbios aliases,那么 Samba 服务器会响应定向给退役计算机的名称的查询。如果您希望在 NetBIOS 寻址中使用的名称与在其他用途中所使用的名称不同,那么可以使用 netbios namenetbios aliases

要使用 name resolve order,则需要在一个以空格分隔的列表中指定这四个选项中的一个或多个:

  • lmhosts此选项指 /etc/samba/lmhosts 文件,我们很快就会更详细地描述它。
  • host此选项指正常的 TCP/IP 名称解析,根据您的本地 TCP/IP 配置,它可能包括一台 DNS 服务器、一个 /etc/hosts 文件或其他方法。
  • wins此选项指通过 WINS 服务器进行名称解析。您可以通过 wins server 选项指定服务器。
  • bcast如果包括此选项,Samba 客户端会使用 NetBIOS 广播名称解析。

默认的 name resolve order 配置会按照刚才指定的顺序来使用四个源。在许多情况下,这个默认设置都没有问题;不过,您可能想调整它。例如,如果您没有维护 lmhosts 文件,并希望 NetBIOS 名称解析优方法先于 DNS 方法,您可能会对它进行如下所示的修改:

name resolve order = wins bcast host

如果您想使用 WINS 服务器,则应该确保在您的配置中包括 wins server 参数。否则,Samba 无法找到 WINS 服务器,而实际效果会与在 name resolve order 行中省略 wins 的效果一样。

如果您想维护一个 lmhosts 文件,则应该了解它的文件格式,它类似于 /etc/hosts 的文件格式。每台计算机都有一个条目,占用一行,以计算机的 IP 地址开头,并以它的 NetBIOS 名称结束。注释行以井号 (#) 开始。结果可能与以下结果类似:

# Edit this file when adding or removing machines
192.168.7.5  NESSUS
192.168.7.8  PRILL
192.168.7.56 TUNESMITH

将 Samba 配置为 WINS 服务器

除了影响如何解析 NetBIOS 名称的 Samba 选项之外,您还可以设置使 Samba 服务器作为 WINS 服务器的选项:

WINS 复制

Windows WINS 服务器可以使用一个被称为 WINS 复制 的进程,在不同子网的 WINS 服务器之间交换数据。不幸的是,Samba 版本 3 并不支持 WINS 复制,预计在 Samba 版本 4 中才会支持该特性。有一段时间,一个名为 wrepl 的工具提供了对 WINS 复制的支持;然而,该程序还没完成实验阶段就被放弃了。

在实际操作中,由于使用了 dns proxywins proxy 等选项,并且大部分客户端目前都使用 DNS 完成大部分的名称解析,这使得缺少 WINS 复制支持在大部分安装中显得并不那么重要。

  • wins support将这个布尔选项设置为 Yes,使其可用作 WINS 服务器。默认值是 No
  • wins proxy该布尔选项决定 Samba 是否会响应那些询问除它自己以外的名称的广播请求。如果您的网络跨越多个子网,或者如果某些计算机被配置为使用广播,而其他计算机被配置为使用 WINS 服务器,则将此选项设置为 Yes(默认值是 No),这样做可以提高 NetBIOS 名称解析的可靠性。
  • dns proxy如果将该布尔选项设置为 Yes(这是默认值),并且您的 Samba WINS 服务器的文件上没有与查找请求相匹配的 NetBIOS 名称时,它使用本地配置的 DNS 设置来执行 DNS 查找,尝试找到一个名称。
  • max wins ttl作为 WINS 服务器工作时,Samba 在有限的时间内保存它所收集的名称信息,该时间由客户端请求和此参数确定。您应该以秒为单位指定一个时间。默认值是 518400(6 天)。
  • min wins ttl此选项的工作原理与 min wins ttl 类似,但它设置的是用于保存名称数据的最短时间。默认值是 21600(6 小时)。

通常,设置 wins server = Yes 就足以将 Samba 配置为 WINS 服务器—,至少在 Samba 端是这样。不过,WINS 客户端有没有办法自动定位服务器,所以您需要配置您的客户,把 WINS 服务器的位置告诉它们。最简单的方法是(至少对 Windows 客户端而言是最简单的)调整您的动态主机配置协议 (DHCP) 服务器配置。可以通过其 dhcpd.conf 文件配置常用的 命名 服务器,该文件通常在 /etc 中。您应该设置两个选项,它们可能已经在配置文件顶部的附近:

option netbios-name-servers 192.168.7.2;
option netbios-node-type 8;

第一行确定您的 Samba WINS 服务器的 IP 地址。第二行设置节点类型,它决定使用哪一种名称解析方法。该选项值的范围是 18,但只有 4 个值是有意义的:

  • 1客户端应只使用广播,也就是说,它们是 B-节点。
  • 2客户端应只使用 WINS 服务器,也就是说,它们是 P-节点。
  • 4客户端应首先使用广播,但是,如果该方法失败,则使用 WINS 服务器。这样的客户端有时也被称为 M-节点。
  • 8客户端应首先使用 WINS 服务器,但是,如果该方法失败,则使用广播。这样的客户端有时也被称为 H-节点。

一般来说,将客户端配置为 H-节点是合理的,因此通过 DHCP 服务器传递 NetBIOS 节点类型值 8 是合适的。


理解浏览

在计算机界,术语浏览 通常适用于 Web:我们使用 Web 浏览器阅读网站,正如您现在所做的一样。虽然在使用 SMB/CIFS 的情况下,浏览 有其他含义(尽管是类似的含义):它指的是在您的网络上发现可用资源的过程。当然,Samba 提供的配置选项会在客户端执行浏览操作时影响与客户端进行交互的方式。但是,要调整这些设置,则必须理解一些关键的浏览概念,比如主浏览器浏览器选举 的概念。

浏览的概述

如果您已使用 Windows 的文件共享特性,那么很可能您已经使用了如图 2 所示的浏览。该图显示了在 Windows 中的 Computer 窗口。在左窗格的底部旁边,有一个 Network 项显示了网络中可以访问的计算机,比如 HARK、NESSUS 和 WEMBLETH,在图 2 中,您可以单击其中一台计算机来查看它所提供的共享,单击共享图标可以查看它们存储的文件,等等。

图 2. 浏览让用户能够快速定位服务器和共享
该图显示了浏览如何让用户能够快速定位服务器和共享

从用户的角度来看,这一切都是自动发生的;但要使这一切都有效,当然还需要做相当大量的幕后工作。浏览依赖于一台被称为主浏览器 的计算机来编译计算机列表。当客户端浏览网络时,它会联系主浏览器,以获取此列表。主浏览器当然应该是一台服务器。此服务器可能不需要太多配置,但如果您要避免浏览灾难(例如,浏览列表在没有明显原因的情况下突然变成空白),您必须对浏览的工作原理有一些了解。

正式的主浏览器有两种类型:

  • 本地主浏览器。这些主浏览器只为一个子网服务。它们侦听计算机用来宣布自己的通知并声明 NetBIOS 名称的广播消息,并且主浏览器利用这些广播和维护其浏览列表。 它们还响应旨在找到主浏览器的广播查询。本地主浏览器由称为选举 的一个过程指定,所以原则上任何计算机都可以成为本地主浏览器。(回想一下,SMB/CIFS 是专门为用于对等配置而设计的,在对等配置中,所有计算机都既是客户端又是服务器。)
  • 域主浏览器。由于本地主浏览器通过侦听广播消息来编译其服务器列表,它们不能跨子网工作,至少在没有额外帮助的情况下不能这样做。这正是引入域主浏览器的原因;它们与位于多个子网的本地主浏览器进行沟通,并交换浏览列表,使不同子网的计算机能够 “看到” 对方。(但是,这种方法的确造成服务器的出现和消失的延迟。)因此,必须显式配置域主浏览器;它们不是通过选举过程指定的。通常域控制器被用作域主浏览器。

Samba 提供了 设置 Samba 浏览选项 中所描述的选项,使本地主浏览器可以与另一个子网的主浏览器交换浏览列表。如果您的网络有多个网段,但您不希望运行域配置,那么这是一种便捷方式。

本地主浏览器也可以有候补,这些候补称为备用浏览器。备用浏览器也需要维护浏览列表,但客户端通常不会调用备用浏览器。提供备用浏览器的目的是,如果主浏览器变得不可用,备用浏览器可以利用当前的浏览列表接管主浏览器的工作。

主浏览器选举

当计算机要求选举主浏览器时,就会开始选举过程,该过程通常会出现在前任主浏览器没有响应查询的时候;但某些系统(如 Samba)可以在启动时或在其他时间随时要求开始选举过程。选举通常需要几秒钟来完成,在此期间,无法使用浏览,所以您不应该将 Samba 配置为过于积极地使用选举。当要求计算机广播其选举条件时,就会开始选举。可以对这些条件进行排名,稍后将叙述这一点。其选举条件的排名击败第一名条件的任何一台计算机将广播其条件作为响应。认为自己赢得选举的计算机将继续每 200-800 毫秒广播一次其条件,直到它完成四次广播,此时它将宣布其胜利并成为本地主浏览器。

按优先级递减的顺序,主浏览器选举中所采用的条件如下:

  1. 选举协议版本。多选举协议理论上是可行的,但到目前为止,只使用版本 1。因此,虽然此特性可能很重要,但在实践中并非如此。
  2. 操作系统级别。每个操作系统都有一个从 0 到 255 的优先权排名。较高的操作系统级别优于较低的级别。大多数 Microsoft 操作系统的值在 1 到32 之间。如下文 设置 Samba 浏览选项 所述,可以调整 Samba 操作系统的级别。
  3. 主域控制器 (PDC) 状态。如果一台计算机目前是 PDC,它就会击败同一操作系统级别和选举协议版本的其他所有计算机。
  4. WINS 服务器状态。如果其他因素仍未能确定结果,目前作为 WINS 服务器运作的计算机将赢得选举。
  5. 首选主浏览器。可以将某台计算机指定为首选主浏览器,这会提高它在选举中的级别。
  6. 当前主浏览器。如果计算机目前作为主浏览器运行,那么它在选举中的级别会得到提高。
  7. 前任主浏览器。如果某台计算机作为主浏览器运行,但在最近的选举中失败并被贬为备用浏览器,那么它会在选举中获得一个较小的优势。
  8. 运行备用浏览器。如果一台计算机目前是备用浏览器,那么它会在选举中拥有微弱的领先优势。

如果进行了选举,而结果是平局,则会使用两个额外的决胜条件:

  • 正常运行时间。如果一台计算机比其他计算机运行的时间更长,运行时间更长的计算机将赢得选举。
  • NetBIOS 名称。如果所有其他条件都相同,按字母顺序排序,其名称排在第一的计算机将赢得选举。

设置 Samba 浏览选项

当然,Samba 提供了许多选项,这些选项会影响它在浏览器选举中的性能以及它作为域主浏览器的能力。我将介绍您可以用来 “操纵” 选举的选项、用于支持跨子网浏览的选项,以及获得域主浏览器状态所需的选项。我还会介绍您可以在 Samba 服务器(即使该服务器不是 主浏览器)上设置的选项,可以用这些选项调整用户浏览到您的计算机时所看到的共享。

配置 Samba 使其赢得选举

可以影响 Samba 赢得本地主浏览器选举的能力的选项包括如下:

  • local master当将这个选项设置为 Yes(默认值)时,Samba 会参与本地主浏览器选举;当将它设置为 No 时,则完全不参加该选举,因此也不会赢得选举。
  • os levelSamba 的默认 os level 值是 20,这足以在选举中击败大多数非服务器 Microsoft 操作系统,但是对于服务器操作系统而言则不然,服务器操作系统的操作系统级别往往是 32。如果您想确保 Samba 服务器可以赢得选举,那么应该将此值设置为 255,除了另一个同样配置的 Samba 服务器,这会击败所有计算机。不过,请不要将这个极端的选项作为常规设置;在有多台 Samba 服务器的网络中,应该只 “操纵” 其中一台赢得选举。
  • domain logons正如在关于 LPIC 目标 312.4 的文章中所描述的,这个布尔选项配置 Samba 服务器,使该服务器成为 PDC,所以该选项也会影响服务器在浏览器选举中的机遇。
  • wins support由于 WINS 服务器状态是选举中的一个影响因素,所以这个布尔选项可能会影响选举结果。
  • preferred master如果将这个布尔选项设置为 Yes,则是告诉 Samba 在启动时要求进行一次选举。它还可以设置在选举中使用的首选主浏览器标志。默认值是 No
  • browse list这个布尔参数的默认值是 Yes,它决定了服务器是否维护浏览列表。如果需要维护浏览列表,它就可以成为备用浏览器或主浏览器。(如果将此选项设置为 No,那么 Samba 会不参加选举。)

大多数 Samba 服务器在默认设置下都能正常工作;它们将遵从被配置为赢得选举的 Windows Server 操作系统或 Samba 服务器,但它们会在不包含 Windows Server 操作系统的工作组配置中赢得选举。

如果您遇到了浏览问题,那么可能需要检查您的 Samba 服务器设置。问题通常由以下两种情况之一引起:

  • 不可靠的本地主浏览器。如果关闭或从网络上断开作为主浏览器的计算机,其结果是会造成浏览中断。在具有同一操作系统级别的多台计算机所组成的对等网络中,如果用户偶尔关闭他们的电脑,则会发生这种情况。在这种情况下,可以选举一台可靠的 Samba 服务器进行配置,通过提高其操作系统级别(可能需要改变其他选项)使其赢得选举,这是一个较好的解决方案。
  • 太多首选主浏览器。如果多台电脑都被配置为首选主浏览器,结果可能会是不断重复要求选举,每次要求都会导致浏览出现短暂的中断。请确保每个网段最多只有一台 Samba 服务器被配置为首选主浏览器。如果 Windows 计算机是首选主浏览器(当它被配置为域控制器时),请确保没有 Samba 服务器被配置为首选主浏览器。

在工作组中启用跨子网浏览

如果您的网络使用工作组配置,但跨越多个子网,名称解析和浏览可能无法跨子网正常工作。如本文上半部分所述,WINS 服务器选项可以克服名称解析问题。(也可以使用 DNS 进行名称解析。)不过,浏览可能需要使用一些不常用的、只有 Samba 支持的选项。其中一种可能的做法是,将 Samba WINS 服务器配置为域主浏览器。您可以在 Samba 中完成该配置,无需对完整域进行配置,因为 Samba 将相关特性拆分成独立的选项。不过,如果您这样做,则必须将单台 Samba 服务器同时配置为 WINS 服务器和域主浏览器;如果不这样做,域主浏览器就没有完成其工作所需要的所有主机名的信息。

如果无法将同一台计算机同时配置为 WINS 服务器和域主浏览器,或者如果觉得难以让所有计算机都在 WINS 服务器上注册,以下三个附加参数中的一个或多个的组合可以帮助您跨越多个子网:

  • remote browse sync您可以将 Samba 服务器或整个网络的 IP 地址指定给该选项,Samba 将与这些 Samba 服务器或在指定网络上找到的主浏览器交换浏览列表。此选项的一个主要限制是,它只适用于 Samba 服务器;Samba 无法使用此选项与 Windows 本地主浏览器交换浏览列表。
  • remote announce。Samba 可以向远程网络宣布自己的联机状态,它传递一个 IP 地址(包括广播地址)和一个可选的工作组名称,如 192.168.8.255/PAK,这表示它宣布自己是 192.168.8.0/24 子网上的 PAK 工作组的本地主浏览器。与 remote browse sync 不同,此选项可以与任何类型的主浏览器交换浏览列表,而不仅仅是与 Samba 服务器进行交换。
  • enhanced browsing这个布尔选项的默认值为 Yes,它使用 Samba 搜索通过 WINS 服务器发现域主浏览器,或以其他任何方式发现域主浏览器,并与其交换浏览列表。此选项可以使跨子网浏览更可靠,它也可以使停止运作的工作组不会从浏览列表中消失,所以,如果您遇到这个问题,那么您可能想将它设置为 No

一般来说,会在每个子网中使用 Samba 本地主浏览器,将每台 Samba 服务器配置为使用 remote browse sync,并指向其他 Samba 服务器,这样就可以跨子网正常地交换浏览列表。如果您不知道远程本地主浏览器的确切 IP 地址,您可以使用一个广播地址,如 192.168.8.255 指 192.168.8.0/24 网络。

启用域主浏览器选项

通常,当您将 Samba 配置为域控制器时,会假定它为域主浏览器。您可以将 domain master 选项设置为 Yes 来强制解决该问题。此参数接受布尔值和其默认值 Auto,这会导致域主浏览器配置镜像 domain logins 参数的配置,“ 学习 Linux,302(混合环境):域控制” 中介绍了这一点。

一旦 Samba 被配置为域控制器和域主浏览器,域成员就应该能够使用该服务器作为域主浏览器。在其他子网中的本地主浏览器可以通过使用域名查找来定位域主浏览器,例如在查找中包含可以识别域主浏览器的代码。您可以在 Samba 本地主浏览器上使用 remote browse sync 参数,用该参数进一步确保正确的操作。

请注意,跨子网的浏览列表传播并不是瞬间完成的。本地主浏览器需要时间来收集它们的浏览列表,每隔一段时间就会与域主浏览器同步浏览列表。总而言之,所有计算机都会出现在所有子网的浏览列表上,这可能需要几分钟的时间。

设置本地浏览选项

本文中所描述的浏览特性,大多涉及负责维护计算机列表的主浏览器。但是,为了让浏览能够产生实际的好处,每台服务器都必须使信息在它们提供的共享上可用。默认设置一般可以满足这些要求;它们使大多数共享可以出现在浏览列表中。HOMES 共享(主共享)是一个例外;该共享定义为计算机的每个用户创建一个共享,而所创建的共享通常只出现在拥有该共享的用户的浏览列表中。您可以在 Samba 文件和打印机服务器(不要求它们是主浏览器)上设置几个选项,来调整本地共享信息的共享方式:

  • preload您可以指定希望在浏览列表中提供的共享列表,其中可以包括那些一般不会在浏览列表中提供的共享。例如,您可能包括特定用户的主共享,如 preload = LOUIS 向所有访问者显示该用户的主共享。此选项也被称为 auto services
  • load printers这个布尔选项的默认值为 Yes,它决定了由 PRINTERS 定义所创建的打印机共享是否可用。
  • browseable除少数特殊共享类型外,该布尔选项的默认值为 Yes。当将它设置为 Yes 时,会使得共享在浏览列表中可见。在将该值设置为 No 时,则会隐藏共享,但知道该共享名称的用户仍然可以访问它。

测试 NetBIOS 和 WINS 特性

已经将 Samba 服务器配置为 WINS 服务器或主浏览器之后,甚至还没有这样做之前,您可能就想测试 NetBIOS 名称解析和浏览特性。Samba 提供了一些可以帮助您进行这些测试的工具。这些工具中最值得注意的是 findsmbsmbtree。(这两款工具都依赖于 nmblookupsmbclient 等低层工具来完成 “繁重的工作”。)

findsmb 程序是一个工具,它在网络上发送一个 NetBIOS 计算机的广播查询并报告结果。它的调用通常不带任何选项,但您可以将将一个子网地址传递给它,以查询非本地子网,而 -r 选项可纠正一个 Microsoft Windows 95 特定的错误。该程序的结果类似于清单 1。

清单 1. findsmb 的输出示例
$ findsmb

                                *=DMB
                                +=LMB
IP ADDR         NETBIOS NAME     WORKGROUP/OS/VERSION 
---------------------------------------------------------------------
192.168.7.1     CISCOC8231    +[	              ]
192.168.7.5     NESSUS        *[RINGWORLD] [Unix] [Samba 3.4.12]
192.168.7.9     HARK           [RINGWORLD] [Unix] [Samba 3.5.7]
192.168.7.56    TUNESMITH     +[RINGWORLD] [Unix] [Samba 3.0.28a-apple]

此输出不仅包括本地计算机的名称和 IP 地址,还包括其工作组、操作系统和正在运行的 Samba 版本的有关信息。

与几乎不需要选项的 findsmb 不同,smbtree 程序需要使用几个选项。这个程序是用来检索网络上的浏览信息。在其最简单的形式中,它显示的浏览列表类似于 Windows 文件浏览器(如 图 2)中的列表,但它以文本形式显示,如清单 2 所示。请注意,smbtree 要求您输入用户密码;用密码获得共享信息,许多服务器在成功登录之后才会透露该密码。

清单 2. smbtree 输出示例
$ smbtree
Enter rodsmith's password: 
RINGWORLD
	\\WEMBLETH          	        wembleth server (Samba, Ubuntu)
		\\WEMBLETH\IPC$             IPC Service (wembleth server (Samba, Ubuntu))
                \\WEMBLETH\programs         User programs
	\\SEEKER         		seeker server (Samba, Ubuntu)
		\\SEEKER\rodsmith           Home Directories
		\\SEEKER\IPC$               IPC Service (seeker server (Samba, Ubuntu))
		\\SEEKER\MYTHTV             Home Directories
	\\NESSUS         		Nessus
		\\NESSUS\rodsmith           Home Directories
		\\NESSUS\hp4000             HP4000 via Ethernet
		\\NESSUS\Epson_RX500        EPSON Stylus Photo RX500
		\\NESSUS\IPC$               IPC Service (Nessus)
		\\NESSUS\cf                 Epson RX500 CF port
		\\NESSUS\floppy             Floppy Drive

大部分 smbtree 输出都是不言自明的:它确定了工作组或域(在这个例子中是 RINGWORLD)、服务器(在这个例子中是 WEMBLETH、SEEKER 和 NESSUS)以及在每台服务器上的可浏览共享(带有描述,可以通过 comment 共享设置描述)。IPC$ 共享用于执行后台任务,用户通常看不见它,但 smbtree 会公开它。

您可以添加多个选项给 smbtree,以改变其行为。表 1 列出了最常用的选项。请参考 smbtree 的主页,了解更多不常用选项的详细信息。

表 1. smbtree 命令的选项
选项效果
-b--broadcast使用广播而不是本地主浏览器进行查询,以获取浏览列表。
-D--domains显示已知域列表,不显示可用服务器和共享上的数据。
-S--servers显示域和服务器的列表;不显示共享上的数据。
-d level--debuglevel=level设置要记录到日志文件中的详细信息的级别,默认值为 0,这意味具有极少的详细信息。可以提高级别来帮助调试网络问题。
-N--no-pass取消输入密码的提示,这可能也会限制可用信息。
-U username--user=username设置用于访问共享的用户名。您还可以追加一个百分号 (%) 和密码,如 teela%lucky 使用 teela 作为用户名,并使用 lucky 作为密码。(请注意 lucky 是一个非常弱的密码;Teela 不必担心这样的事情。)
-S--servers显示域和服务器的列表;不显示共享上的数据。

参考资料

学习

获得产品和技术

  • http://ftp.samba.org/pub/unpacked/standalone_projects/source4/libcli/wrepl/ 源代码可从 Samba 网站 获取。

讨论

  • 加入 developerWorks 中文社区,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Linux
ArticleID=794621
ArticleTitle=学习 Linux, 302(混合环境): NetBIOS 和 WINS
publish-date=02202012