群晖NAS通过FRP实现内网穿透:手把手教你从零搭建公网访问

工具软件18小时前发布 小编
1 0 0

很多刚入手群晖NAS的朋友都会遇到一个现实问题:家里没公网IPv4地址,NAS只能在局域网里用。想在外面传个文件、看个照片?根本没法连。这时候,FRP(Fast Reverse Proxy) 就派上用场了。

简单来说,FRP能借助一台有公网IP的云服务器,把你的内网服务“打穿”到外网。只要配置正确,随时随地都能安全访问家里的NAS。本文将详细讲解如何在群晖上部署FRP客户端,并搭配云服务器完成整套内网穿透方案。无论你是Docker新手还是命令行老手,都能找到适合自己的方式。


一、准备工作,别跳过这一步!

动手前先确认以下几项是否就绪,避免做到一半卡住:

ad

程序员导航

优网导航旗下整合全网优质开发资源,一站式IT编程学习与工具大全网站

  • 群晖NAS:确保已开启SSH功能(路径:控制面板 → 终端机和SNMP → 勾选“启动SSH功能”)。
  • 云服务器
    • 配置建议1核2G(学生机够用);
    • 必须有公网IPv4;
    • 带宽最好1Mbps以上(直接影响远程访问速度);
    • 系统推荐CentOS或Ubuntu。
  • 工具软件
    • SSH客户端(如Xshell、FinalShell,免费好用);
    • 文件传输工具(WinSCP,用于上传配置文件)。

💡 提示:如果你用的是国内云厂商(阿里云、腾讯云等),记得在安全组规则里提前放行后续要用的端口。


二、FRP工作原理

FRP采用“反向代理”模式,核心逻辑其实不复杂:

  • 服务端(frps) 跑在你的云服务器上,监听公网请求(比如7000端口)。
  • 客户端(frpc) 跑在群晖NAS上,主动连接服务端并维持长连接。
  • 当你从外网访问 云服务器IP:5000,请求会被服务端转发给NAS,再由NAS返回数据——整个过程对用户透明。

这种“客户端主动拨号”的机制,完美绕过了家庭宽带没有公网IP的限制。


三、服务端部署:在云服务器上跑起FRP

下面以 CentOS 7 为例,全程命令行操作。Ubuntu 用户只需替换防火墙命令即可。

ad

AI 工具导航

优网导航旗下AI工具导航,精选全球千款优质 AI 工具集

1. 下载并解压 FRP

# 下载指定版本(这里用 v0.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

[common]
bind_addr = 0.0.0.0          # 监听所有IP
bind_port = 7000             # 客户端连接端口
privilege_token = 2fd165jtyjsd0g5t4hdga16  # 认证密钥,务必自定义且复杂
vhost_http_port = 5000       # HTTP流量转发端口
vhost_https_port = 6000      # HTTPS流量转发端口
dashboard_port = 7500        # Web管理面板端口
dashboard_user = admin       # 面板用户名
dashboard_pwd = admin123     # 面板密码

保存方法:用 vi frps.ini,按 i 进入编辑模式,粘贴后按 Esc,输入 :wq 回车退出。

3. 开放端口 + 启动服务

防火墙放行(关键!)

  • CentOS(使用 firewalld):
    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(使用 ufw):
    sudo ufw allow 7000/tcp
    sudo ufw allow 5000/tcp
    sudo ufw allow 6000/tcp
    sudo ufw allow 7500/tcp
    sudo ufw reload
    

后台启动 FRP 服务

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

✅ 验证:浏览器访问 http://你的服务器IP:7500,输入账号密码,能看到仪表盘即表示服务端运行正常。


四、客户端配置,让群晖连上服务端

群晖作为客户端,有三种主流部署方式。任选其一即可。

方式一:Docker 图形化部署(推荐新手)

步骤1:拉取 FRP 镜像

打开群晖 Docker 套件 → 切换到「注册表」→ 搜索 chenhw/frp → 双击下载(标签选 latest)。

步骤2:准备配置文件 frpc.ini

在群晖 File Station 中创建路径:/docker/frp/
本地用记事本新建 frpc.ini,内容如下(请替换为你的实际信息):

ad

免费在线工具导航

优网导航旗下整合全网优质免费、免注册的在线工具导航大全

[common]
server_addr = nas.yourname.com   # 云服务器公网IP或域名
server_port = 7000               # 必须和服务端 bind_port 一致
auth_token = 2fd165jtyjsd0g5t4hdga16  # 必须和服务端 privilege_token 完全相同

# 转发群晖DSM网页界面(默认HTTP端口5000)
[synology-dsm]
type = http
local_ip = 192.168.1.100         # 你的群晖内网IP
local_port = 5000
remote_port = 5000               # 外网访问端口,可自定义

# 可选:转发SSH(方便远程管理)
[synology-ssh]
type = tcp
local_ip = 192.168.1.100
local_port = 22
remote_port = 2222               # 外网通过此端口连SSH

将该文件上传至 /docker/frp/ 目录。

步骤3:创建容器

  • 进入 Docker →「映像」→ 找到 chenhw/frp → 点击「启动」。
  • 在「高级设置」中配置:
    • 基本设置:勾选「启用自动重新启动」;
    • :添加文件映射,左侧选 /docker/frp/frpc.ini,右侧填 /frp/frpc.ini
    • 环境:新增变量 FRP_ROLE=client

点击「下一步」→「应用」,容器启动后状态应为“运行中”。


方式二:Docker Compose 部署(适合自动化运维)

在群晖上创建目录 ~/docker/frp,进入后新建 docker-compose.yml

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   # 注意:这里用 .toml 格式,但内容同 .ini
    network_mode: host  # 使用主机网络,简化端口映射

⚠️ 注意:虽然文件名是 .toml,但 FRP 实际兼容 INI 格式。你仍可使用上面的 frpc.ini 内容,仅需改名为 frpc.toml 即可。

启动命令:

docker-compose up -d

方式三:直接运行二进制文件(适合喜欢命令行的老手)

1. 下载 FRP 客户端

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 方案完全一致(见上文),用 vi frpc.ini 编辑保存。

3. 启动并设置开机自启

先测试连接:

./frpc -c ./frpc.ini

看到 start proxy success 表示成功。按 Ctrl+C 停止,再后台运行:

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

4. 添加自启脚本

# 创建启动脚本
vi /usr/syno/etc.defaults/rc.sysv/frpc.sh

写入以下内容(注意路径要匹配你的实际位置):

#!/bin/sh
cd /root/frp_0.33.0_linux_amd64
nohup ./frpc -c ./frpc.ini &

赋予执行权限并加入启动项:

chmod +x /usr/syno/etc.defaults/rc.sysv/frpc.sh
echo "/usr/syno/etc.defaults/rc.sysv/frpc.sh" >> /etc/rc

重启群晖后,执行 ps aux | grep frpc,若能看到进程即表示自启生效。


五、验证与使用

配置完成后,你可以这样访问:

  • DSM 界面:浏览器打开 http://你的服务器IP:5000
  • SSH 登录ssh admin@你的服务器IP -p 2222

🔒 安全建议:生产环境中建议搭配 HTTPS + 域名 + Nginx 反向代理,避免直接暴露端口。


六、常见问题排查

  • 连不上? 检查服务端/客户端 token 是否一致,端口是否开放。
  • 面板打不开? 确认 dashboard_port 已放行,且没被其他服务占用。
  • NAS重启后失效? Docker 方案勾了自启就没事;二进制方案务必确认自启脚本路径正确。

结语

FRP 是目前最轻量、灵活的内网穿透方案之一,特别适合家庭 NAS 用户。虽然 Cloudflare Tunnel、ZeroTier 等新方案也在崛起,但 FRP 的可控性和通用性依然不可替代。

如果你按本文一步步操作,应该能顺利实现公网访问群晖。遇到问题不妨回头检查每一步的细节——很多时候就是某个端口没开,或者 token 写错了一个字符。

📚 参考资料:FRP 官方文档


本文基于实际部署经验整理,已在多台 DSM 7.x 设备上验证通过。欢迎留言交流踩坑心得!

© 版权声明

相关文章

暂无评论

暂无评论...