博文記錄
教程分享 2019-06-14 10:45:20 1414 0

方案前文:建立一个家庭私有云盘方案系列教程+N2n+Nextcloud

目前第三方云盘存在速度慢、限制多、取回难、费用高等各方面问题,这里进行本地搭建 NAS 方案,配置个人私有云盘前置基础,存储个人大量数据及共享分享给朋友使用。

硬件选配

这里不做多余阐述,参见知乎大佬答案。

https://www.zhihu.com/question/21359049

配置下来费用在 1200 左右。

...

NAS 服务器配置

NAS 服务器安装 windows10,当然也可以安装其他系统,这里只是方便本人做一些其他的用途,以及管理上比较方便些。

NAS 物理机上安装一个 Apache 用于测试。这里不做说明,创建好后目录里放一个测试文件。

Evil.Minds.2015.S01.EP01.1080P.WEB-DL.mp4

N2N 目前在 windows 上创建的虚拟网卡速度传输速度很慢,说是百兆,其速率也就几百 Kb。

这里考虑在 nas 物理机上,创建一个虚拟机为 linux,通过 tcp 代理访问 windows。

在这里我们计入一个网络关系列表,防止后面配置以及梳理造成混乱。

公网 115.0.0.1 / 阿里云服务器/N2N 中心网络
内网 192.168.1.100 网关 192.168.1.1 本地 NAS
内网 192.168.1.110 网关 192.168.1.1 本地 NAS-linux 虚拟机
N 网 10.0.0.20 / 本地 NAS
N 网 10.0.0.25 / 本地 NAS-linux 虚拟机
N 网 10.0.0.24 / 阿里云公网上的 N2N 节点
N 网 10.0.0.21 / 笔记本物理机

上表中,阿里云公网即当 N2N 中心网络也当做 N2N 节点网络中一份子,莫要搞混逻辑。

NAS-安装 centos

虚拟机安装 centos,使用 n2n 转发流量。

将其存储在 SSD 上,24 小时运行,节省机械硬盘功耗。

配置网络 vi /etc/sysconfig/network-scripts/ifcfg-ens33

BOOTPROTO=static
ONBOOT=yes

IPADDR=192.168.1.110
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=114.114.114.114
DNS2=8.8.8.8

并且将其设置为桥接网络模式,重启 centos 即可网络通畅。 

关闭防火墙,防止后面测试出现问题。至于开放防火墙,请自行调试,本文不开放防火墙。

systemctl stop firewalld.service

安装 N2N

安装 n2n 简单过程,详情参见教程

mkdir /mnt/tools -p
cd /mnt/tools

yum install -y openssl-devel
yum install -y cmake
yum install -y net-tools
yum install -y git
yum install -y gcc gcc-c++

git clone https://github.com/meyerd/n2n.git

cd n2n/n2n_v2

mkdir build
cd build
cmake ..
make && make install

安装方法一样,在阿里云上同样安装一遍。

运行 n2n 中心节点(阿里云,莫要混乱)

#启用阿里云中心节点,监听 5000 端口
supernode -l 5000
#再运行一个客户端在阿里云
edge -a 10.0.0.24 -c edge0 -k wss -l 115.0.0.1:5000

运行 n2n 客户端(NAS-linux)

edge -a 10.0.0.25 -c edge0 -k wss -l 115.0.0.1:5000

本机电脑下载运行 N2N 客户端

http://file.eller.top/?dir=N2n

将以下内容保存 run-n2n.bat,并运行。

@echo off
cd /d %~dp0
if "%1" == "h" goto begin 
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit 
:begin 

cd /d %~dp0
edge -a 10.0.0.21 -c edge0 -k wss -l 115.0.0.1:5000
pause

笔记本物理机一样关掉防火墙,避免测试出现问题。

安装 nginx

安装 nginx 简单过程,详情按照上文超链接。

#安装编译支持库
mkdir /mnt/tools -p
cd /mnt/tools
yum -y install gcc automake autoconf libtool make
yum install gcc gcc-c++

#安装 PCRE
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz
tar -xzf pcre-8.40.tar.gz -C ./
cd pcre-8.40
./configure --prefix=/usr/local/pcre
make && make install
cd ..

#安装 zlib
wget http://zlib.net/zlib-1.2.11.tar.gz
tar -xzf zlib-1.2.11.tar.gz -C ./
cd zlib-1.2.11
./configure --prefix=/usr/local/zlib
make && make install
cd ..

#安装 openss
wget https://www.openssl.org/source/openssl-1.0.2k.tar.gz
tar -xzf openssl-1.0.2k.tar.gz -C ./
#注意,这里不需要进行安装,后面步骤省略。

#编译安装 nginx
wget http://nginx.org/download/nginx-1.12.0.tar.gz
tar -xzf nginx-1.12.0.tar.gz  -C ./
cd nginx-1.12.0

./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--with-http_ssl_module \
--with-pcre=/mnt/tools/pcre-8.40/ \
--with-zlib=/mnt/tools/zlib-1.2.11/ \
--with-openssl=/mnt/tools/openssl-1.0.2k/ \
--with-stream


#注:cpre、zlib、openssl 等依赖包的路径是解压的源码路径不是安装后的路径。

make
make install

nginx 配置

cd /usr/local/nginx/
vi nginx.conf

尾部追加配置

stream {


    log_format proxy '$remote_addr [$time_local] '
                 '$protocol $status $bytes_sent $bytes_received '
                 '$session_time "$upstream_addr" '
                 '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';

    access_log /var/log/nginx/tcp-access.log proxy ;
    open_log_file_cache off;
    include /usr/local/nginx/conf.d/*.stream;
}

创建日志目录、配置目录

mkdir /var/log/nginx/
mkdir /usr/local/nginx/conf.d/
cd /usr/local/nginx/conf.d/

新建一个 tcp 转发配置文件

vi /usr/local/nginx/conf.d/tcp.stream
upstream TCP10020 {
        hash $remote_addr consistent;
        #server 10.0.0.20:80;
        server 192.168.1.100:80;
    }
    server {
        listen 10025;#nas-linux 监听 10025 端口
        proxy_connect_timeout 5s;
        proxy_timeout 300s;
        proxy_pass TCP10020;#将监听获取到的数据转发到 TCP10020 上,即 NAS 物理机的 80 端口上
    }

重载 nginx

/usr/local/nginx/nginx -s reload

测试访问,均正常方可继续。

  • http://192.168.1.110:10025/
  • http://192.168.1.100/
  • http://10.0.0.25:10025/

后一篇:家庭私有云盘系列教程-建立公网服务器实现外网访问

media iamge
StudioEIM - 冒险者讲习所
0:00