飞牛NAS无公网IP外网访问 - FRP配置总结
核心原理: 由于家中宽带无公网IP,无法直接被外网访问。因此,我们使用一台拥有公网IP的云服务器(FRPS服务端)作为“中转站”或“桥梁”。家中的飞牛NAS(FRPC客户端)主动连接到这个桥梁,外部的访问请求先到达云服务器,再由服务器转发给家中的NAS。
架构图:
你的设备 (在外) <—> 云服务器 (FRPS) <—> 家庭网络中的飞牛NAS (FRPC)
一、 云服务器选购 (FRPS Server)
- 核心要求:
- 公网IP:必须是独立的公网IP地址。
- 开放端口:需要开放一个主要端口(例如
7000)给FRPS服务端监听,以及后续需要转发的服务端口(如80,443,5445等)。 - 配置:FRP本身很轻量,1核1G的配置完全足够。流量和带宽根据你的访问频率和文件传输大小决定。
- 推荐厂商:
- 阿里云 (Alibaba Cloud): 国内用户首选,网络稳定,新用户优惠多。
- 腾讯云 (Tencent Cloud): 与阿里云类似,性价比高,活动频繁。
- 百度云 (BCC): 你正在使用,同样满足需求。
- 海外厂商 (AWS, GCP, Azure, Vultr, Linode): 如果你注重数据隐私或NAS服务主要面向海外用户,可以考虑。
二、 服务端 (FRPS) 配置 (在云服务器上)
-
安装FRP:
# 创建并进入frp目录 mkdir -p /opt/frp && cd /opt/frp # 从GitHub下载最新版本的frp(请替换为最新版本号,例如 frp_0.54.0_linux_amd64.tar.gz) wget https://github.com/fatedier/frp/releases/download/v0.54.0/frp_0.54.0_linux_amd64.tar.gz # 解压 tar -zxvf frp_0.54.0_linux_amd64.tar.gz # 进入解压后的目录(目录名会随版本变化) cd frp_0.54.0_linux_amd64 # 将frps和frps.toml复制到之前创建的目录 cp frps frps.toml /opt/frp/ -
编辑配置文件
frps.toml:# /opt/frp/frps.toml bindPort = 7000 # FRP服务端监听的端口,用于与客户端建立连接 # 认证配置(非常重要,防止他人滥用你的服务器) auth.method = "token" auth.token = "your_strong_password_here" # 设置一个非常复杂的密码 # 可选:Web管理界面(方便查看连接状态) webServer.addr = "0.0.0.0" webServer.port = 7500 webServer.user = "admin" webServer.password = "another_strong_password"bindPort:需要在云服务器的防火墙/安全组中放行此端口(如7000)。webServer.port:如果启用,也需放行此端口(如7500)。
-
设置系统服务 (Systemd) 以便开机自启:
-
创建服务文件:
vim /etc/systemd/system/frps.service -
写入以下内容:
[Unit] Description=Frp Server Service After=network.target [Service] Type=simple User=root Restart=on-failure RestartSec=5s WorkingDirectory=/opt/frp ExecStart=/opt/frp/frps -c /opt/frp/frps.toml [Install] WantedBy=multi-user.target -
启用并启动服务:
systemctl daemon-reload systemctl enable frps systemctl start frps systemctl status frps # 检查状态是否运行正常
-
三、 客户端 (FRPC) 配置 (在飞牛NAS上)
-
SSH登录飞牛NAS:
- 在飞牛NAS桌面端开启“允许SSH登录”。
- 使用SSH工具(如Termius, PuTTY, FinalShell)通过管理员账号和密码登录。
-
使用Docker运行FRPC:
-
创建一个目录存放配置文件:
mkdir -p /opt/frnats/frpc -
创建并编辑配置文件:
vim /opt/frnats/frpc/frpc.toml -
配置文件内容
frpc.toml:# /opt/frnats/frpc/frpc.toml serverAddr = "你的云服务器公网IP" # 例如 "123.123.123.123" serverPort = 7000 # 必须与frps的bindPort一致 auth.method = "token" auth.token = "your_strong_password_here" # 必须与frps中设置的token一致 [[proxies]] name = "fn-os-web" type = "tcp" localIP = "127.0.0.1" # 本地NAS的IP,在容器内所以是127.0.0.1 localPort = 5666 # 飞牛NAS Web界面的本地端口 remotePort = 5666 # 映射到云服务器上的端口 # 你可以继续添加其他服务,例如: # [[proxies]] # name = "fn-ssh" # type = "tcp" # localIP = "127.0.0.1" # localPort = 22 # remotePort = 7022 # 注意:云服务器的22端口通常已被占用,建议换为其他高端口 -
重要:在云服务器的防火墙/安全组中,放行你在
remotePort中配置的所有端口(如80,5445)。
-
-
创建并启动Docker容器:
docker run -d \ --name frpc \ --restart unless-stopped \ -v /opt/frnats/frpc/frpc.toml:/etc/frp/frpc.toml \ snowdreamtech/frpc:latest--restart unless-stopped:保证NAS重启后容器自动运行。-v ...:将宿主机上的配置文件挂载到容器内。
-
查看日志,确认连接成功:
docker logs frpc- 如果看到
"login to server success"或类似字样,说明连接成功。
- 如果看到
四、 最终访问方式
完成以上所有配置后,你在外网的访问方式将发生根本变化:
- 之前 (无法访问):
http://你家宽带的IP:5666 - 现在 (可以访问):
http://你的云服务器公网IP:5666
简单来说,以后在任何地方,你只需要访问你的云服务器IP地址,FRP就会自动把请求转发到你家里的飞牛NAS上。
五、 故障排查 Checklist
- 全部检查:云服务器和家庭NAS的时间是否准确?时间差过大会导致Token认证失败。
- 服务端 (FRPS):
systemctl status frps状态是active (running)吗?- 云服务器的安全组/防火墙是否放行了
7000,80,5445等所有用到的端口?
- 客户端 (FRPC):
docker logs frpc日志是否有错误?最常见的错误是 Token错误 或 连接服务器失败(检查IP和端口)。
- 网络问题:尝试在另一台网络环境下(如手机热点)访问,排除当前网络环境的限制。
希望这份总结能帮到你!祝你使用愉快!