进阶技巧

飞牛NAS搭建内网穿透:frp完整配置

当你拥有了飞牛NAS,却受困于运营商没有公网IP,或是在外出差时无法访问家中影音库,内网穿透就成了刚需。frp(Fast Reverse Proxy)是目前最成熟、最灵活的内网穿透方案之一。本文将带你从零开始,在飞牛NAS上利用Docker部署frp客户端,并配合一台有公网IP的云服务器(VPS)作为服务端,实现稳定的远程访问。

一、准备工作

在开始之前,请确认你具备以下条件:

  1. 一台运行飞牛NAS的设备(建议x86架构,ARM亦可)。
  2. 一台有公网IP的Linux云服务器(本文以Ubuntu 22.04为例,1核1G即可)。
  3. 一个已解析到云服务器的域名(可选,但强烈建议,用于HTTPS和固定端口)。
  4. 基础的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/frpcstilleshan/frpc,选择最新稳定版。

创建容器时,请进行如下设置:

  1. 卷映射:将 /vol1/docker/frpc/frpc.toml 挂载到容器内的 /etc/frp/frpc.toml
  2. 网络:选择 host 模式(推荐),这样frpc可以直接访问NAS的localhost端口。
  3. 环境变量(可选):如果使用非host模式,需要设置 FRP_SERVER_ADDR 等变量,但host模式最省心。
  4. 重启策略:选择 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 即可。

五、常见问题排查

  1. 连接失败:检查云服务器防火墙和NAS网络是否能通 telnet 服务器IP 7000
  2. 日志报错 EOF:通常是token不匹配,或frp版本不一致(客户端和服务端版本需保持大版本一致)。
  3. 速度慢:frp性能取决于云服务器带宽,如果带宽小,建议开启压缩。在客户端配置中添加 transport.compression = true(放在 serverAddr 同级)。
  4. 自动重连:frp客户端自带断线重连机制,无需额外配置。确保Docker容器设置了 restart: always

总结

通过以上步骤,你已经成功在飞牛NAS上搭建了基于frp的内网穿透。这套方案不仅解决了远程访问问题,而且通过Docker容器化,升级和维护都非常方便。以后无论你身在何处,只要云服务器不宕机,就能随时访问家中的NAS数据。建议将frp客户端配置备份到NAS的存储空间,以便日后快速恢复。祝你的飞牛NAS从此无界!

💬 评论区
发表评论

暂无评论,来说两句吧