As mentioned in Chapter 1,
Learning the Samba, one machine in each subnet always keeps a list of the currently active machines. This list is called the
browse list and the server that maintains it is called the local master browser. As machines come on and off the network, the local master browser continually updates the information in the browse list and provides it to any machine that requests it.
A computer becomes a local master browser by holding a browsing election on the local subnet. Browsing elections can be called at any time. Samba can rig a browsing election for a variety of outcomes, including always becoming the local master browser of the subnet or never becoming it. For example, the following options, which we've added to the configuration file from Chapter 4,
Disk Shares , will ensure that Samba always wins the election for local master browser no matter which machines are also present:
[global]
netbios name = HYDRA
server string = Samba %v on (%L)
workgroup = SIMPLE
# Browsing election options
os level = 34
local master = yes
# Networking configuration options
hosts allow = 192.168.220. 134.213.233. localhost
hosts deny = 192.168.220.102
interfaces = 192.168.220.100/255.255.255.0 \
134.213.233.110/255.255.255.0
# Debug logging information
log level = 2
log file = /var/log/samba.log.%m
max log size = 50
debug timestamp = yes
[data]
path = /home/samba/data
browseable = yes
guest ok = yes
comment = Data Drive
volume = Sample-Data-Drive
writable = yes
However, what if we didn't always want to win the election? What if we wanted to yield browsing to a Windows NT Server if present? In order to do that, we need to learn how browsing elections work. As you already know, each machine that takes place in the election must broadcast information about itself. This information includes the following:
-
The version of the election protocol used
-
The operating system on the machine
-
The amount of time the client has been on the network
-
The hostname of the client
Here is how the election is decided. Operating systems are assigned a binary value according to their version, as shown in
Table 5.1.
Following that, each computer on the network is assigned a separate value according to its role, as shown in
Table 5.2.
Elections are decided in the following order:
-
The machine with the highest version of the election protocol will win. (So far, this is meaningless, as all Windows clients have version 1 of the election protocol.)
-
The machine with the highest operating system value wins the election.
-
If there is a tie, the machine with the setting of Preferred Master Browser (role 8) wins the election.
-
If there is still a tie, the client who has been online the longest wins the election.
-
And finally, if there is still a tie, the client name that comes first alphabetically wins.
-
The machine that is the "runner-up" can become a backup browser.
As a result, if you want Samba to take the role of a local master browser, but only if there isn't a Windows NT Server (4.0 or 3.51) on the network, you could change the
os
level
parameter in the previous example to:
os level = 31
This will cause Samba to immediately lose the election to a Windows NT 4.0 or Windows NT 3.5 Server, both of which have a higher operating systems level. On the other hand, if you wanted to decide the local master browser on the basis of the network role, such as which machine is the primary domain controller, you could set the
os
level
to match the highest type of operating system on the network and let the election protocol fall down to the next level.
How can you can tell if a machine is a local master browser? By using the
nbtstat
command. Place the NetBIOS name of the machine you wish to check after the
-a
option:
C:\>
nbtstat -a hydra
NetBIOS Remote Machine Name Table
Name Type Status
----------------------------------------------------------
HYDRA <00> UNIQUE Registered
HYDRA <03> UNIQUE Registered
HYDRA <20> UNIQUE Registered
.._ _MSBROWSE_ _. <01> GROUP Registered
SIMPLE <00> GROUP Registered
SIMPLE <1D> UNIQUE Registered
SIMPLE <1E> GROUP Registered
MAC Address = 00-00-00-00-00-00
The resource entry that you're looking for is the
.._ _MSBROWSE_ _.<01>
. This indicates that the server is currently acting as the local master browser for the current subnet. In addition, if the machine is a Samba server, you can check the Samba
nmbd log file for an entry such as:
nmbd/nmbd_become_lmb.c:become_local_master_stage2(406)
*****
Samba name server HYDRA is now a local master browser for
workgroup SIMPLE on subnet 192.168.220.100
****
Finally, Windows NT servers serving as primary domain controllers contain a sneak that allows them to assume the role of the local master browser in certain conditions; this is called the
preferred
master browser bit. Earlier, we mentioned that Samba could set this bit on itself as well. You can enable it with the
preferred
master
option:
# Browsing election options
os level = 33
local master = yes
preferred master = yes
If the preferred master bit is set, the machine will force a browsing election at startup. Of course, this is needed only if you set the
os
level
option to match the Windows NT machine. We recommend that you don't use this option if another machine also has the role of preferred master, such as an NT server.