1panel安装Frp,做群晖nas的内网穿透
2025-05-17 10:12:04

安装frp本来以为只是一件小事,但是没想到由于版本不同,文档极为混乱。

所以,这里特地整理一套自己的安装流程,以供参考。

正文

安装流程有很多,我看了很多文档,基本上五花八门,说什么的都有。

有的是手动命令行安装,有的是面板安装,有的是借用第三方的工具,有的是自己搭建的跳板。

但是无论哪一种,只要是折腾到nas这块,我猜大家基本上都是私人性质的事情,所以肯定是放在自己的服务器上更放心一些。

需求分析

我个人算是电影迷,经常会收集一些影片放在电脑上,但是后来随着收藏量的增加,我只能用nas放在老家,方便在外工作时候观看。

我一开始是用第三方的内网穿透来做外部访问的,但是时间久了,可能会遇到如下问题。

  1. 节点收费过高,而我平时使用率并不高。
  2. 节点不稳定,有时候带宽波动,访问效果不是很理想。
  3. 节点提供商会跑路,这个在早期有不少案例,只能自认倒霉,现在好了不少,个人比较推荐樱花FRP

以上三个问题都是之前的经历,考虑到这些不稳定因素,我只能说狗屁如来,不如我自己来。

FRP是什么?

FRP(Fast Reverse Proxy)是一种高性能的反向代理工具,用于将内网服务暴露到公网,通常用于穿透内网限制,实现远程访问。它的核心功能是通过一个公网服务器(FRP 服务端)中转流量,使得外部用户可以访问内网中的设备或服务(如 SSH、Web、游戏服务器等)。


FRP 的核心概念

  1. 服务端(Server)
    • 部署在具有公网 IP 的服务器上(如云服务器)。
    • 负责接收外部请求,并将流量转发到内网的客户端。
  2. 客户端(Client)
    • 运行在内网环境中(如家庭 NAS、公司内网电脑)。
    • 主动连接服务端,建立隧道,将内网服务映射到公网。

FRP 的典型用途

  • 远程访问内网服务,如 SSH、RDP、Web 服务(本地开发的网站)、NAS 管理等。
  • 绕过 NAT/防火墙限制,解决运营商封锁端口或没有公网 IP 的问题。
  • 游戏联机或私有云服务,将本地游戏服务器或私有云(如 Nextcloud)暴露到公网。

安装准备

硬件上,我们需要有如下物品

  1. 一台境内服务器,推荐5M以上,国内节点带宽基本都是稳定的,国外节点带宽大多是共享带宽,有时候会很慢
  2. 一台家用nas,洗白的最好(因为我个人是白群晖)

关于服务器,我个人推荐5Mbps以上,我个人是用腾讯云活动的服务器,

在完成上述准备内容之后,我们就可以开始安装了,大致流程其实很简单。

  1. 在服务器上安装frps,开放端口,填好配置后,供外部访问
  2. 在你需要穿透的内网上,安装frpc,填写好配置,供frps使用
  3. 自行检测确认,外部是否可以访问

服务器上的操作

我想大多数人应该用的都是相对便宜的Linux服务器,很多人在早期会用命令行安装。

但考虑到我们大多数对于命令行使用不熟练,而且很多文档对于命令行的记录都可能有疏忽,进而影响安装。

所以,我们这里可以直接安装一些面板工具来简化操作。

个人这里推荐使用1panel,相对于其他的服务器管理工具,这面板工具轻量好用,不怎么占用资源,而且面板看着更加现代化。

安装管理面板

1
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh

安装FRPS

安装完成之后,我们进入目录/opt/1panel/apps/frps/frps/data/frps.toml,做一下配置

这里记得,引号不要用中文引号,或者单引号,如果配置上没引号就别写引号,这都是我自己试出来的问题。

如果你安装不上去,可能是你的frps的版本不对,我这里的frps的版本是0.62.1,后续若是FPRS的版本升级,可能配置会有所修改。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
bindAddr = "0.0.0.0"
bindPort = 7000

auth.method = "token"
auth.token = "token123456"

webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin_123456"

# tls
#transport.tls.force = true
#transport.tls.certFile = "/etc/frp/ssl/server.crt"
#transport.tls.keyFile = "/etc/frp/ssl/server.key"
#transport.tls.trustedCaFile = "/etc/frp/ssl/ca.crt"

上述的配置可以直接复制粘贴进配置项里边。

如果不清楚,我们这里稍微解释一下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
bindAddr = "0.0.0.0" // 所有的服务器都可以配置
bindPort = 7000 // 对外开放的绑定端口是7000

auth.method = "token" // 验证方式是token
auth.token = "token123456" // token的内容,这里自己记得修改,不要用默认的,不然会有安全隐患

// 这部分是frps的管理面板的web端的配置
webServer.addr = "0.0.0.0" // 同上,不用管
webServer.port = 7500 // 这个是
webServer.user = "admin"
webServer.password = "admin_123456"

# tls
#transport.tls.force = true
#transport.tls.certFile = "/etc/frp/ssl/server.crt"
#transport.tls.keyFile = "/etc/frp/ssl/server.key"
#transport.tls.trustedCaFile = "/etc/frp/ssl/ca.crt"

开放防火墙端口

关于防火墙端口开放,这个我一开始看过不少人要用命令行去操作,但是在现在这个有云服务商的情况下,实际上不需要这么麻烦。

譬如,腾讯云服务器,只需要打卡服务器管理,点击到防火墙选项,简单配置一下即可。

又或者你可以直接用腾讯云提供的小程序:腾讯云助手,这个在手机上就可以直接简单的配置防火墙了。

我们需要做的,就是把上述涉及到的端口都打开。

端口 作用
7000 frps用来连接本地应用的端口,可以理解为入口
7500 frps的管理界面的端口,可以选择不开,但是这样你就看不到管理界面了
8096 代理emby的端口,可以理解为,出口

本地的操作

我这里是nas,所以直接用nas举例子,

同上,这里我先放一下我的配置。

不过,这里我改动了一下IP,大家不要顺着这个IP去找我的服务器了,为了自己的服务器不被爆破,我得有这点戒心。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
serverAddr = "47.156.23.99"
serverPort = 7000
auth.method = "token"
auth.token = "token123456"


[[proxies]]
name = "emby"
type = "tcp"
localIP = "192.168.2.3"
localPort = 8096
remotePort = 8096

[[proxies]]
name = "qbittorent"
type = "tcp"
localIP = "192.168.2.3"
localPort = 8085
remotePort = 8085

这里,我们也照例解释一下上述配置的意思,顺便我们扩展一下,如果需要代理多个应用要怎么做。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 代理服务器的配置
serverAddr = "47.156.23.99" // 你安装frps的服务器,用来作为跳板
serverPort = 7000 // frps服务器开放的端口
auth.method = "token" // 用来验证安全的方式
auth.token = "token123456" // token的密码,要和frps的配置一致


[[proxies]]
name = "emby" // 本地需要代理的应用的名字
type = "tcp" // 穿透的方式,tcp是一个选项,如果没什么意外,大多数应该都是tcp
localIP = "192.168.2.3" // 本地应用的内网ip地址
localPort = 8096 // 本地应用的内网端口
remotePort = 8096 // 本地应用的外网端口

[[proxies]] // 这里不用改
name = "qbittorent" // 本地需要代理的应用的名字
type = "tcp" // 穿透的方式,tcp是一个选项,如果没什么意外,大多数应该都是tcp
localIP = "192.168.2.3" // 本地应用的内网ip地址
localPort = 8096 // 本地应用的内网端口
remotePort = 8096 // 本地应用的外网端口

访问测试

最后,我们需要进行访问测试:个人的ip地址:端口,这里我们以上述内容为例子。

1
47.156.23.99:8096

通常情况,我们应该可以在外部访问到自己的内部应用了。

这里访问速度的快慢,主要取决于我们购买的服务器的上行带宽,所以尽可能选个带宽高点的服务器,这很重要。

如果你要选那种2M带宽左右的垃圾服务器,很大概率会遭罪的,指望那个带宽,大概率看不了影片。

结语

这个安装过程其实并不麻烦,但是市面上靠谱的文档实在是太少了,导致我在安装过程中出了不少问题。

前前后后折腾了大概得有10小时以上,我才把整个流程走通,可以说,糟糕的文档的在安装过程中“功不可没”。

找了好几个文档,靠谱的也就是下边参考中的一份CSDN的博客,真是遭罪。

参考

在群辉NAS上部署frp,实现内网穿透_群晖内网穿透-CSDN博客

Prev
2025-05-17 10:12:04