群晖FRP内网穿透教程:公网随时访问你的NAS

1918 字
10 分钟
群晖FRP内网穿透教程:公网随时访问你的NAS
  • **2025.11.12 **更新 增加docker compose安装

前言:为什么需要FRP穿透?#

很多朋友入手NAS后都会遇到一个问题:家里没有公网IPv4,NAS只能在WiFi下访问,出门想传个文件、看个相册都没辙。

FRP(Fast Reverse Proxy)就是解决这个问题的利器——它能通过一台有公网IP的云服务器,把内网的服务“映射”到公网上,能让你随时访问家里内网的NAS。

本文提供Docker源码运行两种配置方案,跟着做就能搞定公网访问。

1、前期准备#

先把“弹药”备齐,避免操作到一半卡壳。新手务必逐项核对:

  • NAS:确保已开启SSH(控制面板→终端机和SNMP→勾选“启动SSH功能”)。
  • 云服务器:1核2G配置足够(学生机性价比高),必须有公网IPv4,带宽建议1M以上(决定访问速度上限),系统选CentOS或Ubuntu。
  • 工具:SSH客户端(Xshell、FinalShell,免费可用),文件传输工具(WinSCP,传配置文件用)。

2、核心原理:FRP怎么工作#

  • 服务端(云服务器):相当于“桥头堡”,在公网上监听请求,绑定固定端口(如7000)。
  • 客户端(NAS):相当于“家里的哨兵”,主动连接云服务器的服务端,保持长连接。
  • 数据流向:公网访问云服务器FRP→服务端转发给NAS客户端→群晖返回数据,完成穿透。

3、服务端配置:云服务器部署FRP服务#

先部署服务端FRP,以CentOS 7为例,全程命令行操作,复制粘贴即可。

步骤1:下载并解压FRP包#

用SSH工具连接云服务器,执行以下命令(64位系统通用):

Terminal window
# 下载FRP压缩包(0.33.0版本,若下新版本替换链接即可)
wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz
# 解压到当前目录
tar -zxvf frp_0.33.0_linux_amd64.tar.gz
# 进入解压后的文件夹
cd frp_0.33.0_linux_amd64

如果wget下载失败(网络问题),直接在本地浏览器打开链接下载,再用WinSCP上传到云服务器,然后执行解压命令。

步骤2:编辑服务端配置文件frps.ini#

FRP服务端核心配置文件,用vi命令编辑:

Terminal window
vi frps.ini

i进入编辑模式,粘贴以下内容,关键参数已标注修改说明:

[common]
bind_addr = 0.0.0.0 # 允许所有IP连接,固定填这个
bind_port = 7000 # 服务端与客户端通信的端口,需开放(如7000)
privilege_token = 2fd165jtyjsd0g5t4hdga16 # 安全密钥,自己编个复杂的(字母+数字),客户端要和这个一致
vhost_http_port = 5000 # 转发HTTP请求的端口(如5000)
vhost_https_port = 6000 # 转发HTTPS请求的端口(如6000)
dashboard_port = 7500 # FRP控制台端口,可查看连接状态
dashboard_user = admin # 控制台用户名
dashboard_pwd = admin123 # 控制台密码

编辑完成后,按Esc,输入:wq保存退出。

步骤3:开放端口+启动服务端#

这步是关键!云服务器的安全组和防火墙都要开放端口(7000、5000、6000、7500):

Terminal window
# 1. 防火墙开放端口(CentOS用firewalld,Ubuntu用ufw,根据系统选对应命令)
# CentOS系统执行:
sudo firewall-cmd --zone=public --add-port=7000/tcp --permanent
sudo firewall-cmd --zone=public --add-port=5000/tcp --permanent
sudo firewall-cmd --zone=public --add-port=6000/tcp --permanent
sudo firewall-cmd --zone=public --add-port=7500/tcp --permanent
sudo firewall-cmd --reload
# Ubuntu系统执行:
sudo ufw allow 7000/tcp
sudo ufw allow 5000/tcp
sudo ufw allow 6000/tcp
sudo ufw allow 7500/tcp
sudo ufw reload

然后用nohup命令让FRP在后台运行(关闭SSH窗口也不停止):

Terminal window
nohup ./frps -c ./frps.ini &

验证是否启动成功:打开浏览器访问云服务器IP:7500,输入控制台用户名密码,能看到FRP面板就说明服务端没问题了。

(直接执行./frps -c ./frps.ini会显示启动日志,如下图,用nohup启动不会显示日志)

img
img

4、客户端配置:NAS连接服务端#

NAS作为客户端,有两种配置方式:Docker和源码部署,选一种就行。

方案A:Docker配置#

群晖Docker套件操作简单,不用记命令,适合刚接触NAS的用户。

步骤1:下载FRP镜像#

  1. 打开群晖Docker套件,切换到「注册表」。
  2. 搜索栏输入chenhw,找到chenhw/frp镜像,双击默认下载(标签选latest)。

步骤2:准备客户端配置文件frpc.ini#

先在群晖里建个存放FRP配置的文件夹,方便后续修改:

  1. 打开File Station,进入「docker」文件夹,新建子文件夹frp
  2. 在本地电脑用记事本新建frpc.ini文件,粘贴以下内容(替换成你的信息):
[common]
server_addr = nas.yourname.com # 你的云服务器域名或公网IP
server_port = 7000 # 和服务端bind_port一致(7000)
auth_token = 2fd165jtyjsd0g5t4hdga16 # 和服务端privilege_token完全一致
# 转发群晖DSM网页服务(5000端口是群晖默认HTTP端口)
[synology-dsm]
type = http
local_ip = 192.168.1.100 # 群晖的内网IP(在群晖控制面板→网络里看)
local_port = 5000
remote_port = 5000 # 公网访问的端口(自定义,如5000,需在服务端开放)
# 转发群晖SSH(22端口,可选,方便公网SSH管理群晖)
[synology-ssh]
type = tcp
local_ip = 192.168.1.100
local_port = 22
remote_port = 2222 # 公网访问的端口(自定义,如2222,需在服务端开放)

将编辑好的frpc.ini上传到群晖的docker/frp文件夹。

步骤3:创建FRP容器并配置#

  1. Docker套件切换到「映像」,双击chenhw/frp镜像,进入容器创建向导。
  2. 点击「高级设置」,重点配置以下3项(其他保持默认):
  • 基本设置:勾选「启用自动重新启动」(群晖重启后FRP自动启动)。
  • :点击「添加文件」,左侧选群晖的docker/frp/frpc.ini,右侧填/frp/frpc.ini(容器内的配置文件路径,固定填这个)。
  • 环境:点击「添加」,变量名填FRP_ROLE,变量值填client(告诉容器这是客户端模式)。

配置完成后点击「下一步」→「创建」,容器启动后,在Docker「容器」列表能看到状态为「运行中」。

方案B:Docker compose配置#

~/docker/frp目录下创建配置文件:

Terminal window
vim docker-compose.yml

以下配置使用 DaoCloud 镜像加速,避免国内拉取镜像缓慢,关键参数已标注说明:

version: '3.3'
services:
frpc:
image: docker.leitool.top/snowdreamtech/frpc:latest
container_name: frpc
restart: unless-stopped # 自动重启(除非手动停止)
volumes:
- ./frpc.toml:/etc/frp/frpc.toml # 挂载配置文件
network_mode: host # 使用主机网络模式(可选,根据需求调整)

配置文件frpc.ini与方案A是一样的,上传到群晖的docker/frp文件夹。

保存配置文件后,执行以下命令启动容器:

Terminal window
# 后台启动服务
docker-compose up -d

方案C:执行文件部署#

如果习惯命令行操作,也可以直接下载执行文件进行部署。

步骤1:SSH连接群晖并下载FRP#

Terminal window
# 下载FRP包(和服务端版本一致,0.33.0)
wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz
# 解压
tar -zxvf frp_0.33.0_linux_amd64.tar.gz
# 进入文件夹
cd frp_0.33.0_linux_amd64

步骤2:编辑frpc.ini(和Docker方案的配置一致)#

Terminal window
vi frpc.ini

粘贴方案A中的frpc.ini内容,保存退出。

步骤3:启动客户端并设置开机自启#

先测试启动是否正常:

Terminal window
./frpc -c ./frpc.ini

如果显示「start proxy success」,说明连接成功。按Ctrl+C停止,再用nohup后台启动:

Terminal window
nohup ./frpc -c ./frpc.ini &

为了让群晖重启后FRP自动运行,创建自启脚本:

Terminal window
# 1. 创建启动脚本
vi /usr/syno/etc.defaults/rc.sysv/frpc.sh
# 2. 粘贴以下内容(路径替换成你的FRP文件夹路径)
#!/bin/sh
cd /root/frp_0.33.0_linux_amd64 # FRP解压后的路径
nohup ./frpc -c ./frpc.ini &
# 3. 给脚本加执行权限
chmod +x /usr/syno/etc.defaults/rc.sysv/frpc.sh
# 4. 加入系统启动项
echo "/usr/syno/etc.defaults/rc.sysv/frpc.sh" >> /etc/rc

重启群晖后,执行ps aux | grep frpc,能看到frpc进程就说明自启成功。

参考资料#

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
群晖FRP内网穿透教程:公网随时访问你的NAS
https://blog.leihub.cn/archives/61/
作者
阿雷
发布于
2021-06-21
许可协议
CC BY-NC-SA 4.0
相关文章智能推荐
1
云服务器+FRP+Nginx,无需添加端口,直接使用域名访问家里的任何设备
内网穿透 & 组网之前写过ipv6+ddns访问nas服务的文章,这种方法有许多不足 一是必须在支持ipv6的环境下访问,许多公共场所的wifi一般就不支持ipv6,无法访问网站,像腾讯轻量云服务器也不支持访问纯ipv6服务,好像要云服务器才支持。这样轻量云
2
群晖照片异地备份到 Unraid + Immich 相册搭建详细教程:rsync 同步与踩坑全记录
NAS & 云服务搭建我家里同时有白群晖和 unRAID 两台 NAS ,准备把群晖里攒了几年的照片进行异地备份,单盘 NAS 一旦坏了,照片可就全没了。 我自己折腾了两天,踩了一堆坑,终于跑通了一套「unRAID 定时拉取群晖 + Immich 相册」的方案。
3
西上东下:梵净山雾中徒步记
城市短途漫游朋友嚷嚷了一年的梵净山,最近终于找到了爬山窗口,做足了攻略的我们,直接选择来一波特种兵爬梵净山。 一、周五晚上10点,株洲站出发 我们几个都是从株洲出发的,火车是晚上的卧铺车,10 点出发,第二天凌晨 5:40 到铜仁。一张硬卧 138 块
4
NotionNext 个人博客搭建教程:腾讯云 EdgeOne 部署
博客搭建 & 运维前言 目前主流的博客搭建方案可大致分为两类,且各有局限:一类是以 WordPress 为代表的动态博客系统,依赖独立服务器运行,运维与硬件成本较高;另一类是以 Hexo 为代表的静态博客框架,采用本地 Markdown 编写,无实时预览能力
5
EasyTier 私有虚拟网络搭建全流程
内网穿透 & 组网EasyTier 私有虚拟网络搭建全流程 EasyTier简介 在国内复杂的网络环境中,内网穿透和异地组网始终是个棘手问题。之前折腾过 Zerotier、Tailscale 等工具的朋友可能深有体会,网络通畅时,P2P 直连体验流畅。可一旦
随机文章随机推荐

评论区

Profile Image of the Author
阿雷
一个小趴菜
公告
本站已从 WordPress 迁移到 Astro,访问更快、更清爽。文章链接保持原样(/archives/文章ID/),评论数据正在陆续恢复中。
分类
标签
最新动态
站点统计
文章
76
分类
15
标签
99
总字数
318,421
运行时长
0
最后活动
0 天前
站点信息
构建平台
EdgeOne Pages
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录