一文搞懂Frp,搭建Frp内网穿透服务

168 阅读6分钟

我所搭建的frp服务用到的场景是游戏联机(minecraft),因为网络运用商的网络不支持ipv6,不能用ipv6和朋友们联机玩,偶尔的闲暇时间也并没有一款好的联机软件(要么要钱)进行联机,本着自己也是程序员,找内网穿透方案自己搭建服务不就好了,学以致用嘛。

frp 是什么?

frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。

frp文档:https://gofrp.org/zh-cn/

Frp中有两个服务需要分别在服务器、本地设备进行启动

说明下:在服务器端的是frps,在本地设备(客户端)是frpc

一、服务器端 - Frps搭建

1. 下载frps文件并解压:

wget https://github.com/fatedier/frp/releases/download/v0.62.0/frp_0.62.0_linux_amd64.tar.gz

tar -xvf frp_0.62.0_linux_amd64.tar.gz

如果是使用了finalShell等软件也可以从github上自己下载frp相关文件,上传到服务器上就好

注意:服务器系统架构需要下载对应的frp文件, 如适用于现代 64 位 Linux(如 Ubuntu/CentOS 的 x86_64 架构)就和我一样下载amd64版本;若服务器是 ARM 架构(如树莓派),需下载 arm64 版本。

image.png

2. frps文件转移至/opt/frp文件夹下

我是放在/opt/frp文件夹下的,各位可以自行放置其他文件夹

mkdir /opt/frp

mv frp_0.62.0_linux_amd64 /opt/frp/

3. 配置frps文件

配置frps.toml文件内容,更多的配置参数可以自行查询frp

bindPort: frps的监听端口

webServer.addr = "0.0.0.0"

webServer.port: frps后台端口

webServer.user: frps后台登陆用户名,可选

webServer.password: frps后台登陆密码,可选

auth.token: frps服务与frpc服务连接的识别token,可选参数

# 编辑 frps.toml 文件
vim /opt/frp/frp_0.62.0_linux_amd64/frps.toml

# 将以下内容写入frps.toml内
bindPort = 7000

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

auth.token = "Yos1Oi-RlMV"

4. systemd管理frps服务

也可以查看frp官网的教程: gofrp.org/zh-cn/docs/…

其中ExecStart属性是启动frps的命令,需要对应之前下载的frps文件

# 1.下载systemd
yum install systemd

# 2.编辑 systemd 管理frps的文件
vim /etc/systemd/system/frps.service

# 3.将以下内容复制进frps.service文件内
[Unit]
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
ExecStart = /opt/frp/frp_0.62.0_linux_amd64/frps -c /opt/frp/frp_0.62.0_linux_amd64/frps.toml

[Install]
WantedBy = multi-user.target

5. frps,启动!

使用 systemd 命令管理 frps 服务

# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps
# 设置 frps 开机自启动
sudo systemctl enable frps
# 禁止 frps 开机启动
sudo systemctl disable frps

sudo systemctl start frps 启动frp服务后,访问服务器的公网地址+frps后台端口,如果有设置账号密码,按照设置的账号和密码登陆后即可,可见frps后台(后续可以在这里可以看到有哪些frpc连接的通道),说明fprs服务已经搭建和启动成功! image.png

二、本地设备(客户端) - Frpc搭建

1. 下载frpc文件

github上下载frpc相关文件,也要注意下对应系统架构,需要下载对应frpc文件,否则会启动不了frpc命令,一般windows系统下载amd64的文件即可。

附加此次frp版本的amd64文件下载地址:github.com/fatedier/fr…

image.png

2. 配置frpc文件

解压下载的zip文件后,frpc.toml文件配置如下:

serverAddr: 服务器的公网ip地址

serverPort: 服务的frps监听端口

auth.token: frps的配置如果有设置,需要与frps.toml的一致,用以连接识别;没有则可以删除

[[proxies]]

name: frp服务名称

type: 连接类型

localIP: 本地地址

localPort: 本地服务的端口

remotePort: 服务器开放的访问的端口

transport.useCompression: 是否对传输内容进行压缩, 可选

serverAddr = "xxxxxx"
serverPort = 7000
auth.token = "Yos1Oi-RlMV"

[[proxies]]
name = "WBOOs0C-lwzc"
type = "tcp"
localIP = "127.0.0.1"
localPort = 4850
remotePort = 26053
transport.useCompression = true

3. frpc, 启动!

在frpc.exe和frpc.toml文件的目录下使用命令:

.\frpc.exe -c .\frpc.toml

image.png

如图一样则说明连接成功了!

咱可以去frps的后台去看下,tcp那边是否有通道

image.png

看到通道出现,并且处于online状态,说明咱frp的服务搭建成功了!

义子们尽情的欢呼吧

为了博主自己不在的时候,方便那群义子联机,博主也是用vue3+vite+electron顺便搭建了一个简单的桌面应用给义子们联机。

这个桌面应用等博主有空了,稍等后面我会开源和再发一篇文章出来!

image.png

FRP除了游戏联机,其他应用的场景如下:

以下场景功能是根据deepseek列出来的,具体实现各位自行探索哈

1. 远程桌面/远程控制

  • Windows远程桌面(RDP)
    通过映射内网Windows主机的3389端口,实现在外网通过RDP协议远程控制电脑。
  • VNC/TeamViewer替代方案
    内网主机运行VNC服务,通过FRP穿透后,直接使用VNC客户端远程访问。

2. Web服务对外发布

  • 本地网站/博客对外访问
    将内网搭建的Web服务(如IIS、Apache、Nginx)映射到公网,支持HTTP/HTTPS协议,实现外网浏览器访问。
  • 内网Web应用测试
    开发阶段的Web应用(如本地调试的API、前端项目)可通过FRP生成临时公网URL,方便远程协作测试。

3. 文件共享与传输

  • FTP/SFTP服务穿透
    内网文件服务器通过FRP暴露,实现远程文件上传下载。
  • SMB/NAS访问
    将内网NAS或共享文件夹映射到公网,安全配置后实现跨网络文件访问(需注意安全风险)。

4. 数据库远程管理

  • MySQL/PostgreSQL/MongoDB外网连接
    开发或运维场景中,临时开放内网数据库到公网,方便远程管理(强烈建议限制IP并启用加密)。

5. SSH安全访问内网设备

  • 跳板访问内网Linux服务器
    通过FRP映射SSH端口(22),在外网直接使用SSH客户端连接内网服务器或树莓派等设备。

6. 内网API接口调试

  • 本地API对外暴露
    开发者在本地编写的RESTful API接口,通过FRP生成公网地址,方便移动端或第三方服务调试。

7. 游戏服务器联机

  • Minecraft/饥荒等游戏服务器
    将本地搭建的游戏服务器穿透到公网,支持好友联机(需注意带宽和延迟问题)。

8. IoT设备远程管理

  • 智能家居/NAS管理界面
    内网的树莓派、HomeAssistant、群晖NAS等设备的管理界面,通过FRP实现外网访问。

9. 安全监控与摄像头访问

  • 内网监控系统穿透
    访问内网部署的摄像头、NVR监控系统(如海康威视、大华)的Web界面,需确保权限控制。

10. 高级功能

  • TCP/UDP端口任意转发
    支持任意基于TCP/UDP协议的自定义服务穿透(如私有协议、工业设备通信)。
  • 端口范围映射
    批量映射多个端口,适用于复杂服务场景。
  • 负载均衡与插件扩展
    结合多台FRP服务端实现流量分发,或使用插件(如stcp安全隧道)避免直接暴露端口。