前言

这次配置DDNS只是满足我在深圳这几天而已,我不知道我去学校有没有公网可以用,如果没有那么我会停掉这个东西。
(毕竟有公网还是比较方便的)
不得不说,Linux下配置DDNS是真的简单!

哦对了,因为上一篇博文我说到了我开放了 root 的登陆权限,所以我操作都是在 root 内进行的。
如果您使用的是非 root 账户,记得使用指令需要 su 提权或者在每一个代码前加入 sudo

挂载硬盘

我原来家里一直放的那台主机(服务器)是 Windows Server 2012 R2 系统,而我在那个硬盘还是有一些重要的数据的。
所以我打算拷贝过来。但是不可能走网络。
为什么呢?

  1. 速度较慢(因为原来主机的千兆网卡已经给我拆走拿去当冗余网口了)
  2. 网络I/O
  3. 性能

所以我打算直接拆下硬盘直接装入新主机(服务器)内直接数据迁移,而我新服务器是 Ubuntu Server 20.04 LTS
所以说要挂载 NTFS 格式的硬盘就需要额外装插件(而且性能会下降一些)

1
apt-get -y install ntfs-3g

如果没有权限,前面加一个 sudo 或者直接输入 su 提权吧
之后就是挂载硬盘,Linux下挂载硬盘跟Window是不太一样,Windows可以直接分配盘符,Linux是直接配置文件夹。
之后就是创建文件夹

1
mkdir /file_change

之后查看硬盘叫什么

1
lsblk

最后输入指令挂载到我所在的位置

1
ntfs-3g /dev/sdb3 /file_change/ -o silent,umask=0,locale-zh_CN.utf8

然后就可以看到磁盘已经挂载成功了(1.8T大小的)

之后就开始愉快的复制吧

1
2
3
4
5
6
# 在我已经配置好的阵列创建一个文件夹,专门用来存储我的东西
mkdir /file_data/data
# 安装 Gcp(因为可以显示进度条)
apt-get install -y gcp
# 使用指令cp复制文件
gcp -r /file_change/NAS /file_data

构建SMB

Samba是 SMB/ZIFS网络文件共享协议 的免费开放源重新实现,该协议允许最终用户访问文件,打印机和其他共享资源。

更新软件库

每次安装前,建议更新

1
apt-get update

安装SAMBA

1
2
apt-get install samba samba-common -y
apt-get install sam

之后就可以查看系统中 Samba 的活动状态

1
systemctl status nmbd

之后就可以看到返回的结果
(每个人的返回的结果不一定相同,所以大概看看就好)
一般来讲在 Active 里面,会有绿色的 active

1
2
3
4
5
6
7
8
9
10
11
12
13
● nmbd.service - Samba NMB Daemon
Loaded: loaded (/lib/systemd/system/nmbd.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2022-08-20 03:43:09 UTC; 4h 21min ago
Docs: man:nmbd(8)
man:samba(7)
man:smb.conf(5)
Main PID: 815 (nmbd)
Status: "nmbd: ready to serve connections..."
Tasks: 1 (limit: 4421)
Memory: 9.1M
CPU: 363ms
CGroup: /system.slice/nmbd.service
└─815 /usr/sbin/nmbd --foreground --no-process-group

创建文件

(创建对应文件夹信息,下面是展示,我已经有对应数据的文件了)

1
mkdir /data

(上面只是例子,因为我已经有数据了,有对应的文件夹,所以直接开就可以了)
设置共享目录的权限,毕竟要支持读写操作,所以可能就需要777权限了

1
chmod 777 /file_data/DATA

创建SMB库

配置SAMBA文件信息

1
vim /etc/samba/smb.conf

添加如下类似文件到最后一行,可以理解为创建一个SMB

1
2
3
4
5
[share]
comment = Samba on Ubuntu
path = /file_data/DATA
read only = no
browsable = yes

代码解释

1
2
3
4
5
[samba-share]  #名字,可以自己取,不建议中文
comment = Samba on Ubuntu #随意,不建议中文
path = /file_data/DATA #位置,可以根据自己需要进行修改
read only = no #只读(关闭)
browsable = yes

开放防火墙

接着就是配置防火墙设备(如果已经开放了或者防火墙没开那不用管)

1
ufw allow Samba

之后就可以用

1
ufw status

查看防火墙开放情况

配置全局选项

Samba软件包随附的默认配置文件是为独立的Samba服务器配置的。打开文件并确保将server role设置为standalone server

1
vim /etc/samba/smb.conf

找到如下所示

1
2
3
4
5
# Most people will want "standalone sever" or "member server".
# Running as "active directory domain controller" will require first
# running "samba-tool domain provision" to wipe databases and create a
# new domain.
server role = standalone server

默认情况下,Samba监听所有接口。如果您只想从内部网络限制对Samba服务器的访问,请取消注释以下两行并指定要绑定到的接口:
(因为我没有这方面的需要,所以我就没有配置)
这里我贴出来需要的配置文件信息

1
2
3
4
5
6
7
8
9
10
11
# The specific set of interfaces / networks to bind to
# This can be either the interface name or an IP address/netmask;
# interface names are normally preferred
interfaces = 127.0.0.0/8 eth0

# Only bind to the named interfaces and/or networks; you must use the
# 'interfaces' option above to use this.
# It is recommended that you enable this feature if your Samba machine is
# not protected by a firewall or is a firewall itself. However, this
# option cannot handle dynamic or non-broadcast interfaces correctly.
bind interfaces only = yes

配置完毕后,可以输入

1
testparm

检查 Samba 配置文件是否出现错误,如果没有任何错误,您可以在指令行的反馈中看到

1
Loaded services file OK.

的字样。

最后,重启 Samba 服务即可

1
systemctl restart nmbd

创建用户

我创建的用户名为 nas 的新用户,使用如下命令创建:
(因为一些原因,不可以直接使用 Samba 的创建用户界面直接创建用户,需要先在系统中创建后,再执行创建操作)

1
useradd -M -d /home/nas -s /usr/sbin/nologin -G sambashare nas

代码解释:

  • -M 不创建用户的主目录。手动创建目录
  • -d /home/nas 将用户的主目录设置为/home/nas
  • -s /usr/sbin/nologin 设置该用户禁止访问shell,以免出现安全问题
  • -G sambashare 将用户添加到 sambashare 组内

创建用户名所在位置

1
2
mkdir /home/nas
chown nas:sambashare /home/nas

以下命令会将setgid位添加到 /home/nas 目录,以便该目录中的新创建文件将继承父目录的组。这样,无论哪个用户创建新文件,该文件的组所有者均为 sambashare 。例如,如果您未将目录的权限设置为 2770 ,并且 sadmin 用户创建了一个新文件,则该用户nas将无法读取/写入该文件。

1
chmod 2770 /home/nas

通过设置用户密码将 nas 用户账户添加到 Samba 的数据库当中

1
smbpasswd -a nas

系统接着就会提示您配置用户密码。
设置完毕就可以开启用户信息

1
smbpasswd -e nas

配置完毕后,就可以直接重启 Samba 服务器,接着就可以通过链接,链接进入你的 SMB

1
systemctl restart nmbd

效果图




构建DDNS

系统选用 DDNS-GO 为驱动。
域名使用 阿里云 提供支持。

  • 优点
    • 支持Mac、Windows、Linux系统,支持ARM、x86架构
    • 支持的域名服务商 Alidns(阿里云) Dnspod(腾讯云) Cloudflare 华为云 Callback 百度云
    • 支持接口/网卡获取IP
    • 支持以服务的方式运行
    • 默认间隔5分钟同步一次
    • 支持多个域名同时解析,公司必备
    • 支持多级域名
    • 网页中配置,简单又方便,可设置 登录用户名和密码 / 禁止从公网访问
    • 网页中方便快速查看最近50条日志,不需要跑docker中查看
    • 支持webhook通知
    • 支持TTL
    • 支持部分dns服务商传递自定义参数,实现地域解析等功能

插件准备

首先下载后,创建一个文件夹进入,把对应 ddns-go 文件存储在你创建的文件夹目录下。
随后在 shell 中进入该目录下。

随后,授予文件 ddns-go 文件权限

1
chmod 755 ddns-go

之后运行安装程序

1
./ddns-go -s install

安装完毕就就会自动开启,当然不要忘记开放防火墙(如果你关闭了防火墙就另外说明吧)

1
ufw allow 9876

获取阿里云信息

此操作需要阿里云的 AccessKey

获取到阿里云的 AccessKey ID 和 AccessKey Secret 后直接进入地址 192.168.2.2:9876 (如果是你自己配置,就进入你自己的IP地址)

将对应的信息填入 DNS服务商 中。
接着配置ipv4和ipv6即可,如果你经常出门或者说要在外面,可以试试直接打开公网访问,这样的话,在外面也可以轻松修改配置信息。

最后配置完毕后即可,之后就可以通过域名访问服务器啦~

结尾

本篇文章只是记录信息,并没有什么难度较高的东西,如有需要可以自行尝试。
本篇博文封面来源:Pixiv: (sky)100586704