飞牛NAS搭建内网穿透:frp完整配置
当你拥有了飞牛NAS,却受困于运营商没有公网IP,或是在外出差时无法访问家中影音库,内网穿透就成了刚需。frp(Fast Reverse Proxy)是目前最成熟、最灵活的内网穿透方案之一。本文将带你从零开始,在飞牛NAS上利用Docker部署frp客户端,并配合一台有公网IP的云服务器(VPS)作为服务端,实现稳定的远程访问。
一、准备工作
在开始之前,请确认你具备以下条件:
- 一台运行飞牛NAS的设备(建议x86架构,ARM亦可)。
- 一台有公网IP的Linux云服务器(本文以Ubuntu 22.04为例,1核1G即可)。
- 一个已解析到云服务器的域名(可选,但强烈建议,用于HTTPS和固定端口)。
- 基础的SSH和Docker操作能力。
二、服务端配置(云服务器)
frp的架构是“客户端主动连接服务端”,因此服务端必须稳定且具有公网IP。
2.1 下载并解压frp
登录你的云服务器,执行以下命令(以frp 0.61.0为例,请前往GitHub Releases获取最新版本号):
cd /opt
wget https://github.com/fatedier/frp/releases/download/v0.61.0/frp_0.61.0_linux_amd64.tar.gz
tar -zxvf frp_0.61.0_linux_amd64.tar.gz
mv frp_0.61.0_linux_amd64 frps
2.2 编写服务端配置文件
编辑 /opt/frps/frps.toml(新版本使用TOML格式,旧版为ini):
bindPort = 7000
auth.method = "token"
auth.token = "your_strong_token_here"
# 开启Dashboard监控(可选)
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "your_dashboard_password"
注意:your_strong_token_here 请替换为至少16位的随机字符串,这是客户端连接的凭证。
2.3 启动服务端
cd /opt/frps
./frps -c frps.toml
为了后台运行,建议使用systemd服务。创建 /etc/systemd/system/frps.service:
[Unit]
Description=frp Server
After=network.target
[Service]
Type=simple
ExecStart=/opt/frps/frps -c /opt/frps/frps.toml
Restart=on-failure
[Install]
WantedBy=multi-user.target
然后执行:
systemctl daemon-reload
systemctl enable frps
systemctl start frps
systemctl status frps
记得在云服务器安全组中放行TCP端口:7000(连接端口)、7500(Dashboard,可不放行)、以及你后续要映射的远程访问端口(如3389、8080等)。
三、飞牛NAS客户端配置
飞牛NAS自带Docker环境,我们直接使用frp官方客户端镜像。
3.1 准备配置文件
在飞牛NAS的文件管理器中,创建一个目录,例如 /vol1/docker/frpc。在其中新建 frpc.toml 文件,内容如下:
serverAddr = "你的云服务器公网IP"
serverPort = 7000
auth.method = "token"
auth.token = "your_strong_token_here"
# 定义穿透规则
[[proxies]]
name = "fnos_web"
type = "tcp"
localIP = "127.0.0.1"
localPort = 5666
remotePort = 8080
[[proxies]]
name = "fnos_ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 60022
说明:飞牛NAS的Web管理界面默认端口是5666,SSH端口是22。上面的配置将NAS的Web界面映射到云服务器的8080端口,将SSH映射到60022端口。你可以根据需求增加更多 [[proxies]] 段落,比如映射SMB文件共享(注意SMB协议不适合走frp,建议使用WebDAV或S3)。
3.2 使用Docker运行frpc
在飞牛NAS的Docker管理界面中,选择“镜像” -> “拉取镜像”,搜索 snowdreamtech/frpc 或 stilleshan/frpc,选择最新稳定版。
创建容器时,请进行如下设置:
- 卷映射:将
/vol1/docker/frpc/frpc.toml挂载到容器内的/etc/frp/frpc.toml。 - 网络:选择
host模式(推荐),这样frpc可以直接访问NAS的localhost端口。 - 环境变量(可选):如果使用非host模式,需要设置
FRP_SERVER_ADDR等变量,但host模式最省心。 - 重启策略:选择
always。
启动容器后,查看日志,如果显示 start proxy success 则说明连接成功。
四、进阶:使用域名和HTTPS
如果你拥有域名,可以配置子域名解析到云服务器,然后让frp服务端自动分配端口,并配合Caddy或Nginx实现HTTPS。
4.1 修改服务端配置支持虚拟端口
在 frps.toml 中添加:
vhostHTTPPort = 8081
vhostHTTPSPort = 8443
subDomainHost = "frp.yourdomain.com"
然后在DNS解析中,将 *.frp.yourdomain.com 泛解析到服务器IP。
4.2 客户端配置子域名模式
修改 frpc.toml 中的代理类型:
[[proxies]]
name = "fnos_web"
type = "http"
localIP = "127.0.0.1"
localPort = 5666
subdomain = "nas" # 访问地址为 nas.frp.yourdomain.com
这样你就可以通过 https://nas.frp.yourdomain.com 访问NAS了。HTTPS证书由服务端的Caddy自动申请,你只需在云服务器上安装Caddy并反向代理到 127.0.0.1:8443 即可。
五、常见问题排查
- 连接失败:检查云服务器防火墙和NAS网络是否能通
telnet 服务器IP 7000。 - 日志报错
EOF:通常是token不匹配,或frp版本不一致(客户端和服务端版本需保持大版本一致)。 - 速度慢:frp性能取决于云服务器带宽,如果带宽小,建议开启压缩。在客户端配置中添加
transport.compression = true(放在serverAddr同级)。 - 自动重连:frp客户端自带断线重连机制,无需额外配置。确保Docker容器设置了
restart: always。
总结
通过以上步骤,你已经成功在飞牛NAS上搭建了基于frp的内网穿透。这套方案不仅解决了远程访问问题,而且通过Docker容器化,升级和维护都非常方便。以后无论你身在何处,只要云服务器不宕机,就能随时访问家中的NAS数据。建议将frp客户端配置备份到NAS的存储空间,以便日后快速恢复。祝你的飞牛NAS从此无界!
暂无评论,来说两句吧