分类 家庭服务器 下的文章

一、前言

家庭服务器的第一要务便是帮助全家实现科学上网。

我们分为两部分实现:

第一部分是配置clash提供相关服务;

第二部分是实现端口转发,让服务器可以作为旁路由代理流量。

二、配置clash

1、下载并安装clash

我们从GitHub上提供的官方文件下载。

image-20230305095648845.png

选择相应的版本并复制下载链接

image-20230305095727716.png

在Linux上下载并解压、重命名

wget https://github.com/Dreamacro/clash/releases/download/v1.13.0/clash-linux-amd64-v1.13.0.gz
mv clash-linux-amd64-v1.13.0.gz clash.gz
gunzip clash.gz

image-20230305095915951.png

我们为clash文件加上可执行权限并执行它

chmod +x clash
./clash

按CTRL+Z暂时退出执行,因为我们还没有设置配置文件。

此时会在root目录的用户目录下生成一个./config/clash目录

我们进入这个目录

cd ~/.config/clash

我们会发现此时存在着三个文件

image-20230305100641487.png

如果第三个文件不存在,我们可以从GitHub上下载这个文件。

image-20230305100741293.png

2、对clash进行配置

我们先从机场获取订阅链接,下载。

wget "你的订阅链接" -O config.yaml --no-check-certificate

然后我们对下载下来的配置文件进行编辑。

vim config.yaml

其中我们加入两行,然后允许局域网连接。

external-ui: dashboard
secret: 'cdc1102'
allow-lan: true

第一行让用户知道在使用哪一个外部控制器

第二行为外部控制时的密码验证,防止别人随意要登陆进

第三行允许局域网内的主机连接到本机,是外部控制的必要条件,也可以让局域网内的主机实现http代理。

image-20230305101255069.png

3、配置yacd以外部控制clash

作为服务器我们想要切换节点则需要登陆进shell,通过命令行操控。

这样的方式十分麻烦,所以我们要通过一个外部控制器。

image-20230305104528947.png

wget https://github.com/haishanh/yacd/releases/download/v0.3.8/yacd.tar.xz
tar -xf yacd.tar.xz
mv public dashboard

我们将yacd下载下来并解压、重命名。

然后建立一个apache服务器并关闭防火墙

yum install httpd -y
systemctl stop firewalld
systemctl disable firewalld

我们将yacd放到apache服务器的目录中,启动并设置自启动。

cd dashboard
cp * /var/www/html/ -r
systemctl start httpd
systemctl enable httpd

此时,访问服务器的IP地址加端口、密码即可进入网页管理界面。

image-20230324215200998.png

4、为clash创建服务

通过创建一个服务让clash能够自启,并利于管理。

我们使用systemd的方式去创建服务。

我们先把clash移动到服务目录中

mv clash /usr/local/bin

配置文件

vim /etc/systemd/system/clash.service

在其中添加如下内容

[Unit]
Description=clash service
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/clash
Restart=on-failure

[Install]
WantedBy=multi-user.target

启动并自启动

systemctl daemon-reload
systemctl enable clash
systemctl start clash

此时,clash就配置好了。

我们在终端中配置代理

# Proxy auto start
export https_proxy=http://127.0.0.1:7890
export http_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7891
# Open proxy
on() {
    export https_proxy=http://127.0.0.1:7890
    export http_proxy=http://127.0.0.1:7890
    export all_proxy=socks5://127.0.0.1:7891
    echo "HTTP/HTTPS Proxy on"
}

# Close proxy
off() {
    unset http_proxy
    unset https_proxy
    unset all_proxy
    echo "HTTP/HTTPS Proxy off"
}

使其生效

source ~/.bashrc

三、配置路由功能

1、安装nftables

我们使用nftable来实现端口转发的功能。

yum install nftables -y
2、配置nftables

首先创建配置文件的目录

mkdir /etc/nftables.conf.d

在其中创建私有地址的定义文件

vim /etc/nftables.conf.d/private.nft

添加如下内容

define private_list = {
    0.0.0.0/8,
    10.0.0.0/8,
    127.0.0.0/8,
    169.254.0.0/16,
    172.16.0.0/12,
    192.168.0.0/16,
    224.0.0.0/4,
    240.0.0.0/4
}

修改nftables的配置文件

vim /etc/nftables.conf
#!/usr/sbin/nft -f

include "/etc/nftables.conf.d/private.nft"

table ip nat {
    chain proxy {
        ip daddr $private_list return
            ip protocol tcp redirect to :7892
    }
    chain prerouting {
        type nat hook prerouting priority 0; policy accept;
        jump proxy
    }
}

清空 nftalbes 规则,并使新规则生效

nft flush ruleset
nft -f /etc/nftables.conf

我们查看一下当前的规则

nft list ruleset

image-20230324220911169.png

最后设置 nftables开机自启动

systemctl start nftables
systemctl enable nftables

我们看一下状态

systemctl status nftables

image-20230324221017496.png

3、将网关配置成服务器的IP地址

此时将网关配置成服务器的IP地址即可实现科学上网。

大功告成!!

一、前言

家庭服务器的首选功能就是配置文件共享功能,此功能由smb服务实现。

smb是微软自主研发的,用于在Windows间文件共享的协议。我们在Linux服务器上搭建此服务,可将服务器作为文件存储的介质,并实现网络之间的共享。

二、安装smb服务

yum install samba samba-client

安装samba服务端和控制端

三、配置smb服务

1、创建smb账号

smb账号和系统账号相互独立,但smb账号依赖于系统账号。

首先我们先来创建一个系统账号并创建密码

useradd hanran
passwd hanran
#输入密码并重复

然后我们使用smb账户管理工具添加一个smb账号

smbpasswd -a hanran
#输入密码并确认

需要注意的是,smb账号必须要建立在已有的系统账号中。否则就会报错。

image-20230304193936505.png

2、编辑配置文件

smb的配置文件在/etc/samba/smb.conf中

我们使用vim编辑器进行编辑

vim /etc/samba/smb.conf

我们新建一个代码块

[hanran_files]
    path = /home/hanran/files
    browseable = yes
    writable = yes
    valid users = hanran
    available = yes
    create mode = 0664
    directory mode = 0775

image-20230304194429790.png

其中中括号为共享的文件夹名称;

path为共享文件夹的路径;

browseable表示文件夹是否可见;

若不可见,则无法通过输入IP地址直接发现此共享文件夹;

writable从smb层控制账户的可写权限;

最后两行分别声明了创建的文件和文件夹的权限。

我们再编辑一下全局配置。

image-20230304194650065.png

其中passdb backend表示密码的数据库方式。

在centos的默认配置中使用tdbsam。

该方式使用一个数据库文件来建立用户数据库。数据库文件叫passdb.tdb,默认在/etc/samba目录下。passdb.tdb用户数据库 可以使用smbpasswd –a来建立Samba用户,不过要建立的Samba用户必须先是系统用户。我们也可以使用pdbedit命令来建立Samba账户。

此方式不符合我个人的使用习惯,当Windows客户端登录时,此方式的操作用户为与服务器系统用户相同组的一个用户、我们将它改成smbpasswd,这样我们的操作用户就是系统用户本身了。

保存并退出。

systemctl enable smb
systemctl start smb

设置自启动并生效smb服务。

三、关闭selinux和防火墙

selinux是一种保护Linux系统的软件,它不允许网络上的计算机更改本服务器中的系统资源。

所以我们将selinux关闭。

1、查看selinux状态

image-20230304200308931.png

2、编辑selinux配置文件

image-20230304200553974.png

vim /etc/selinux/config

我们将selinux参数设置为0

这表示一切行为不会被阻止,但会被记录在日志中,即“permissive”模式。

3、配置centos防火墙
systemctl stop firewalld
systemctl disable firewalld

或者也可以放行相应端口

smb端口为137、138、139、445,我们将其放行。

firewall-cmd --zone=public --add-port=137/tcp --permanent
firewall-cmd --zone=public --add-port=138/tcp --permanent
firewall-cmd --zone=public --add-port=139/tcp --permanent
firewall-cmd --zone=public --add-port=445/tcp --permanent

四、大功告成!

在Windows上的文件资源管理器中键入IP地址即可访问资源。

用户名和密码为我们刚才所设置的参数。

一切大功告成!

一、简介

最初让我产生搭建一个家庭服务器的原因非常简单,仅仅是想磨练Linux管理运维技术,将其实践到生活中而已。这个动机十分单纯,但我并未曾料想过这件事情的意义之深,是远超我的预想的。

因此,本文作为该系列的第一篇博客,将阐述该服务器搭建的一切流程。

二、制作centos安装盘

经过慎重考虑,使用centos作为Linux服务器系统。其具有以下优点:

1、十分稳定,是企业服务器系统的首选。

2、安装快速,一切安装包都在u盘中本地存放,无需联网更新,比Ubuntu server快不少。

3、资源占用少,内存进展用300mb,相较Ubuntu server少100mb。

但它的软件安装的确没有Ubuntu方便,这一点也成为了之后的问题关键。

1、下载镜像

Download (centos.org)下载镜像
image-20230226141854303.png

保存到本地,重命名。

2、烧录u盘

这里我们使用rufus进行烧录。
image-20230226142025773.png
image-20230226142034390.png

将设备与镜像文件选择后点击开始,稍等片刻即刻录完毕。

centos安装盘制作完成。

三、安装centos

进入bios界面更改启动项,选择以u盘启动。

选择安装centos。

选择最小化安装,并同时安装必要的系统管理工具。

设置root密码并新建管理员账号。

半小时后大概就安装成功了。

四、进行后配置

1、先查看IP地址

image-20230226142537119.png

2、通过ssh远程登录

image-20230226142712398.png

四、大功告成!

至此,家庭服务器的配置已基本完成。我们可以在上面尽情搞事情了!

2023.2.26