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

发布于:2022-11-09 ⋅ 阅读:(6) ⋅ 点赞:(0) ⋅ 评论:(0)

       本文记录了个人亲身搭建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,然后按照下图大红框里的内容执行指令即可,

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

                

                 公云自动同步脚本如下:

#!/bin/bash


while [ 1 ];do

lynx -mime_header -auth=@用户名:@密码 "http://members.3322.net/dyndns/update?system=dyndns&hostname=@你申请的动态域名"

sleep 5m


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分钟执行一次

#!/bin/bash


while [ 1 ];do


 hdparm -y /dev/sda
 hdparm -y /dev/sdc1
 hdparm -C /dev/sda
 hdparm -C /dev/sdc1

sleep 5m

 hdparm -C /dev/sda
 hdparm -C /dev/sdc1

done
  •   加入开机启动项

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

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

                       
  

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

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

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

                方式:通过UUID来挂载

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

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

UUID="84D61FEBD61FDC6C" /mnt/Phicomm ntfs nls-utf8,umask-0222,uid-1000,gid-1000,rw 0 0
UUID="AAD8C305D8C2CF2F" /mnt/Movies  ntfs nls-utf8,umask-0222,uid-1000,gid-1000,rw 0 0
UUID="9092EDE792EDD1B0" /mnt/Seagate ntfs nls-utf8,umask-0222,uid-1000,gid-1000,rw 0 0
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: 百度云盘,阿里云盘)

初稿完结。