问题的提出:
samba给我们提供了很好的unix/m$network共享资源的能力,
但由于samba用的是netbios on tcp/ip, 所以在跨网关浏览上有一定的问题.
N1_A N1_B N1_C N1_D N1_E
| | | | |
-------------------------------------------------------
| subnet 1 |
+---+ +---+
|R1 | BRouter 1 BRouter 2 |R2 |
+---+ +---+
| |
| subnet 2 subnet 3 |
-------------------------- ------------------------------------
| | | | | | | |
N2_A N2_B N2_C N2_D N3_A N3_B N3_C N3_D
(wins, (95) (NT) (samba)
111.222.111.222)
比如上图中N3_C是samba server, 那么在subnet 1 和 subnet 2中的95/nt在
网络邻居里就看不见N3_C (而N3_A(95),N3_B(NT)可以通过netbeui和netbios on ipx
透过brouter R2和R1出现在其他子网机器的网络邻居里), samba怎么解决这个问题?
问题的速解:
将所有机器的wins指定到同一台机器, 比如说N2_D (NT或者samba).
95/NT的wins设定我想谁都会就不多说了.
samba的wins client设定是在smb.conf里[global]段中加上:
wins support = no
wins server = 111.222.111.222 ; 你的wins的ip
如果是samba自己要当wins server的话, 则是在[global]段中加上:
wins support = yes
(注意, samba不能同时当wins server和wins client)
这样设定好以后, 所有网段的机器就能看见其他网段的samba server了 :-)
95和NT一般要设两个wins, 在这里只要让samba使用的wins和95/NT使用的
主wins一致就可以了. 当有网络里有NT server时, 最好用NT Server来当
wins, 而不要用samba.
问题的解释:
这个问题其实是根据m$network on tcp/ip跨网段浏览的机制得到解决的.这个解决
方法对95/NT也适用, 而且由于不需要在子网间广播netbeui和ipx, 对比较大的网使用
效率的提高也有很大的帮助.
仍然使用这副图来解释m$network on tcp/ip跨网段浏览机制:
(DMB)
N1_A N1_B N1_C N1_D N1_E
| | | | |
-------------------------------------------------------
| subnet 1 |
+---+ +---+
|R1 | Router 1 Router 2 |R2 |
+---+ +---+
| |
| subnet 2 subnet 3 |
-------------------------- ------------------------------------
| | | | | | | |
N2_A N2_B N2_C N2_D N3_A N3_B N3_C N3_D
(LMB) (WINS) (LMB)
当一台提供共享服务的机器(95/NT/Samba)启动时, 它会向整个子网广播自己提供
哪些服务. 而LMB(Local Master Browser局域主浏览器)则收集并记录这些广播, 这个
记录的清单就是 m$network浏览机制的基础, 在这里假设所有的机器都提供共享服务
那么, 浏览清单(browse list)上就应该有所有的机器.
Subnet Browse Master List
------ ------------- ----
Subnet1 N1_C N1_A, N1_B, N1_C, N1_D, N1_E
Subnet2 N2_B N2_A, N2_B, N2_C, N2_D
Subnet3 N3_D N3_A, N3_B, N3_C, N3_D
LMB是机器间(95,NT,Samba)通过一种竞选机制自动产生的.这里不多加叙述.
此时由于网段之间是分隔开的, 所以每个网段的browse list上就只有自己网段的
机器.
现在考察下一步, 当subnet 2里的N2_B成为LMB后,它就要寻找DMB(Domain Master
Browser域主浏览器)来同步信浏览信息, 于是它就询问wins得到DMB的ip地址. DMB
的产生其实也类似于LMB, 是LMB间自发竞争产生的.
在这个例子里, N2_B知道了N1_C是DMB, 于是和N1_C同步浏览表browse list, 这样
同步过后, 各子网的browse list就成为:
Subnet Browse Master List
------ ------------- ----
Subnet1 N1_C N1_A, N1_B, N1_C, N1_D, N1_E,
N2_A(*), N2_B(*), N2_C(*), N2_D(*)
Subnet2 N2_B N2_A, N2_B, N2_C, N2_D
N1_A(*), N1_B(*), N1_C(*), N1_D(*), N1_E(*)
Subnet3 N3_D N3_A, N3_B, N3_C, N3_D
这样的事同样发生在N3_D和N1_C之间, 而后N2_B和N1_C再次同步, 最后, 每台机器
就都出现在各个子网的浏览表里了:
Subnet Browse Master List
------ ------------- ----
Subnet1 N1_C N1_A, N1_B, N1_C, N1_D, N1_E,
N2_A(*), N2_B(*), N2_C(*), N2_D(*),
N3_A(*), N3_B(*), N3_C(*), N3_D(*)
Subnet1 N1_C N1_A, N1_B, N1_C, N1_D, N1_E,
N2_A(*), N2_B(*), N2_C(*), N2_D(*),
N3_A(*), N3_B(*), N3_C(*), N3_D(*)
Subnet2 N2_B N2_A, N2_B, N2_C, N2_D
N1_A(*), N1_B(*), N1_C(*), N1_D(*), N1_E(*)
N3_A(*), N3_B(*), N3_C(*), N3_D(*)
Subnet3 N3_D N3_A, N3_B, N3_C, N3_D
N1_A(*), N1_B(*), N1_C(*), N1_D(*), N1_E(*),
N2_A(*), N2_B(*), N2_C(*), N2_D(*)
资源的获得:
ftp://ftp.sepc.ac.cn/pub/linux/collect/network/daemons/samba
--
Late Expanded aNd eXtended