在个人云服务器上搭建 frp 内网穿透服务的操作步骤

1、内网穿透的作用

  • 远程办公:在家或出差在外时,可以远程访问公司内网的业务系统、代码仓库、数据库。

  • 开发调试:第三方回调接口测试、本地开发环境对外展示、小程序(公众号)开发的本地调试。

  • 个人应用:游戏联机、远程访问 NAS (或个人电脑硬盘)上的文件资源。

2、内网穿透的工具

工具 优点 缺点 适用人群
frp 开源免费、功能强大、自主可控 需要自购服务器,技术门槛较高 能自行维护服务器的用户
ZeroTier 配置简单、安全性高 不适合对外提供公开服务,所有设备都要安装客户端 需要将分布在各地的设备组成一个虚拟局域网的用户
花生壳 操作简单、到手即用 免费版带宽低、限制多,数据经过第三方服务器 没有技术基础,或愿意为省心付费的用户

3、frp 的工作原理

frp工作原理

如上图所示,因为 IPV4 的地址数量有限,所以不是每台联网设备都有公网 IP ,因此无法直接建立连接进行访问。

没有公网 IP 但安装了 frp 客户端的设备,会主动向有公网 IP 且安装了 frp 服务端的服务器建立连接;并将内网(或本地)的某个服务,关联到服务器的某个端口上。

这样一来,特定用户(知道服务器公网 IP 和端口等信息的用户),便能通过服务器的特定端口,访问到没有公网 IP 的设备的服务或资源。

提示:内网 IP 地址的范围有三种:
10.0.0.0 ~ 10.255.255.255,192.168.0.0 ~ 192.168.255.255,172.16.0.0 ~ 172.31.255.255

4、安装 frp 服务端

4.1、下载 frp 程序包

图片

如上图所示,使用 MobaXterm 等工具连接云服务器,执行命令下载 frp 官方的程序包到云服务器中。

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

注意:frp 程序包的官方下载链接是国外的,可能会由于网络原因导致下载失败,(不同时间段)多试几次即可。

提示:本示例下载的是 Linux 系统 x86_64 架构的 v0.71.0 版本,如需使用其他版本,请到 frp 官方发布页( https://github.com/fatedier/frp/releases )复制对应的下载链接。
图片

4.2、解压 frp 程序包

图片

如上图所示,解压已下载到云服务器的 frp 程序包。

tar -zxvf frp_0.71.0_linux_amd64.tar.gz

提示:本示例的 frp 程序包名称为“frp_0.71.0_linux_amd64.tar.gz”,如下载了其他版本的程序包,命令需替换对应的文件名称。

4.3、进入 frp 程序目录

图片

如上图所示,frp 程序目录里只有简单的几个文件。

frps 和 frps.toml 是服务端的可执行程序以及配置文件,“s”表示“server”的意思。

frpc 和 frpc.toml 是客户端的可执行程序以及配置文件,“c”表示“client”的意思。

cd frp_0.71.0_linux_amd64/

提示:本示例的 frp 程序目录名称为“frp_0.71.0_linux_amd64/”,如下载了其他版本的程序包,命令需替换对应的目录名称。

4.4、修改 frps.toml 配置文件

图片

vi frps.toml

图片

# 服务端监听端口配置
bindPort = 7000                 # 本示例使用 frp 的默认监听端口 7000

# 安全配置
[auth]
method = "token"
token = "Test@123"              # 本示例使用的演示 token 值,实际请修改为更复杂的


# frp 管理界面配置(可选)
[webServer]
addr = "0.0.0.0"
port = 7500                     # 本示例使用 frp 的默认 web 管理界面端口 7500
user = "admin"                  # 可自定义用户名
password = "Test@123"           # 本示例使用的演示密码,实际请修改为更复杂的

# 日志配置
[log]
to = "./frps.log"
level = "info"
maxDays = 3

提示:关于 vi 工具的模式切换和保存操作,请参考 Vim常用操作速查表 这篇文章的第 2 小节和 3.2 小节。

4.5、启动 frp 服务

图片

如上图所示,frp 服务端成功。

nohup ./frps -c frps.toml > frps.out 2>&1 &

4.6、关闭 frp 服务

图片

如上图所示,如果 frp 服务不用(或修改配置文件)时,可以关闭 frp 服务。

kill -15 frp的实际进程id

5、使用 frp 客户端

5.1、下载 frp 程序包

官方下载地址:https://github.com/fatedier/frp/releases

图片

如上图所示,因为本文演示在 Windows 系统中使用 frp 客户端,所以下载的是 Windows 系统的 frp 程序包。

注意:frp 程序包的官方下载链接是国外的,可能会由于网络原因导致下载失败,(不同时间段)多试几次即可。

5.2、解压 frp 程序包

图片

如上图所示,解压已下载的 frp 程序包。

5.3、移动 frp 程序目录

图片

如上图所示,将解压后的 frp 程序目录移动到合适的位置,本示例移动到“D:\DevTools”目录下。

5.4、修改 frpc.toml 配置文件

图片

如上图所示,可以使用记事本打开修改 frpc.toml 配置文件。

# 连接服务端的配置
serverAddr = "x.x.x.x"                                # 安装了 frp 服务端的服务器 IP 地址
serverPort = 7000                                     # frp 服务端的监听端口
auth.token = "Test@123"                               # token 值,用于和服务端认证,需与服务端保持一致

# 端口转发配置
[[proxies]]
name = "test-web"                                     # 自定义代理标识,不可重复
type = "tcp"                                          # 协议类型,一般是 tcp 或 udp
localIP = "127.0.0.1"                                 # 内网 IP 地址,本例写的 127.0.0.1 代表本机地址
localPort = 8080                                      # 内网服务的端口
remotePort = 6002                                     # 关联内网服务端口的公网端口,可自定义

# 文件访问配置
[[proxies]]
name = "test-file"                                    # 自定义代理标识,不可重复
type = "tcp"                                          # 协议类型,文件服务是 tcp 协议
remotePort = 6001                                     # 访问本地文件服务的公网端口,可自定义
[proxies.plugin]
type = "static_file"                                  # 启用静态文件插件
localPath = "D:\\pt\\CaptainTsubasa2018"              # 对外开放的本地文件目录
stripPrefix = "myfile"                                # 自定义访问路径名,http://服务端IP地址:6001/myfile/ ,即可访问本地目录
httpUser = "TestUser"                                 # 自定义用户名,用于访问认证
httpPassword = "Test@123"                             # 自定义密码,用于访问认证

注意:云服务器对 frpc.toml 配置文件模板中的 6000 端口可能有特殊限制,不建议使用这个端口。

5.5、启动 frp 客户端

图片

如上图所示,在 frp 程序目录中,打开 cmd 窗口,然后执行启动客户端的命令。

如果 frp 客户端不用(或修改配置文件)时,直接关闭 cmd 窗口即可。

frpc.exe -c frpc.toml

提示:Linux 环境下客户端的启动命令是:nohup ./frpc -c frpc.toml > frpc.out 2>&1 &

注意:启动 frp 客户端之前,需先开放云服务器的防火墙端口(见第 6 小节),否则无法连接 frp 服务端的监听端口(本例为 7000 )。

6、开放云服务器的防火墙端口

6.1、控制台的防火墙

图片

如上图所示,在云服务器的防火墙配置中,添加四条“入方向规则”。

目的端口 7000 是 frp 服务端的监听端口,目的端口 7500 是 frp 服务端的管理界面端口。

目的端口 6002 用于 frp 客户端的端口转发,目的端口 6001 用于 frp 客户端的文件访问。

协议类型都是 TCP 协议,访问来源均是任何位置。

6.2、服务器的防火墙

图片

如上图所示,除了在阿里云的控制台开放端口外,还需要在服务器内开放相关端口。

firewall-cmd --add-port=7000/tcp --permanent
firewall-cmd --add-port=7500/tcp --permanent
firewall-cmd --add-port=6002/tcp --permanent
firewall-cmd --add-port=6001/tcp --permanent
firewall-cmd --reload

提示:“firewall-cmd --reload”命令是重启服务器内的防火墙,让刚刚的防火墙配置修改生效。

7、测试内网穿透效果

7.1、端口转发

图片

如上图所示,可以通过云服务器 IP 的 6002 端口,访问到本地电脑的 8080 端口的服务。

7.2、文件访问

图片

如上图所示,访问 http://服务端IP地址:6001/myfile/ 时,出现了认证弹窗。

注意:myfile 后面还要有 /

图片

如上图所示,认证通过后,可以访问到本地文件。

8、使用 frp 管理界面

图片

如上图所示,访问 http://服务端IP地址:7500 时,出现了认证弹窗。

图片

如上图所示,认证通过后,可以查看到 frp 的端口代理状态。

本文参考

【1】【知乎用户58412】【frp 内网穿透完整指南:从入门到实战】【知乎】【2025-06-04】

【2】【在下莫老师】【使用云服务器搭建内网穿透!纵享独属于个人的丝滑体验!】【bilibili】【2025-10-11】

【3】【小in分享】【远程办公、游戏联机与网站部署必备技能:零基础学会花生壳内网穿透技术】【bilibili】【2024-06-28】

【4】【Twilightlx】【frp内网穿透简单搭建教程】【bilibili】【2024-07-15】

【5】【风灵誓】【frp内网穿透最新实践教程 从零开始详细步骤】【bilibili】【2025-04-06】

【6】【司波图】【独享带宽,教你搭建只属于自己的内网穿透服务器(基于frp与zerotier moon服务器)】【bilibili】【2022-05-24】

posted @ 2026-09-13 20:26  Javaer1995  阅读(32)  评论(0)    收藏  举报