更新:如果你没有远程使用飞牛TV版的需求,只是为了方便使用飞牛安装的迅雷、alist、1panel等应用,直接使用自带的浏览器就能满足需求。也不用额外设置,直接使用即可,详情可参考 飞牛NAS应用中心之浏览器 打造随时随地的虚拟浏览环境
在现代生活中,网络存储设备(NAS)逐渐成为数据存储与分享的重要工具。飞牛 NAS(FeiNiu NAS)作为其中之一,可以为家庭和小型办公环境提供高效的存储解决方案。然而,由于网络限制,想要远程高速访问 NAS 存储数据,尤其在内网环境下,通常需要配置内网穿透。本文将介绍如何通过搭建 FRP 的 P2P 中转服务器,以便实现高速远程访问飞牛 NAS 的需求。
什么是 FRP 及其 P2P 模式
FRP(Fast Reverse Proxy)是一个支持内网穿透的反向代理工具,支持多种协议(如 TCP、HTTP 等),能够在客户端和服务器之间建立直连。FRP 的 P2P 模式(STCP模式)则进一步通过打洞技术帮助两个内网设备之间建立直连,以解决不同内网环境下的远程访问问题,提升数据传输的速度和稳定性。
FRP 的工作流程
- 信令服务器:FRP 服务器(frps)作为信令服务器,不参与数据传输,只帮助客户端之间进行连接建立。
- 打洞建立 P2P 连接:两个客户端通过 FRP 服务器交换信息,尝试在内网之间打洞,建立 P2P 连接。
- 传输过程优化:数据会优先通过 P2P 连接传输,如果打洞失败则通过 FRP 中转服务器传输。
搭建 FRP P2P 中转服务器
要实现远程高速访问飞牛 NAS,首先需要准备一台能够公开访问的服务器,建议使用 CentOS 系统。下面是搭建步骤:
准备环境:一台华为云的轻量服务服务器,安装 CentOS 7/8系统。
为什么使用华为云,因为华为云是目前最便宜的给独立IP的云服务器.一年20元左右的价格,当然这个价格是针对新用户的.不过你能看到这文章,极大可能是没注册过华为云的账号。注册过账号也没关系,淘宝卖家会给你搞定的。如果你有其他的腾讯云、阿里云、天翼云、京东云、百度云等的云服务器也可以。下面以华为云为例编写教程:
1)淘宝搜华为云,然后选个店铺购买,按卖家要求提供资料等待开通华为云服务器,让卖家开通的时候服务器系统选择centos7或者8都可以。
2)开通后登陆华为云控制台,https://console.huaweicloud.com/ ,进入云服务器的控制台。进入虚拟私有云的控制台。
3)点击配置规则
4)协议端口直接输入7300-7400,这里为了省事,实际上用不了这么多端口,可以自定义设置为其他端口,然后保存。
5)然后返回总控制台,进入云服务的控制台。
6)点击框选区域进入服务器详情页面。
7)确认下安全组是否是刚才配置的那个安全组,这步很重要。
8)点击远程登录,选择推荐的使用CloudShell登录即可。
9)使用密码进行连接 ,卖家给开通服务器后会告诉你密码。然后连接登陆服务器。
wget https://gitee.com/mvscode/frps-onekey/raw/master/install-frps.sh -O ./install-frps.sh
chmod 700 ./install-frps.sh
./install-frps.sh install
复制上面的代码,在光标的位置右键点粘贴。然后按回车。
安装过程不想截图太多,参考下面的文字教程。
1、选择源,1是Aliyun,2是Github。我们选1
2、选择服务端口。默认是5443。这个端口的作用是在客户端连接服务端时是通过这个端口连接的。修改为7300-7400之间的任意端口,这里在前面的安全组配置那里已经添加过了,如有修改,请记住,不要填错。
3、设置http连接的端口。默认80,直接回车
4、设置https连接的端口。默认443,直接回车
5、设置面板的端口。设置为7300-7400之间的任意端口,不要和第2步的一样即可。
6、设置登录面板的用户名和密码,根据个人喜好设置
7、设置token。客户端需要填写的,你也可以理解为密码,设置一段字符串即可,需要记住。 重要 后面要用到!!!
8、设置域名,如果有就填写,没有就回车。
后面其他的配置就默认按回车就好
9、启动服务
最后,在浏览器中输入 http://ip:+第五步的端口。
如果成功就能看到如下的界面
至此,frps服务端配置完毕。 虽然写了这么多,如果你还是搞不定,直接找淘宝卖家让给你配置下,一两分钟就搞定。
安装frpc客户端
通过docker在飞牛部署FRPC客户端。
本站飞牛NAS的所有docker容器部署教程都使用的docker-compose.yml,每个项目部署前面都是同样的创建文件夹等流程,这里不再重复写,可以参考 https://www.dadizhu.cn/fnnas/2024/11/feiniunasbushuaipanwangpanziyuansousuodejiaocheng/
选个存储空间,创建一个frpc的文件夹,里面创建两个空白文件,文件名如上图所示。
两个配置文件的代码如下:
docker-compose.yml,代码不需要做任何修改。如果你安装的服务端版本不是0.60的话,修改这里的数字和服务端一致。服务端版本号在浏览器中输入 http://ip:+第五步的端口。能看到一个version就是版本号。
services:
frpc:
image: snowdreamtech/frpc:0.60-debian # 指定 frpc 版本 和服务端保持一致,这里用的是0.60
container_name: frpc
restart: unless-stopped
network_mode: "host" # 使用宿主机网络模式
volumes:
- ./frpc.toml:/frpc.toml:ro # 映射配置文件
command: -c /frpc.toml # 仅传递参数
frpc.toml的代码如下:需要修改server_addr为你的华为云ip,token需要修改你安装服务端时候设置的token。后面的各个服务的配置根据你飞牛的具体情况配置,参考着写就可以了。
# frpc.toml - FRP Client Configuration File
# 使用 toml 格式配置 frpc,适用于 frp 版本 0.60,需要和服务端版本保持一致
[common]
# FRP 服务器的公网 IP 地址
server_addr = "1.1.1.1"
# FRP 服务器的监听端口
server_port = 7301
# 认证令牌,必须与 frps 服务器上的配置一致
token = "1111113142111111"
# 共享密钥,必须与 frps 服务器上的配置一致
# 确保此密钥足够复杂,避免被猜测
# 注意:在 [common] 部分不需要定义 sk,因为 sk 是在每个服务中单独定义的
# 配置 Web 服务端口
[feiniu_nas_web]
# 服务类型,stcp 表示安全 TCP 隧道
type = "stcp"
# 共享密钥,必须与 frps 服务器上的配置一致
sk = "feiniu123"
# 本地服务的 IP 地址,通常为宿主机的 IP
local_ip = "127.0.0.1"
# 本地服务的端口,宿主机上实际运行的服务端口
local_port = 8080
# 配置 SMB 服务端口
[feiniu_nas_smb]
type = "stcp"
sk = "feiniu123"
local_ip = "127.0.0.1"
local_port = 445
# 配置 FTP 服务端口
[feiniu_nas_ftp]
type = "stcp"
sk = "feiniu123"
local_ip = "127.0.0.1"
local_port = 21
# 配置其他服务端口
[feiniu_nas_other]
type = "stcp"
sk = "feiniu123"
local_ip = "127.0.0.1"
local_port = 9090
# 说明:
# - 每个 [section] 定义一个服务,服务名称必须唯一。
# - type = "stcp" 表示使用安全 TCP 隧道。
# - local_port 指向飞牛的各种应用的实际端口。
保存好两个配置文件后使用飞牛docker的compose创建项目即可。需要开通更多的端口映射内网穿透,直接修改配置文件,然后重启frpc的docker容器即可。
其他你需要远程连接飞牛的设备,使用下面的客户端配置。支持手机、电脑。具体的frpc客户端下载和使用教程可以自行搜索。
[common]
server_addr = 华为云的公网IP
server_port = 和上面的一致
# 下面每一块对应飞牛的一个端口的服务,可修改端口号。
[feiniu_nas_web]
type = stcp
role = visitor
server_name = feiniu_nas_web
sk = feiniu123
bind_addr = 127.0.0.1
bind_port = 8080
[feiniu_nas_smb]
type = stcp
role = visitor
server_name = feiniu_nas_smb
sk = feiniu123
bind_addr = 127.0.0.1
bind_port = 445
[feiniu_nas_ftp]
type = stcp
role = visitor
server_name = feiniu_nas_ftp
sk = feiniu123
bind_addr = 127.0.0.1
bind_port = 21
[feiniu_nas_other]
type = stcp
role = visitor
server_name = feiniu_nas_other
sk = feiniu123
bind_addr = 127.0.0.1
bind_port = 9090