samba服务器搭建配置与连接公网

引言

本文将呈现 : 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 command

想要更多关于特定”netsh”命令及其用法的信息,可以在命令提示符中输入netsh /?netsh command /?来查看内置帮助系统

netsh实现本机端口映射

更换原本的445端口 设置本机端口映射到你那台 samba 的 linux 服务器的 1314 端口。最后,你就可以通过\\127.0.0.1访问你的文件共享服务了

  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服务配置到此完成
  2. 配置win10

    1. 关闭 windows 的 445 端口

      ## 使用cmd命令行关闭,也可通过任务管理器的服务里找到, 445 端口应该是一直被 LanmanServer 占用的,Windows共享服务的显示名称为Server,实际服务名为LanmanServer,为文件共享服务;
      
      sc config LanmanServer start= disabled
      net stop LanmanServer
    2. 启动 windows 的 ip helper 服务

      ## sc config iphlpsvc start= auto用于配置Windows中“IP Helper”服务的启动类型。通过将其设置为“自动”,您将指示Windows在系统启动期间自动启动IP Helper服务,此ip helper用来搞端口转发
      
      sc config iphlpsvc start= auto
    3. 设置 windows 端口转发

      ## connectaddress后为公网ip地址,运行后无显示,后用
      
      netsh interface portproxy add v4tov4 listenport=445 connectaddress=xxx.xx.xxx.xx connectport=1314
      
      ## 注意:必须重启电脑,且服务器对应开启1314端口
      ## 查看转发的端口:
      netsh interface portproxy show v4tov4

      端口映射

    4. 输入\\127.0.0.1访问服务器文件

      同内网一样的用户操作,权限操作,区别就是内网访问是同个同个网段的ip访问,而这个是通过访问 本地回环地址 , 通过监听的本地端口号 , 进行端口转发,将传入的连接从本地计算机的445端口转发到指定的目标 IP 地址和端口号

结语

samba服务的内外网连接到此为止,对于内网上的samba是相当方便的,对于公网上的连接,有这样的一个思路和方法,同样也算不错的;

结束之余,也想到了用内网穿透的方法,这里没去实现,顺带提一下

内网穿透

内网穿透一般的步骤和方法:

  1. 配置Samba服务器:首先,您需要在本地网络中配置并启动Samba服务器。确保Samba服务器已正确设置并具有共享文件夹。
  2. 选择内网穿透工具:选择一个适合您需求的内网穿透工具。常用的内网穿透工具包括ngrok、frp、inlets等。这些工具允许您创建一个隧道,将公网请求转发到本地网络。
  3. 下载和配置内网穿透工具:根据您选择的工具,下载并安装相应的软件。按照工具提供的说明进行配置,将本地Samba服务器的端口映射到公网IP上。
  4. 启动内网穿透服务:运行内网穿透工具并启动隧道服务。该服务会为您生成一个公网可访问的地址,将流量转发到本地Samba服务器。
  5. 访问Samba服务器:使用生成的公网地址,您就可以从任何具有互联网连接的设备上访问Samba服务器了。只需将生成的地址输入到Samba客户端中,即可连接到Samba服务器并访问共享文件夹。

使用内网穿透技术会涉及到网络安全方面的问题。确保已经采取了必要的安全措施,如设置强密码、使用加密连接等,以保护的Samba服务器和数据的安全性。

记录~收工


   转载规则


《samba服务器搭建配置与连接公网》 Bevis23 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
博客历程与优化记录 博客历程与优化记录
前言 本文会记录本站自上线后的一系列优化和美化操作 同时记录使用的一些相关软件与技术 一直有阅读和记录的习惯,以前都是使用有道云笔记、幕布、来记录自己的资源合集,所见所闻,所思所想; 个人热衷于利用技术工具解决问题,提高效率,
2023-07-05
下一篇 
宝塔面板-简化服务器管理与部署的利器 宝塔面板-简化服务器管理与部署的利器
引言 在当今数字化时代,拥有一个稳定高效的服务器以及能够轻松管理和部署应用程序的能力对于个人用户和小型企业来说至关重要。然而,服务器管理和应用程序部署常常需要专业知识和复杂的操作步骤,给非技术背景的用户带来了挑战。正是为了解决这一问题,宝塔
2023-07-02
  目录
切换