飞牛NAS搭建内网穿透:frp完整配置
为什么需要内网穿透
飞牛NAS作为家庭或小型办公室的私有云存储中心,通常部署在NAT或防火墙之后。当我们外出时,想要访问NAS上的照片、文档,或者需要远程连接管理界面,就会遇到"外网访问内网"的经典难题。虽然各家路由器都支持端口转发,但面对运营商不提供公网IP、或动态IP频繁变动的情况,端口转发方案往往失效。
frp(Fast Reverse Proxy)是目前最流行的开源内网穿透工具,它通过一台有公网IP的服务器作为中转,将NAS上的服务安全地暴露到公网。本文将带你从零开始,在飞牛NAS上完整搭建frp客户端,并配置好常用的几个内网服务。
准备工作:你需要什么
在开始之前,请确认你具备以下条件:
- 一台拥有公网IP的云服务器(例如阿里云、腾讯云、AWS等),操作系统建议为Ubuntu 20.04或CentOS 7+,并将安全组放行frp所需端口。
- 飞牛NAS一台,系统版本为最新稳定版(fnOS 0.8.x或更高),并已开启SSH功能。
- 一个域名(可选,但强烈推荐),用于访问穿透后的服务,避免记忆IP和端口。
第一步:在云服务器上部署frp服务端
首先,SSH登录你的云服务器。frp的最新版本可以从GitHub Releases页面获取。这里以v0.52.3为例,我们下载Linux amd64版本:
cd /opt
wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz
tar -zxvf frp_0.52.3_linux_amd64.tar.gz
mv frp_0.52.3_linux_amd64 frps
cd frps
编辑服务端配置文件 frps.toml(新版frp使用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 = "dashboard-password"
注意将 your-strong-token-here 替换为一段足够复杂的随机字符串,这将作为客户端连接的凭据。保存后启动服务端:
./frps -c frps.toml &
建议使用systemd管理服务,这里为节省篇幅直接后台运行。验证服务是否启动:
ss -tlnp | grep -E '7000|7500'
看到端口监听即表示成功。
第二步:在飞牛NAS上安装frp客户端
飞牛NAS基于Debian系统,支持直接运行二进制文件。我们通过SSH登录NAS:
ssh admin@你的NAS_IP
创建目录并下载frp客户端(请选择arm64或amd64架构,取决于你的NAS CPU,飞牛大多数机型为x86_64):
sudo mkdir -p /opt/frpc
cd /opt/frpc
sudo wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz
sudo tar -zxvf frp_0.52.3_linux_amd64.tar.gz
sudo mv frp_0.52.3_linux_amd64/frpc /usr/local/bin/
sudo chmod +x /usr/local/bin/frpc
第三步:编写NAS端frpc配置
创建配置文件 /opt/frpc/frpc.toml:
serverAddr = "你的云服务器公网IP"
serverPort = 7000
auth.token = "your-strong-token-here"
# 以下为具体穿透规则
# 穿透飞牛NAS的Web管理界面(默认端口5666)
[[proxies]]
name = "fnos-web"
type = "tcp"
localIP = "127.0.0.1"
localPort = 5666
remotePort = 5666
# 穿透SSH服务(默认端口22)
[[proxies]]
name = "fnos-ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 2222
# 穿透SMB文件共享(可选,但注意安全性)
[[proxies]]
name = "fnos-smb"
type = "tcp"
localIP = "127.0.0.1"
localPort = 445
remotePort = 4445
这里我们映射了三个服务:飞牛Web管理界面(5666端口)、SSH(22端口)以及SMB文件共享(445端口)。远程端口可以自定义,如SSH映射到2222,SMB映射到4445,避免与云服务器上的现有服务冲突。
第四步:启动frpc并设置开机自启
先手动启动测试:
sudo frpc -c /opt/frpc/frpc.toml
如果看到 start proxy success 的日志,说明连接成功。此时你可以在外网浏览器访问 http://云服务器IP:5666 来打开飞牛NAS的管理界面。
为了开机自启,我们创建一个systemd服务:
sudo nano /etc/systemd/system/frpc.service
写入以下内容:
[Unit]
Description=frp client for fnOS
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/frpc -c /opt/frpc/frpc.toml
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
保存后执行:
sudo systemctl daemon-reload
sudo systemctl enable frpc
sudo systemctl start frpc
检查运行状态:
sudo systemctl status frpc
第五步:使用域名与HTTPS(进阶优化)
如果你拥有域名,可以在DNS服务商处添加一条A记录指向云服务器IP。然后修改frps服务端配置,开启vhostHTTPPort,这样可以通过域名直接访问,省去记忆端口的麻烦。
在云服务器 frps.toml 中添加:
vhostHTTPPort = 8080
然后在NAS的 frpc.toml 中,将Web管理界面的代理类型改为 http:
[[proxies]]
name = "fnos-web-http"
type = "http"
localIP = "127.0.0.1"
localPort = 5666
customDomains = ["nas.yourdomain.com"]
重启NAS上的frpc服务,现在访问 http://nas.yourdomain.com:8080 即可。配合Caddy或Nginx反向代理,还可以配置HTTPS证书,实现加密访问。
安全注意事项
内网穿透本质上是将内网服务暴露到公网,安全隐患不容忽视:
- 务必设置强壮的
auth.token,避免使用默认值。 - 不要将SMB(445端口)直接暴露到公网,除非你非常清楚风险,否则建议仅通过VPN访问。
- 使用frp的Dashboard监控连接日志,及时发现异常访问。
- 定期更新frp版本,修复已知漏洞。
- 对于Web界面,建议修改飞牛NAS默认的5666端口,或通过frp的HTTP插件添加Basic Auth认证。
故障排查
如果连接不成功,按以下顺序检查:
- 云服务器安全组是否放行了7000端口(frp通讯端口)以及你映射的远程端口(如5666、2222等)。
- 云服务器上的frps日志是否有报错,使用
tail -f /opt/frps/frps.log查看。 - NAS端的frpc日志是否显示连接成功,使用
journalctl -u frpc -f查看。 - 确认NAS上的本地服务确实在监听对应端口,例如
netstat -tlnp | grep 5666。
总结
通过以上步骤,你已经在飞牛NAS上成功搭建了frp内网穿透服务。现在无论身处何地,只要有网络,就可以通过云服务器中转,安全地访问NAS的管理界面、SSH终端甚至文件共享。frp的配置灵活,除了TCP和HTTP,还支持UDP、STCP等多种代理类型,可以满足远程桌面、游戏联机等更多场景。建议在配置完成后,立即修改所有服务的默认密码,并定期检查frp Dashboard的访问日志,让远程访问既便捷又安心。
暂无评论,来说两句吧