搭建一台外网可用NAS-一台老电脑的改造之旅

不仅仅是一台NAS 还是一台下载机,还能用来挂酷Q机器人。

说到网盘 自从我的旅游照片都开始被百度云和谐之后,就打算自己建一个NAS了。
在高三暑假时的主要矛盾是:日益增长的Galgame磁盘占用需求,与磁盘可用空间相对落后的矛盾。→_→

于是就开始着手做一个NAS。


前言

这部分可以跳过2333
网上做NAS无非就是黑群晖,但是可玩性实属不高。而且记得当时黑群晖已经不能完全洗白了。而且除了挂NAS以外这台电脑就干不了其他活了。

搜了一下,NAS常用的协议也就SAMBA,也就是常用的Windows磁盘共享。最大的优点就在于能够在Windows文件管理器里挂载网络磁盘当本地磁盘用,可以直接把Galgame扔到NAS上。

于是从家里的废旧电脑里面翻出来了一台赛扬E3400的上古板U,装上Windows10,禁止更新,C盘装还原卡,Samba共享,稳定性相当不错。
顺带着给家里的内网升级成千兆网,

玩了一段时间之后 发现这货的局限性在于不能外网访问,并且觉得功耗有点高,就翻出来了之前的绝育老母鸡,玩客云。

玩客云当时是60买的,自带外网访问,有APP可以直连,Samba共享,迅雷永久会员,HDMI输出。配合米家智能插座,不用的时候关机,用的时候再开机就可。
为数不多的缺点就是没有USB3.0口,并且外网没法挂载磁盘玩Gal。不过轻度使用也是可以说得过去。

当时已经挺满意的了,就把那台老电脑拿去做机顶盒了。

后来,我开始搭建酷Q机器人,需要一台7*24小时开机的Windows,就从阿里云买了一台学生服务器。
再后来 需要搭建个人博客。Windows做服务器实在是太不好用,但是酷Q又没有Linux版本,于是在家里搭建一台Windows的 NAS & 下载机 & 酷Q机器人平台。

硬件选择

作为家用7*24小时运行的平台,最优先考虑的就是待机功耗(而不是满载功耗)。还有成本,接着是性能和稳定性。

*为什么是待机功耗呢?
因为你NAS和下载机绝大多数时间都是待机,只有在少数的工作时间功耗才会上来。
如果一味地压低满载功耗的代价就是工作时性能过于孱弱。

最后进入决赛圈的就两个选择:

  1. J1900这种Intel低功耗U。
  2. 老英特尔处理器。

非常巧的是我们学校计算机机房用的刚好是J1900,我就直接带了个U盘,跑了跑CUP-Z。
Version 17.01.64跑分
单核60多核240,是什么还念呢?阿里云10元学生机1C1T的服务器,跑分220。

实在是太孱弱了。

AMD,yes?
yes个屁,AMD起来也就是这两年的事情,你要是能用Ryzen5 3600X组一个NAS当我没说,请右转隔壁买成品去,要是不想去隔壁,打钱给钱我给你组2333。
我买过一台x4 641平台,默认频率,待机功耗60W,满载120,
单核150 多核600 实在划不来

最后,回到家里,翻出了这个吃灰3年的高中同学让我帮忙修的h61平台,附赠了一颗i3-3240,疑似是内存供电烧了,但是我飞了两根漆包线仍然不能用,检测卡提示内存报错。于是这个板子就扔到了现在。
然后重新飞了一根粗的线过去,成功点亮。


不过DDR3插槽1不能用,也就是只能插一根内存,所有PCI口不能用,PCI-E可以。
问题不大,开始装机。

内存先插一根4G,然后一个128G SSD,跑分。

够用了。

再插上两个HDD, 看看待机功耗。

待机接近30W,相比于将近15瓦的J1900,我觉得很值。

总之,对于家用万兆以下的NAS,买2c4t这种2代i3级别的U,性能够,功耗低。

系统配置

由于必须要挂QQ机器人,以及当做下载机,最合适的系统就是Windows。我个人是比较喜欢Windows10的,在Windows10下最要优先考虑的就是关闭自动更新以及开启系统还原卡。
还原卡这里就使用冰点还原卡吧,只冻结C盘,其他所有盘解冻,个人文件夹(比如文档 桌面)移动到其他盘,还原卡具体安装教程和破解网上一搜一大堆。
关闭系统更新也有很多种方法 具体可以百度。
然后再加一个USB的看门狗 系统死机直接强制重启。
主板设置上电自动开机
然后再来个小米WIFI插座 啥都不怕。

然后远程维护就同时用上了向日葵远程控制和Teamviewer,不过这俩都不好用,最好的方法就是Windows RDP+端口映射。
但是三种方法同时使用 翻车概率会降得很低。

内网环境搭建

一般来说,内网+Windows的最合适的协议是Samba,Samba的速度应该也会快一点,不过为了方便外网访问 建议选择限制端口的FTP。
不过这里为了更好的对比,作为成年人 我全都要

不过 无论选用哪种方式搭建,都必须提前配置好防火墙,否则就会出现各种各样的问题。方便起见,内网访问直接关闭防火墙即可。

Samba协议共享环境搭建

Samba协议简单多了,直接右键本地磁盘


OK
权限啥的自己折腾

FTP协议共享环境搭建

Windows FTP环境搭建常有IIS和Serv-U
这里建议使用Serv-U进行搭建 因为功能多定制性强且优化较好,后面有实测对比
先安装和破解Serv-U
然后进行常规设置
然后别忘了将数据端口限制进行一些限制
比如你TCP隧道或者P2P能转发21;21000-21004这六个端口 那就把端口限制在21000-21004这五个之内
端口一定要至少开三个 否则速度将受到影响

下图是只开放21000一个端口进行内网千兆FTP测试

下图是开放了5个端口的内网千兆FTP测试

速度有明显的差别

科普一下:
21端口只是FTP的命令端口
除此之外还得开好几个数据端口才能使用。

这几种协议最终的对比:

Serv-U千兆内网:

IIS千兆内网

Samba千兆内网:

FTP 433Mbps WIFI内网:
应该是路由器的无线速度卡脖子了

Samba 433Mbps WIFI内网:
应该是路由器的无线速度卡脖子了

最好的环境搭建方式就是Samba + FTP混合搭建方式,同时开通这两种共享,内网用Samba,速度快,对Windows网络磁盘的兼容性好;外网就直接用FTP。

外网远程控制&端口映射

现在常用的远控软件也就只有Teamviewer和向日葵。
说实话这俩体验都不咋样,一个经常连不上,一个卡的要死。

众所周知,Windows的远控端口是3389,并且不限速,那么现在需要一台公网服务器去映射这个端口以做到外网访问。
这里选择了较为轻量型和有Web后台的NPS进行端口映射

NPS环境搭建

这里选择的端口映射平台为 NPS
NPS建议在Centos服务器上面进行安装。个人觉得服务器的话,Linux比Windows好太多。
NPS官方说明文档:
https://gitee.com/mickelfeng/nps
https://github.com/ehang-io/nps

码云上的文档比Github上的详细,我也不知道为什么=_=
但是他的发行版都是在Github上发布的。
NPS安装起来相当简单 按照官方文档安装即可。
然后再去服务器后台开启对应端口即可(开启端口后可能需要重启端口才能打开)

NPC环境的配置

NPS的S是server的意思 C是cilent
在服务器端配置好NPC之后 再到客户端下载对应版本的NPC备用。

如果使用TCP隧道 则需要在下载机上运行NPC
如果使用P2P穿透 则下载机和访问端都需要运行NPC

PS:官方的安卓NPC客户端暂时不支持P2P直接穿透 需要在安卓所在内网中一台可以P2P穿透的电脑上进行穿透后 访问电脑的对应端口即可

TCP隧道

进入NPS后台管理界面 把3389端口映射到你服务器的某个端口即可。
当然 建议把路由器的管理界面也映射进来

然后再到下载机上配置NPC
具体怎么配置建议看
https://gitee.com/mickelfeng/nps

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[common]
server_addr=127.0.0.1:8024
conn_type=tcp
vkey=123
auto_reconnection=true
max_conn=1000
flow_limit=1000
rate_limit=1000
basic_username=11
basic_password=3
web_username=user
web_password=1234
crypt=true
compress=true
#pprof_addr=0.0.0.0:9999

[health_check_test1]
health_check_timeout=1
health_check_max_failed=3
health_check_interval=1
health_http_url=/
health_check_type=http
health_check_target=127.0.0.1:8083,127.0.0.1:8082

[health_check_test2]
health_check_timeout=1
health_check_max_failed=3
health_check_interval=1
health_check_type=tcp
health_check_target=127.0.0.1:8083,127.0.0.1:8082

[tcp]
mode=tcp
target_addr=127.0.0.1:3389
server_port=33890

只用开启TCP隧道就行了 P2P啥的在web端进行设置。
重点是在于最后两行

1
2
target_addr=127.0.0.1:3389
server_port=33890

访问服务器的33890即可进行远程控制。

然后运行NPC即可。
运行NPC的cmd或者Powrshell的方式:

  1. CD到对应目录(或者直接添加NPC环境变量)
  2. Cmd输入npc或者Powershell输入./npc即可

此时 再到NPS后台界面 可以看到设备已上线

TCP界面也有了对应端口的映射

如果想管理路由器的 则在NPS管理界面添加路由器管理地址即可。

不过需要注意的是 请记住对应的Cilent ID 这个ID就是你下载器的Cilent ID

P2P穿透

所有设备都有IPV6的自行跳过此部分
进入NPS后台界面 添加P2P代理 直接添加FTP对应端口。

然后在访问端分别多次运行各个端口红框内的命令行(先切换目录 Cmd用npc Powershell用./npc)
打通所有端口后 访问 ftp://127.0.0.1 即可。
这里需要打开6个端口。
此时 命令行窗口会提示穿透成功与否。

很显然 我没有成功。
虽然能连上 但是走的是TCP隧道。

IPV6直连

为什么要用ipv6? 因为现在的4G网基本上都能连上ipv6了 不信的用手机试试。
然后大部分校园网也可以连接到V6了。所以应用场景还挺广泛。
实在用不了V6的只能考虑 TCP隧道 和 P2P穿透 了。

确定ipv6是否可用

首先百度“地区+运营商+ipv6” 查查该地区该运营商是否提供ipv6

然后把电脑直接插到光猫上 拨号 然后点击
http://www.test-ipv6.com/
测试是否有ipv6
如果有,那么恭喜 你的nas已经有很大的希望可以外网访问了。
如果没有,告辞

光猫插回路由器,电脑连接NAS所在的局域网,再次点击 http://www.test-ipv6.com/
如果仍然有ipv6,那么恭喜你硬件上什么都不用换就可以进行下一步配置
如果光猫直连有v6 连路由器没有 那么你需要考虑是给路由器刷一个支持ipv6的包还是换一个支持ipv6的路由器了。

DDNS

ipv6唯一的局限性就是你NAS端 访问端都必须有ipv6才能访问 其他没有任何限制。
ipv6一共有128个字节 在运营商分配V6地址时 都是直接分配一个V6网段的 前64字节是局域网所有设备共用 后64字节一个设备对应一个地址。
不过 即使有V6 ipv6的地址一般也都是动态变化的。并且ipv6的地址实在是太难记了 所以不如买一个域名来的划算。

购买阿里云域名的教程很多 这里不再赘述。
域名购买平台建议用阿里云,反正咱不建站,也就不需要备案。那还不直接走国内,而且阿里云的DDNS工具比较丰富。

DDNS选用的是
https://github.com/xuchao1213/AliyunDdnsCSharp

对其conf进行配置即可使用。

配置完ipv6 DDNS后 在外网就可以直接访问域名进行传输。
4G ipv6外网直连。。。。。。
(因为安卓没法直接访问FTP 就给电脑开的热点)

此时的4G测速

emmm…先这样吧,过两天再折腾。

最后再安利一个网盘挂载工具
RaiDrive,可以把ftp等协议挂载为本地磁盘。
又可以愉快的玩Galgame了!
但是很显然 我没时间玩…

Video