作为一名长期折腾DIY NAS与家庭内网服务的爱好者,在没有公网IP的条件下,想要随时随地在外网访问NAS后台、文件管理、影音库,内网穿透是绕不开的方案。目前圈内两款开源工具:FRP和NPS,我两款都长期部署使用,本文客观分析二者优缺点,并且附上可以直接复制运行的完整实操步骤,专门针对NAS远程访问场景。
前置条件:一台VPS(有独立公网IP)、一台家用NAS(群晖/威联通/TrueNAS),全程免费开源,无流量限制。
一、FRP 和 NPS 优缺点详细对比
FRP(fatedier/frp)
优点:
- 更新维护稳定,BUG极少,运行很多天不容易断连,带宽损耗很低,传输NAS大文件速度更稳。
- 协议非常全面:TCP、UDP、HTTP、HTTPS、XTCP点对点穿透,支持点对点直连。
- 资源占用极小,VPS 1核小机器就能流畅跑很多条隧道,支持STCP加密访问,安全性更高。
- Docker生态完善,NAS套件中心可以直接安装,部署方式非常多。
缺点:
- 全部依靠配置文件管理,没有可视化网页面板,新增隧道、修改端口都要改配置文件重启程序,多台设备管理很麻烦。
- 原生不带流量统计、在线状态查看,只能依靠第三方面板。
- 多用户分权管理实现起来比较麻烦。
NPS(ehang-io/nps)
优点:
- 自带Web可视化后台,所有穿透隧道在网页上点点鼠标就能新建、开关、修改,不用敲命令,新手上手门槛低。
- 自带客户端在线状态、流量监控、限速功能,可以给不同设备单独限制带宽,适合家里多设备共用一台穿透服务端。
- 内置SOCKS5代理、P2P模式,客户端支持Windows一键安装成系统服务,配置简单。
- 可以创建多个独立客户端账号,每个账号互相隔离,适合分给家人使用NAS。
缺点:
- 项目已经停更很久,新版本系统兼容性一般,长时间运行偶尔会无故掉线,重连机制不如FRP。
- 点对点穿透效果弱于FRP,大部分场景必须走VPS中转,大文件拷贝速度会有损耗。
- 内存占用比FRP更高,隧道开多之后小配置VPS负载会明显上涨。
最终选型建议
• 只给自己用、追求稳定高速、经常在NAS传输大文件:选FRP
• 多设备管理、不想修改配置文件、需要可视化管理:选NPS
二、FRP 部署教程(NAS专用完整版)
架构:VPS运行frps(服务端),NAS通过Docker运行frpc(客户端),映射两个服务:NAS网页管理界面(5000端口)+ SMB文件共享(445端口)
第一步:VPS服务端配置(Ubuntu系统)
- 新建文件夹,下载程序
mkdir frp && cd frp
wget https://github.com/fatedier/frp/releases/download/v0.58.0/frp_0.58.0_linux_amd64.tar.gz
tar -zxvf frp_0.58.0_linux_amd64.tar.gz
cd frp_0.58.0_linux_amd64- 创建frps.toml配置文件
bindPort = 7000
auth.method = "token"
auth.token = "Nas@2026Private123" #自定义密钥,客户端必须保持一致
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "Admin@666"
- 放行VPS防火墙端口:7000(通讯端口)、7500(简易后台),安全组同步放行
- 后台常驻启动命令
nohup ./frps -c frps.toml > frp.log 2>&1 &
第二步:NAS客户端配置(Docker方式,通用所有NAS)
- 套件中心安装Docker,在注册表搜索:snowdreamtech/frpc
- 新建配置文件夹:/docker/frpc,放入frpc.toml
serverAddr = "你的VPS公网IP"
serverPort = 7000
auth.method = "token"
auth.token = "Nas@2026Private123"
NAS网页后台
[[proxies]]
name = "nas-web"
type = "tcp"
localIP = "192.168.1.100" #填写你的NAS内网地址
localPort = 5000
remotePort = 50000
文件共享SMB
[[proxies]]
name = "nas-smb"
type = "tcp"
localIP = "192.168.1.100"
localPort = 445
remotePort = 50001
- Docker挂载:将本地/docker/frpc映射到容器/etc/frp,启动容器,设置开机自启
- 外网访问方式:IP:50000 打开NAS管理页面
第三步:设置开机自启(可选)
如果不用Docker,开启NAS的SSH,写入systemd守护进程,断线自动重连。
三、NPS 部署实操(可视化管理)
第一步:VPS安装NPS服务端
wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz
tar -zxvf linux_amd64_server.tar.gz
cd linux_amd64_server
./nps install
编辑配置文件/etc/nps/conf/nps.conf
bridge_port=8024
web_port=8080
web_password=自定义后台密码
allow_login_ip=0.0.0.0
启动命令:
nps start
安全组放行端口:8024(隧道)、8080(网页后台)
打开地址:http://VPSIP:8080 进入管理面板
- 客户端 → 新增客户端,复制生成的连接命令
- 客户端运行在NAS(或者软路由OpenWrt上),执行npc命令
第二步:NAS客户端部署
两种方案任选其一:
- OpenWrt安装npc客户端(推荐,独立于NAS,NAS关机也不影响服务)
- NAS用Docker部署npc镜像
粘贴面板生成的命令示例:
./npc -server=VPSIP:8024 -vkey=随机密钥 -type=tcp
运行之后网页端会显示在线状态。
第三步:网页端创建NAS穿透隧道
- 新建TCP隧道
• 本地地址:NAS内网IP:5000(管理页面),远程端口自定义
• 再新建一条:NAS内网IP:445(文件共享)
全程不用修改任何配置文件,随时开关隧道,查看实时流量,管理非常方便。
四、NAS部署两个方案的使用心得
- 长期不间断运行存放资料、影音播放,我最终选择FRP,稳定性更强,长时间几个月不用重启。
- 如果家里有多个设备(NAS、监控、网站),统一管理,用NPS会省事很多。
- 重要提醒:不要直接开放445公网裸奔,最好搭配域名+HTTPS加密,或者用XTCP点对点模式,不把端口暴露在公网。
- 客户端建议部署在软路由OpenWrt上面,24小时运行,NAS只负责存储,后期维护最简单。
五、常见问题解决
- 连接成功但是打不开NAS:检查内网IP填写正确,VPS端口全部放行。
- 速度很慢:优先开启FRP的XTCP点对点,海外服务器NPS尽量选择CN2线路VPS。
- 经常掉线:把程序设置为系统服务,开启自动重启脚本。

暂无评论内容