引言
本文将呈现 : 1.samba服务的相关背景与原理 2.samba服务的搭建与配置(针对内网) 3.配置win10连接公网ip连接samba服务(针对公网)
之前服务器于搭建chatgpt的微信机器人后,闲暇之余想做个文件服务器,选择了samba做文件共享,轻松搞定于局域网共享,但由于要给远方的朋友也使用,便有了让远方朋友连接公网ip的samba服务器,由于考虑到端口问题,比如445端口(注释),所以得突破这个点,后面有了一个思路,便是通过 netsh来设置端口映射
注释!
samba是默认使用445端口进行通信,且服务针对windows, windows 默认连的是 445 端口
2017年5月,出现了永恒之蓝病毒(比特币勒索病毒), 永恒之蓝(EternalBlue)是一种利用Windows操作系统中的漏洞进行攻击的网络蠕虫病毒。它最初由美国国家安全局(NSA)开发,在泄露后被黑客组织使用,给全球范围内的计算机系统带来了严重的影响。 由此导致运营商(内地三大运营服务商)把 445 端口封了,因此现在无法通过 445 端口连接你的 linux 服务器了
1.samba服务简介
1.1什么是samba服务
Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的网络通讯协议,后来Samba将SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件;Samba提供了一种在不同操作系统之间共享文件、打印机和其他资源的方法。它的本质是一个实现了SMB/CIFS协议的服务器软件,允许不同操作系统的计算机之间进行文件共享和通信。
1.2samba服务的应用
Samba能做什么?
分享档案与打印机服务
可以提供用户登入Samba主机时的身份认证,以提供不同身份者的个别数据。
可以进行windows网络上的主机名解析
可以进行装置的分享
Samba服务器的应用实例:
利用软件直接编修WWW主机上面的网页数据
- 用FTP修改,后上传;不方便,很有可能传上去旧版本的。
- 在线修改比较能迅速看到结果。
做成可直接联机的文件服务器
- 因为每个人登陆的账户名不同,这样对目录的权限也不同,实现权限控制。
2.samba服务器的搭建(内网)
第一步:安装samba服务
yum -y install samba* ## 安装samba服务
systemctl start smb ## 启动服务
systemctl enable smb ##让系统在引导时自动启动 Samba 服务
firewall-cmd --permanent --add-service=samba
## 防火墙添加 Samba 服务的规则,允许传入和传出与 Samba 相关的网络流量,--permanent 参数表示将规则永久保存,以便在系统重启后仍然有效
firewall-cmd --reload ## 有permanent参数的时候需要马上重载生效
getenforce ## 获取 SELinux 当前的执行模式,此时为permissive模式便可,否则使用命令:setenforce 0
## Enforcing:表示 SELinux 正在强制执行安全策略,并且会拒绝违反策略的操作。
## Permissive:表示 SELinux 已被启用,但仅会记录违反策略的操作而不阻止它们。
## Disabled:表示 SELinux 已被禁用,不会对系统进行强制访问控制。
第二步:Samba服务的配置
Samba服务的主要配置文件为:/etc/sambs/smb.conf , 主配置文件由两部分构成:Global 部分和 Share 部分
1.global部分:
该设置都是与Samba服务整体运行环境有关的选项,它的设置项目是针对所有共享资源的
cat /etc/samba/smb.conf # 查看配置文件内容
# 文件内容如下,更详细的smb.conf配置内容可以上网查找,这里做部分注释
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
[global] #全局参数:该设置都是与Samba服务整体运行环境有关的选项,它的设置项目是针对所有共享资源的
workgroup =MYGROUP
#设定Samba Server所要加入的工作组或域
security = user
#安装验证方式,总共有四种,目前不再支持share级别
passdb backend = tdbsam
#定义用户后台类型,总共有三种
printing = cups
printcap name = cups
load printers = yes
#设置在Samba服务启动时是否共享打印机设备
cups options = raw
#打印机的选项
[homes]
comment = Home Directories #描述信息
valid users = %S, %D%w%S #有效访问用户
path = ~ #文件路径
browseable = No #指定共享信息是否在“网上邻居”中可见
read only = No #是否只读
inherit acls = Yes
[printers]
comment = All Printers
path = /var/tmp #共享文件的实际路径。
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = root
create mask = 0664
directory mask = 0775
2.share部分:
该设置针对的是共享目录个别的设置,只对当前的共享资源起作用
vim /etc/samba/smb.conf
## 在文件最后添加以下,此为测试
[share]
comment = Share Directories ## 这个参数提供对共享资源的描述
path=/www/share ## 指定了要共享的目录路径
public = yes ## public用来指定该共享是否允许guest账户访问
browseable = yes ## 共享将在网络上可见
writable = yes ## 设置共享的可写性
:wq!保存退出
还有其他参数可自行 选择设置: valid users = 允许访问该共享的用户 ; invalid users = 禁止访问该共享的用户 ; write list = 允许写入该共享的用户
systemctl restart smb.service ## 重启smb服务
## 添加Samba用户
smbpasswd –a username ## 设置Samba用户的密码
pdbedit –a username ## 向Samba数据库中添加用户
pdbedit -L ## 查看已注册的Samba用户列表
在Windows运行中键入\\Server_IP验证
注意:::第二次连接更换用户需要运行:net use * /d /y
到此,服务器配置便完成
3.samba服务配置连接(公网)
在引言已经提到,由于永恒之蓝病毒的影响,445端口已封,目前无法通过 445 端口连接你的 linux 服务器了,下面的操作便是利用 netsh 来绕过这个端口,接下来介绍该工具与实现方法
netsh简介
功能:Netsh是Windows操作系统中的命令行脚本实用工具,用于管理和配置网络功能
命令语法: 命令语法:Netsh命令的基本语法为 netsh
想要更多关于特定”netsh”命令及其用法的信息,可以在命令提示符中输入
netsh /?
或netsh command /?
来查看内置帮助系统
netsh实现本机端口映射
更换原本的445端口 设置本机端口映射到你那台 samba 的 linux 服务器的 1314 端口。最后,你就可以通过
\\127.0.0.1
访问你的文件共享服务了
配置smb.conf,更改端口, 修改 Samba 主配置文件:/etc/samba/smb.conf ;通过参数smb ports 将 Samba 的端口更改为:1314,然后重启服务
vim /etc/samba/smb.conf # See smb.conf.example for a more detailed config file or # read the smb.conf manpage. # Run 'testparm' to verify the config is correct after # you modified it. [global] workgroup = SAMBA security = user passdb backend = tdbsam printing = cups printcap name = cups load printers = yes cups options = raw smb ports = 1314 ## 添加此行 systemctl restart smb.service ## 重启服务 ## 查看端口 [root@miyi_server ~]# netstat -nplt | grep smb tcp 0 0 0.0.0.0:1314 0.0.0.0:* LISTEN 7528/smbd tcp6 0 0 :::1314 :::* LISTEN 7528/smbd samba服务配置到此完成
配置win10
关闭 windows 的 445 端口 :
## 使用cmd命令行关闭,也可通过任务管理器的服务里找到, 445 端口应该是一直被 LanmanServer 占用的,Windows共享服务的显示名称为Server,实际服务名为LanmanServer,为文件共享服务; sc config LanmanServer start= disabled net stop LanmanServer
启动 windows 的 ip helper 服务 :
## sc config iphlpsvc start= auto用于配置Windows中“IP Helper”服务的启动类型。通过将其设置为“自动”,您将指示Windows在系统启动期间自动启动IP Helper服务,此ip helper用来搞端口转发 sc config iphlpsvc start= auto
设置 windows 端口转发 :
## connectaddress后为公网ip地址,运行后无显示,后用 netsh interface portproxy add v4tov4 listenport=445 connectaddress=xxx.xx.xxx.xx connectport=1314 ## 注意:必须重启电脑,且服务器对应开启1314端口 ## 查看转发的端口: netsh interface portproxy show v4tov4
输入
\\127.0.0.1
访问服务器文件:同内网一样的用户操作,权限操作,区别就是内网访问是同个同个网段的ip访问,而这个是通过访问 本地回环地址 , 通过监听的本地端口号 , 进行端口转发,将传入的连接从本地计算机的445端口转发到指定的目标 IP 地址和端口号
结语
samba服务的内外网连接到此为止,对于内网上的samba是相当方便的,对于公网上的连接,有这样的一个思路和方法,同样也算不错的;
结束之余,也想到了用内网穿透的方法,这里没去实现,顺带提一下
内网穿透
内网穿透一般的步骤和方法:
- 配置Samba服务器:首先,您需要在本地网络中配置并启动Samba服务器。确保Samba服务器已正确设置并具有共享文件夹。
- 选择内网穿透工具:选择一个适合您需求的内网穿透工具。常用的内网穿透工具包括ngrok、frp、inlets等。这些工具允许您创建一个隧道,将公网请求转发到本地网络。
- 下载和配置内网穿透工具:根据您选择的工具,下载并安装相应的软件。按照工具提供的说明进行配置,将本地Samba服务器的端口映射到公网IP上。
- 启动内网穿透服务:运行内网穿透工具并启动隧道服务。该服务会为您生成一个公网可访问的地址,将流量转发到本地Samba服务器。
- 访问Samba服务器:使用生成的公网地址,您就可以从任何具有互联网连接的设备上访问Samba服务器了。只需将生成的地址输入到Samba客户端中,即可连接到Samba服务器并访问共享文件夹。
使用内网穿透技术会涉及到网络安全方面的问题。确保已经采取了必要的安全措施,如设置强密码、使用加密连接等,以保护的Samba服务器和数据的安全性。
记录~收工