• 家庭个人服务器的搭建之路--非傻瓜式描述


           本文记录了个人亲身搭建samba服务的经历,对于软件如何安装之类的内容没有详细讲解,需要各位自行解决软件安装问题,本文主要讲解了Samba服务器外网可访问的拓扑架构以及实现方式。

    我的服务器环境描述

    •         一台ubuntu主机,OS使用的是Ubuntu 22.04;
    •         4个机械硬盘(其中3个USB移动硬盘,1个内置的SATA硬盘)

    实现的功能:

    1.         外网可以直接访问此服务器
    2.         硬盘定时进入standby状态,以减小硬盘损坏的机率。

    实现方式:

    •         外网可以直接访问此服务器的实现方式:

                            1. 安装SSH

                            2. 搭建Samba服务器,并将相关硬盘分区挂载。

                            3. 到花生壳 或者 公云 网站申请动态域名,然后进行绑定。

                            4. 路由器开启端口转发

    •         硬盘定时进入standby状态 的实现方式:

                            1. 使用hdparm命令,编写bash脚本,加入开机自动启动实现。

    •        开机自动挂载硬盘分区
    •        服务器掉电恢复后自动开机

    接下来分别说明一下每个功能的具体实现方式

            1. Samba服务器搭建

                  ---建议先自行bing搜索Samba搭建方式,资料太多了,我这里仅说明一些特殊的配置点。

                    a. 安装Samba & SSH

                           SSH安装:

                                    安装系统时选择SSH组件,或者使用如下命令:

                                    sudo apt install openssh-server -y        // 安装SSH

                                    sudo systemctl enable --now ssh          // 启动SSH

                            Samba安装:

                                    sudo apt install samba

                    b. 在/srv下创建Samba目录,然后在下面创建自己想要分享的目录,我的如下:

                    

                    ps.   /srv目录是最新出来的规范,所有的网络服务相关的数据建议都放在这个目录下。 

                            比如想搭建个网站,则在此目录在新建一个www目录,将相关内容放到此目录。

                     c. 新建samba用户,此用户必须是ubuntu已存在的用户。

            

                    d. 修改 /etc/samba/smb.conf ,对待共享的目录进行配置并添加到此文件末尾。

                                                 

            Samba的配置参数说明如下:    

    [Shares]

    共享的名字

    comment = Shares

    一些解释信息,随意

    path = /mnt/Shares/

    共享内容的路径

    create mask = 0777

    权限

    directory mask = 0777

    权限

    public = yes

    指定该共享是否允许guest账户访问。

    guest ok = yes

    指定该共享是否允许guest账户访问。

    writable = yes

    用来指定改共享路径是否可写

    readonly = no

    是否只能

    valid users = zenos

    允许访问该共享自研的用户

    browsable = yes

    用来指定该共享是否可以浏览

    available = yes/no

    用来指定改共享资源是否可用

    admin user = 该共享的管理者

    用于指定该共享的管理员(对该共享具有完全控制权限)

    在samba3.0中,如果“security=share"时,此项无效。

    多个用户有“,”隔开。

    invalid users = xxxx

    禁止访问该共享的用户。(root, @workgroup)

    write list = xxxx

    允许写入该共享的用户。

                    e. samba服务的两个操作说明                

                           · service smbd restart  --- 重启Samba服务(在ubuntu上执行)

                           · net use * /del /y          --- 结束Win下的网络连接(在window的win+R中执行)

            2. 动态域名绑定

                    --- 释义:家用的IP,隔段时间就会发生变化,我们访问家里的服务器主机是需要知道家 

                                   里的IP的,动态域名绑定 即 将家里的IP隔段时间就往指定域名更新绑定一次,

                                   这样我们在外面也能知道家里的IP了。

                    a. 申请花生壳 或者 公云的账号       

                            --- 申请方式也请大家自行解决啦,建议使用公云,好申请,申请方便。

                    b. 登陆

                            i. 花生壳账号登陆一般在路由器上都有。如下图:

                                

                             ii. 公云的登陆方式有的路由器有,有的没有,我的路由器有可以登陆公云,

                                但是路由器同步的是我都内网IP(192.168.x.x这种),建议在ubuntu主机上

                                运行脚本来实现动态同步。

                     下图是公云官网的介绍,先安装lynx,然后按照下图大红框里的内容执行指令即可,

                     当然验证成功后,也需要写一个脚本,加入开机启动项目定时执行一次这个指令。

                    

                     公云自动同步脚本如下:

    1. #!/bin/bash
    2. while [ 1 ];do
    3. lynx -mime_header -auth=@用户名:@密码 "http://members.3322.net/dyndns/update?system=dyndns&hostname=@你申请的动态域名"
    4. sleep 5m
    5. done

                    域名绑定成之后,就可以找到咱们的IP啦,ping一下就能显示(不一定有返回值,和设置有关系),当然有域名之后,IP也不用care啦,后续直接使用域名即可。

            3. 路由器端口转发设置

               域名绑定之后从外网就可以访问到家里的公网IP啦(光猫上的IP),但是想要进入家里面的服务器,还需要在配置一下路由器的端口,否则 还是连接不到我们的服务器。这是因为各种协议的连接都是要走指定端口的,比如:SSH:22, Telnet:23,远程桌面(mstsc):3389等。

    • 绘制了一个外网访问内网的拓扑图如下:       

     SSH使用Port 22, Samba使用的是445,在路由器上添加相关转发即可。

     Samba协议设计多个端口,普通文件共享浏览用的445端口。

     我的端口映射,如下图所示:(由于运营商把445端口屏蔽了,所以445端口对应的外部端口我换了一个,如下图红框)

    以上: 配置好之后,既可在外网电脑端使用winscp进行登陆,或者使用手机端相关软件(我只验证了iphone的),但是不能用win+r 输入网址登陆(此法使用445端口),因为三大运营商把445端口给封禁了,得另想他法。

    winscp登陆如下:   需要使用Port 22端口。

               

              

     手机端使用如下软件可以成功登陆并使用:使用Port 445端口

                                                

                                  

    如下win+r 方式 暂未搞定:

            网络上很多介绍让按照如下方式配置端口转发的,暂未搞定

            netsh interface portproxy add v4tov4 listenport=445 listenaddress=127.0.0.1 connectport= xxxx connectaddress=SERVER_IP

                

             4. 硬盘定时进入standby状态

                 并不是所有的硬盘都支持进入standby模式,可使用的工具有hdparm, hd-idle 和 sdparm,三个工具的使用可以参考此文章:【Linux】硬盘休眠 - Rehtt's Blog

    • 配置此功能一共分两步:
      1. 编写自动待机脚本
      2. 加入开机启动项目
    • 编写自动待机脚本,并添加可执行权限

                   傻瓜时的脚本,每5分钟执行一次

    1. #!/bin/bash
    2. while [ 1 ];do
    3. hdparm -y /dev/sda
    4. hdparm -y /dev/sdc1
    5. hdparm -C /dev/sda
    6. hdparm -C /dev/sdc1
    7. sleep 5m
    8. hdparm -C /dev/sda
    9. hdparm -C /dev/sdc1
    10. done
    •   加入开机启动项

             编辑vi /etc/rc.local,添加相应内容。(末尾的 & 号,一定要加,表示后台运行)

             第一个是硬盘自动休眠的,第二个是公云的DDNS自动同步的。

                           
      

           ps. ubuntu 22.04的 rc.local配置跟之前的版本有些不一样,请参考下面文章

                     “ubuntu22.04设置开启自启动命令脚本_pazzn的博客-CSDN博客

             5. 开机自动挂载硬盘分区

                    方式:通过UUID来挂载

                    查看分区的UUID,命令:blkid,样本展示如下:                

                    编辑 /etc/fstab,在末尾添加配置,我都配置如下

    1. UUID="84D61FEBD61FDC6C" /mnt/Phicomm ntfs nls-utf8,umask-0222,uid-1000,gid-1000,rw 0 0
    2. UUID="AAD8C305D8C2CF2F" /mnt/Movies ntfs nls-utf8,umask-0222,uid-1000,gid-1000,rw 0 0
    3. UUID="9092EDE792EDD1B0" /mnt/Seagate ntfs nls-utf8,umask-0222,uid-1000,gid-1000,rw 0 0
    4. UUID="BE36-53A8" /mnt/Symbols auto nosuid,nodev,nofail 0 0

              6. 服务器掉电恢复后自动开机

                    这个是电脑主板的功能,需要在BIOS界面配置,我的电脑是华硕的,以华硕为例:

    BIOS--Advanced--APM选项里有如下几个选项:

    • ERP是欧盟的节能标准,设置关闭
    • Restore AC Power Loss设为Power On即可。

            第三项WOL打开,还能支持网络唤醒开机(WOL: Wake On Lan)

    在这里插入图片描述

    在这里插入图片描述

    其它说明:

    1.         暂未实现数据备份功能,即硬盘损坏数据会丢失。
    2.         硬盘数据备份可以采用硬Raid,软Raid 或者 自己定期讲最重要的数据传到云盘里备份(eg: 百度云盘,阿里云盘)

    初稿完结。

  • 相关阅读:
    springboot中自定义拦截器用Component注解不用Configuration注解的坏处是什么
    IPEmotion的NVH噪声测试模块——坎贝尔图
    计算机等级考试Python二级
    排序算法:快速排序
    自制操作系统日志——第十五天
    初谈软件工程(一)
    科大讯飞--技术二面面经
    LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置
    测试部门来了个00后卷王之王,老油条感叹真干不过,但是...
    Spring-Web - 数据库 字段加密 解密
  • 原文地址:https://blog.csdn.net/liangzuo123/article/details/127764468