介绍
FRP (Fast Reverse Proxy) 是一款高性能的反向代理应用,支持通过内网穿透将本地服务暴露到公网,适用于开发测试环境、远程管理以及各种需要穿透内网的场景。FRP 支持多种协议,包括 TCP、UDP、HTTP 和 HTTPS,同时提供稳定的穿透性能和灵活的配置方式。
它的核心原理是客户端和服务端通过一条持续连接的隧道(通常是 TCP 长连接)进行通信,客户端将内网服务的请求通过隧道转发到服务端,从而实现内网服务的公网访问。
系统环境
本文配置使用的linux系统是debain12(带公网作服务器端),穿透家中没有公网的群晖(客户端)
配置方法
服务端配置
镜像文件需要和服务器端版本像对应,不然可能会造成穿透失败,本文使用的都是客户端镜像snowdreamtech/frps镜像
更新系统包管理器:
首先,进入我们的带公网的linux服务器上,创建frp的docker文件夹目录
mkdir frps
进入该目录,创建我们的docker-compose.yml文件
进入frps文件夹
cd frps
# 创建yml文件
vim docker-compose.yml
配置以下内容
version: "3.9"
services:
frps:
image: snowdreamtech/frps:0.52.3
container_name: frps
hostname: frps
restart: always
network_mode: host
volumes:
- /etc/localtime:/etc/localtime:ro
- ./conf/frps.toml:/etc/frp/frps.toml:ro
- ./logs:/frp/logs
编辑完成后,按esc,输入:wq保存退出
在同级目录下,创建config文件夹
mkdir config
进入config,创建frpc的配置文件frps.toml
# 进入config
cd config
# 创建frps.toml
vi frps.toml
配置frps.toml内容如下(输入i进行编辑模式,shift+Ins粘贴)
# frps.toml
bindPort = 7000 # [必选] 绑定端口, 客户端与该端口建立连接
log.to = "console" # [可选] 日志配置, 通过打印的方式输出日志
vhostHTTPPort = 7100 # [可选] http 代理需要, 当访问该端口时就转到对应本地 frpc 代理
vhostHTTPSPort = 7200 # [可选] https 代理需要, 当访问该端口时就转到对应本地 frpc 代理
# 身份验证
auth.method = "token" # [必选] 身份验证方式
auth.token = "123456" # [必选] token 设置, 只有客服端设置了相同 token 才能身份校验通过, 其实就是密码
# 下面是服务端仪表板配置
webServer.port = 7300 # 仪表端口设置
webServer.addr = "0.0.0.0" # IP 设置,可以不修改直接使用0.0.0.0
webServer.user = "root" # 仪表盘用户名设置
webServer.password = "123456" # 仪表盘用户密码设置
配置完成后,我们按下esc,并输入英文:wq保存退出
启动我们的frps容器
# 启动
docker compose up -d
关闭容器的命令是 docker compose down
启动成功后我们进去服务器端面板,能打开服务面板即代表启动成功
面板地址:公网IP+端口号(本文配置的是7300)
配置群晖客户端
下载镜像文件
镜像文件需要和服务器端版本像对应,不然可能会造成穿透失败,本文使用的都是snowdreamtech-frpc镜像
群晖docker文件夹中新建frpc文件夹,并在里面创建按frpc.toml文件
文件内容如下
serverAddr = "56.3.6.3" # 对应公网地址
serverPort = 7000 # 默认7000,需要和服务器端bindPort对应
auth.method = "token" # 默认即可
auth.token = "zxw87969392" # 需要和服务器端auth.token对应
[[proxies]]
name = "web_nas" # 服务名称,必须唯一不重复
type = "tcp" # 协议
localIP = "192.168.3.36" # 本地群晖内网地址
localPort = 5000 # 本地群晖端口
remotePort = 5000 # 需要放开服务器端的端口,可以任意指定没有被占用的即可
[[proxies]] # 配置第二个穿透的服务,以此类推
name = "lucky"
type = "tcp"
localIP = "192.168.3.36"
localPort = 16601
remotePort = 16601
启动镜像,并添加映射文件夹路径
作者本地的路径是 docker/frpc/frpc.toml 对应映射服务器的路径是/etc/frp/frpc.toml
评论区