概述
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。SMB默认使用TCP 445端口。
有了SMB我们可以在局域网中轻松访问各种共享文件夹或共享打印机,但也正是因为有了它,黑客们才有了可乘之机,他们能通过该端口偷偷共享你的硬盘,甚至会在悄无声息中将你的硬盘格式化掉! 因此很多公司会要求安装数据安全软件,实时监控扫描每一个从445端口进出的报文以保证安全。
这样带来的问题是:当我们自己想要共享确认信任的目录时,因为数据安全软件的实时扫描会导致共享磁盘的访问非常的缓慢。
本文想要在不修改PC端SMB协议端口的前提下,绕过数据安全软件对445端口的监控(只针对确信的samba服务器),来规避共享磁盘访问缓慢的问题。
环境
linux : debian、ubuntu
windows : win10
Samba服务端(linux)
1、修改samba默认端口
$ sudo vim /etc/samba/smb.conf
在[global]下增加 : smb ports = 4455 ,将默认的445端口更换为4455
2、重启samba服务
$ sudo /etc/init.d/samba reload
$ sudo /etc/init.d/samba restart
Samba客户端(windows)
1、配置端口转发
1.1、添加
netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=445 connectaddress=192.168.27.200 connectport=4455
原理如图所示:
1.2、查看
netsh interface portproxy show all
1.3、删除
netsh interface portproxy delete v4tov4 listenaddress=127.0.0.1 listenport=445
2、重启客户端
重启windows即可。
3、映射磁盘
端口转发前,映射磁盘需要在文件管理器输入:\\192.168.27.200\debian
参考《Linux配置Samba服务器与Windows共享磁盘》
端口转发后,将\\192.168.27.200\debian
改为\\127.0.0.1\debian
即可
多个samba服务器配置端口转发(尚未验证)(已验证成功)
端口转发的必要条件是要有一个可以用来转发的端口(本质是一个ip地址),默认情况下,windows只有一个127.0.0.1可供使用,即只能配置一个samba服务器的端口转发。那么如果有多个samba服务器怎么办呢?可参考linux的lo口,配置添加多个ip地址。但是默认情况下,windows没有安装loopback口,处于不可配置的状态下。本段将介绍为windows安装loopback口,并添加多个ip地址,实现多个samba服务器端口转发。
1、windows安装环回口
(1)按下win + R键,在其中输入hdwwiz,然后点击“确定”。
(2)进入添加页面导航,点击下一步
(3)选择“安装我手动从列表选择的硬件(高级)(M)”,点击下一步
(4)选择“网络适配器”,点击下一步
(5)厂商选择Microsoft,型号选择Microsoft KM-TEST 环回适配器,点击下一步
2、查看loopback口
以管理员打开powershell,输入ipconfig /all
3、给loopback口添加ip地址
PS C:\WINDOWS\system32> netsh interface ip add address "以太网 4" 1.10.0.1 255.255.255.0
PS C:\WINDOWS\system32> netsh interface ip add address "以太网 4" 1.10.1.1 255.255.255.0
再次查看环回口,地址已经配置完成,本机也能ping通了
4、配置多个samba服务器端口转发
第3步已经能配置多个ip地址并ping通,即可参考前文将多个samba服务器通过环回口进行端口转发。
如:
samba服务器1
netsh interface portproxy add v4tov4 listenaddress=1.10.0.1 listenport=445 connectaddress=192.168.27.201 connectport=4455
samba服务器2
netsh interface portproxy add v4tov4 listenaddress=1.10.1.1 listenport=445 connectaddress=192.168.27.202 connectport=4455
……