方案前文:建立一个家庭私有云盘方案系列教程+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.tech/?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/