局域网文件服务器-Samba
2010-09-20 09:49:56 阿炯

Samba是用来实现SMB协议的一种软件,由澳大利亚的Andew Tridgell开发,是一种在Linux(Unix)环境下运行的免费软件。是一款实现Uinx/Linux与Windows系统文件共享、打印机共享等非常强大的SMB软件,其理念为"Opening Windows to a Wider World"。

可用来让UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网络协定做连结。在目前的版本(v3),不仅可存取及分享SMB的资料夹及打印机,本身还可以整合入Windows Server的网域、扮演为网域控制站(Domain Controller)以及加入Active Directory成员。简而言之,此软件在Windows与UNIX系列OS之间搭起一座桥梁,让两者的资源可互通有无。

Samba是许多服务以及协议的实现,其包括TCP/IP上的NetBIOS(NBT)、SMB、CIFS (SMB的增强版本)、DCE/RPC或者更具体来说MSRPC(网络邻居协议套件)、一种 WINS服务器(也被称作NetBIOS Name Server(NBNS))、NT 域协议套件(包括NT Domain Logons、Secure Accounts Manager(SAM)数据库、Local Security Authority(LSA)服务、NT-style打印服务(SPOOLSS)、NTLM以及近来出现的包括一种改进的Kerberos协议与改进的轻 型目录访问协议(LDAP)在内的Active Directory Logon服务)。以上这些服务以及协议经常被错误地归类为NetBIOS或者SMB,Samba也能够用于共享打印机。

Samba能够为选定的Unix目录(包括所有子目录)建立网络共享,该功能使得Windows用户可以像访问普通Windows下的文件夹那样来通过网络访问这些Unix目录。

通过使用Samba,Linux系统可以实现如下功能:
文件服务和打印服务(在Linux和WinNT之间系统之间提供打印机和磁盘的共享)
登陆服务器,使用Windows客户能注册到网络上
作为主要域控制器和域中成员的功能
WINS服务器以及浏览功能
支持SSL(Secure Socket Layer)
支持SWAT (Samba Web Administration Tool )
Samba除了支持Linux(Unix)和WinNT之外,还支持DOS、IBM OS/2、Macintosh 等操作系统。


SMB概念了解
Samba 是用来实现SMB的一种软件,在这里在了解一下SMB(Server Message Block,服务信息块)。SMB协议可以看作是局域网上的共享文件/打印机的一种协议,它可以为网络内部的其它Windows和 Linux机器提供文件系统、打印服务或是其他一些信息。

SMB的工作原理是让NetBIOS(Win95网络邻居通信协议)与SMB这 两种协议运行在TCP/IP的通信协议上,且使用NetBIOS nameserver让用户的Linux机器可以在Windows的网络邻居里被看到,所以就可以和WinNT主机在网络上相互沟通,共享文件与服务了。

目前Microsoft正在开发一种新的文件和打印共享协议--CIFS(Common Internet Files System,通用网络文件协议),该协议支持TCP/IP和DNS等协议,能在www上支持文件和打印共享。在CIFS下服务器实际上是DNS名,由主机名和域名组成。这种变化是从NetBIOS命令结构中分离出来的。目前CIFS还没有得到广泛的应用。现在在Linux和WinNT之间的文件 共享注意还是SMB和NFS。

Samba和NFS的区别是什么
Samba 是DEC开始开发的,用于在不同的Unix机器间进行资源共享,采用udp协议。后来基于tcp重新开发后,效率有了很大提高,它使用的协议是SMB。微 软不愿意交License费,在windows系统中对该协议重新进行了实现。既然samba和windows中的网络邻居都使用SMB协议。那它自然主 要用于在windows和unix之间共享资源,资源包括文件、打印机等等。

NFS是SUN开发的,用于UNIX机器之间的资源共享。其设置相当容易,主要是配置/etc/exports文件,然后运行exportfs -a来共享出来,现在NFS已经成为UNIX/LINUX上的标配。

两者的文档都说自己的效率高一些,从经验来看,nfs的效率要稍微高一些,只是差别不是太大。从配置来看:samba比较复杂,nfs比较简单。但是复杂有复杂的道理,它让我们能够灵活的配置。


SMB(Server Message Block)是一个早期的计算机网络协议,用于在计算机之间共享文件、打印机和其他资源。随着时间的推移,SMB协议也经历了多次更新和改进。SMB 1.0最早出现在1984年,而SMB 2.0和SMB 3.0则分别于2006年和2012年推出。以下是它们的主要功能和版本信息:

SMB 1.0:

年代:1984年
功能:文件和打印机共享、消息传输、远程过程调用等。
版本:也称为CIFS(Common Internet File System),由微软开发。Windows操作系统中默认启用SMB 1.0,但其存在多个安全漏洞,不建议使用。

SMB 2.0:

年代:2006年
功能:更快的性能、更好的可扩展性、更好的容错性、加密支持等等。SMB 2.0还引入了一种新的状态量度方法,称为Compound TCP(CTCP),以自适应地调整网络速度,从而优化传输性能。
版本:Windows Vista及以上系统默认启用SMB 2.0,Mac OS X 10.7及以上版本也支持SMB 2.0。

SMB 3.0:

年代:2012年
功能:进一步扩展和改进了SMB 2.0的特性,提供了更高的性能和更好的安全性。其中最显著的变化是引入了SMB Direct协议,这是一种使用远程直接内存访问(RDMA)技术实现的高性能数据传输方式,可以直接在内存中传输数据,避免了网络协议和操作系统的开销。
版本:Windows 8及以上系统默认启用SMB 3.0,Mac OS X 10.9及以上版本也支持SMB 3.0。
总的来说,随着SMB协议的不断更新和改进,每个版本都提供了更多的功能和改善,以确保更好的性能、可靠性和安全性。如果可能,建议使用更新的SMB版本。

目前广泛使用的 SMB 协议有以下几个主要版本:

SMB 1.0:也称为 CIFS(Common Internet File System),是最早的 SMB 协议版本,最初由 IBM 开发。尽管在过去得到了广泛应用,但由于安全性和性能方面的局限性,现在已经逐渐被淘汰。

SMB 2.0:这是对 SMB 协议进行了全面重新设计的版本,引入了更好的性能、可靠性和安全性。SMB 2.0 首次出现在 Windows Vista 和 Windows Server 2008 中。

SMB 2.1:这是对 SMB 2.0 的轻微修改和扩展,主要用于改进性能和修复一些问题。SMB 2.1 首次出现在 Windows 7 和 Windows Server 2008 R2 中。

SMB 3.0:这是当前最新的版本,引入了许多新特性,包括加密传输、持久化句柄、远程 VSS 等,大大提高了性能和安全性。SMB 3.0 首次出现在 Windows 8 和 Windows Server 2012 中。

SMB 3.1.1:这是目前最新的SMB协议版本,引入了一些新的特性,包括预取、加密性能提升、安全性增强等。SMB 3.1.1 进一步改进了SMB 3.0版本的性能和安全性。

SMB Direct:也称为 SMB over RDMA(Remote Direct Memory Access),它允许SMB协议直接在RDMA网络上运行,从而提供了更高的性能和更低的CPU开销。

SMB Multichannel:这是一种SMB协议的特性,允许多个网络连接并行使用,以提高带宽和容错能力。

SMB Encryption:SMB 3.0及更新版本引入了对数据传输的加密支持,通过加密可以保护数据的机密性和完整性。

SMB over QUIC 是 Windows Server 2022 中的一个新特性,它支持通过基于 UDP 的 Quick UDP Internet Connections (QUIC) 协议来进行 SMB 流量传输。这项特性允许通过互联网加速访问文件共享,并可能替代 VPN。SMB over QUIC 利用 TLS 1.3 进行传输层安全性保护,并使用由 Google 开发的 SPDY 协议实现多路复用,允许通过单一连接传输不同的数据流,从而显著减少加载时间。此外,QUIC 还提供了诸如唯一序列号、前向纠错、拥塞控制和身份验证等功能。

然而,SMB over QUIC 也存在一些限制。例如,它仅适用于 Windows Server 2022 Azure Edition,并且在 Microsoft 云中可用,或在 Azure Stack HCI 上的虚拟机中运行。普通的 Hyper-V 服务器则不支持。此外,QUIC 的数据包头部包含的明文信息少于 TCP 连接,这使得故障排除、流量控制或网络管理变得更加困难。还有关于拥塞控制的问题,可能会影响传输速率,尽管目前还在对此进行优化。

SMB over QUIC 的配置可以通过 Windows Admin Center (WAC) 或 PowerShell 完成。配置时需要选择 SSL 证书,并设置允许客户端连接的地址。高级设置中还包括激活 SMB 加密以及允许对命名管道的访问等选项。

需要注意的是,SMB over QUIC 曾存在一个重要漏洞(CVE-2023-24898),位于 srvnet.sys 驱动程序中,可能导致未经身份验证的互联网攻击者对 Windows Server 2022 机器发起远程拒绝服务(DoS)攻击。这个漏洞仅影响使用 SMB over QUIC 的服务器,且只影响 Windows Server 2022 Azure Edition。Akamai 已向微软通报了这一漏洞,微软也在 2023 年 5 月的“周二补丁日”发布了对应的安全补丁。

当涉及SMB协议时,还有一些相关的重要概念和技术需要考虑:

SMB文件共享:SMB协议最常见的用途是用于在网络上共享文件和打印机。通过SMB协议,用户可以访问位于远程计算机上的文件、文件夹和打印机,实现资源共享和数据交换。

SMB安全性:随着对网络安全的日益关注,SMB协议的安全性也越来越重要。在新的SMB版本中,加密传输、数字签名验证等安全机制得到了加强,以保护数据不受未经授权的访问和篡改。

SMB管理:针对SMB协议的管理,包括访问控制、共享设置、性能优化等方面,有许多工具和方法可供管理员使用,以确保系统的正常运行和安全性。

SMB在云存储中的应用:随着云计算的发展,SMB协议在云存储中的应用也变得越来越普遍。例如,许多云存储服务提供商支持SMB协议,使用户可以轻松地将其本地存储与云存储进行集成。

总的来说,SMB协议作为一种重要的网络文件共享协议,在网络环境中扮演着至关重要的角色。随着技术的不断发展,SMB协议也在不断演进和改进,以满足现代网络环境下对文件共享和数据交换的需求。

以下是SMB 1.0、SMB 2.0和SMB 3.0之间的主要区别和更新:

传输速度对比

在SMB 1.0中,数据传输速度的上限受到多种因素的制约,例如网络带宽、硬件配置、文件大小和数量等等。通常情况下,SMB 1.0的最大传输速度约为100 Mbps(每秒传输1亿位),这主要取决于以太网硬件的限制。但需要注意的是,由于SMB 1.0已经过时,并存在安全漏洞,因此不建议使用它进行数据传输。如果你需要进行文件共享或数据传输,建议升级到更高版本的SMB协议。

SMB 2.0及以上的版本在吞吐量和性能方面都有了显著的改进。根据Microsoft的官方文档,SMB 2.0的理论最大速度约为2 Gbps(每秒传输2亿位),而SMB 3.0甚至可以达到10 Gbps的传输速度。当然,实际的速度还是会受到一些因素的影响,例如网络拥塞、负载均衡、硬盘IO、CPU使用率等等。

SMB 1.0:是最早的SMB版本,最初由IBM开发。它使用广泛,但安全性较差,存在多个漏洞,这些漏洞可以被黑客用来进行攻击。因此,建议不要使用SMB 1.0。

SMB 2.0:是SMB协议的重大更新,增加了许多新特性和改进,包括更快的性能、更好的可扩展性、更好的容错性、加密支持等等。SMB 2.0还引入了一种新的状态量度方法,称为Compound TCP(CTCP),以自适应地调整网络速度,从而优化传输性能。

SMB 3.0:进一步扩展和改进了SMB 2.0的特性,提供了更高的性能和更好的安全性。其中最显著的变化是引入了SMB Direct协议,这是一种使用远程直接内存访问(RDMA)技术实现的高性能数据传输方式,可以直接在内存中传输数据,避免了网络协议和操作系统的开销。

总的来说,SMB 2.0和SMB 3.0的主要改进在于性能、可靠性和安全性方面。这两个版本相比SMB 1.0有更好的支持大文件传输和高带宽网络的能力。同时,SMB 3.0提供了更强大的加密、认证和授权功能,以保护数据的安全性。如果可能,建议使用更新的SMB版本。


最新版本:4.10
这是一个大版本,其亮点是支持异步刷新请求、基于GnuTLS的backupkey部署、多活动目录改进、添加了一个WINSnsswitch模块、以及对SMB3多通道的实验性支持。发行说明中写到:“来自SMB2/3客户端的刷新请求会被异步处理,且不会阻止其它请求的处理。请注意Samba的‘严格同步’(strict sync)必须设置为'是'。”

Samba 4.4命令行工具也迎来了新的技能,比如在‘samba-tool domain demote’子命令下的‘--remove-other-dead-server’选项,以及‘samba-tool sites’和‘samba-tool drs clone-dc-database’这两个子命令。此外,Samba 4.4还迎来了其它一些小改进,比如pdbedit、smbstatus、smbget、the s4-rpc_server、ntlm_auth、vfs_offline、KCC、Samba DNS server等组件的变动。

最后,某些组件也在本次发行版中被移除,比如public headers、vfs_smb_traffic_analyzer和vfs_scannedonly。添加了透明文件压缩;通过 Windows Explorer "previous versions" 对话框访问 "Snapper" 快照;更好的集群支持等等。4.4版本的发布也意味着不再支持 Samba 3 版本。包括了 pre-fork 的改进,KDC 现在支持 pre-fork 进程模型,DCERPC 现在支持 pre-fork NETLOGIN 进程。pre-fork 模型现在重启了失败进程以及其他进程模型的改进。新版本带来了 GPO 的改进、脱机域的备份、组成员身份的统计、JSON 日志的增强及其他改动。


官方主页:http://www.samba.org/

该文章最后由 阿炯 于 2024-04-16 09:08:27 更新,目前是第 4 版。