DIY NAS系列04—网络服务

DIY NAS 搭建过程

本篇将说明实现对公网的服务连接三种方式

本文其他地址:自建NAS系列04——网络服务

网络服务

  • 内网穿透
  • 花生壳
  • 公网服务器与frp

内网穿透

内网穿透就是将自己内网中的服务映射到公网ip,达到公网可访问的目的。若家用网络已经是公网ip,则可以直接通过路由器设置端口映射,若被运营商NAT,看网友的通用办法就是给运营商打电话索要公网ip,但这么做不是很保险,说不定哪天又被换回了NAT,所以只能曲线救国,可以使用免费的花生壳,也可以自己租一个公网ip实现。

花生壳

花生壳提供专门的内网穿透服务,有免费版和付费版,最开始图省钱体验了一下免费版,效果比较差。付费版感觉年费太高,性能也没提升太多。最后决定还是不用花生壳了,但接入流程还是大概讲一下。
首先有两种接入方式,一种是在路由器配置花生壳,将内网设备的某一端口映射到路由的端口,再将路由端口映射到花生壳,这样做的好处是可以把家里想穿透的设备配置一个花生壳搞定。路由都有一个端口映射功能,在里面加入需要映射的设备内网ip和想要映射的服务端口,如192.168.1.100、端口445(SMB服务的默认端口号),有的路由也默认安装了花生壳,填上在花生壳注册的账号密码登录服务,注意要在花生壳官网先开通内网穿透服务,并按教程和自己的需求配置好。
第二种是直接在需要穿透的设备上安装花生壳,首先从花生壳官网下载客户端依据教程Windows/Linux配置即可。

公网服务器与frp

如果愿意掏点钱还是更推荐自己搞一天服务器,性价比高。
服务器我试了Vultr家的VPS和阿里云的ECS云服务器
frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。
Vultr的VPS价格便宜,最低可选$3.5/月的服务,如果只作为内网穿透使用性能足够,因为都是国外节点,所以顺便还可以搭个梯子,我搭了ss上油管很流畅。但可能是国外节点的原因,穿透后文件传输速度比较低,如果有较大的文件传输需求建议还是阿里云选择一款国内节点带宽稍高的。学生党注意现在阿里云对学生有优惠套餐,100多一年,性能个人娱乐完全足够。 有了公网服务器就要开始搭建内网穿透服务了,先在客户端和服务端下载frp程序包,根据平台选择版本,我的Ubuntu对应frp_0.22.0_linux_arm64.tar.gz,在终端运行

#下载程序包
wget https://github.com/fatedier/frp/releases/download/v0.22.0/frp_0.22.0_linux_arm64.tar.gz
#解压程序包
tar -zxvf  frp_0.22.0_linux_arm64.tar.gz

服务端,即公网服务器使用包内的 frps 及 frps.ini ;客户端,即需要穿透到公网的NAS系统使用 frpc 及 frpc.ini 。frps和frpc为执行文件,frps.ini和frpc.ini为配置文件,可参考教程
首先配置服务端,连接服务器终端,进入frp所在目录

sudo nano frps.ini

添加

[common]
bind_port = 7000

ctrl + o保存,ctrl + x 退出
启动服务

./frps -c ./frps.ini

或后台运行

nohup ./frps -c ./frps.ini &

服务端基本配置已完成
换客户端,进入frp目录

sudo nano frpc.ini

添加一下内容,注意将x.x.x.x换成自己的公网服务器ip

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22            #此端口为本地需要被映射端口
remote_port = 6000    #该端口为映射到服务器端口

该配置是将自己的ssh的22端口映射到公网6000端口,如果需要前一篇文章安装的本地服务穿透到公网,则参考以下按需要添加,remote_port可根据个人喜好修改,但一定不能被服务器已有的服务占用,否则无法成功穿透。
ariagn穿透后想正常使用需要将aria2也穿透,并重新配置ariagn的ip地址修改为穿透后的地址和端口。

[smb]
type = tcp
local_ip = 127.0.0.1
local_port = 445
remote_port = 44502

#[plex]
#type = tcp
#local_ip = 127.0.0.1
#local_port = 32400
#remote_port = 32402

[emby]
type = tcp
local_ip = 127.0.0.1
local_port = 8096
remote_port = 8098

[ariagn]
type = tcp
local_ip = 127.0.0.1
local_ip = 127.0.0.1
local_port = 8090
remote_port = 8092

[aria2]
type = tcp
local_ip = 127.0.0.1
local_port = 6800
remote_port = 6802

[cockpit]
type = tcp
local_ip = 127.0.0.1
local_port = 9090
remote_port = 9092

同样的后台启动

nohup ./frpc -c ./frpc.ini &

阿里云需要在控制台安全组内打开端口,否则服务端端口无法正常使用。