前言
仅供自己学习记录#
一、简介#
1.1 简述#
- frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议,最牛逼最好用的完全开源的内网穿透工具frps。frp是实现内网穿透的C/S架构软件,满足在外网环境下使用内网服务的需求
1.2 原理如下图#
- 简单解释就是,A是公网服务器,B是内网服务器,C是个人用户。A安装frps服务端,B安装frpc客户端并指向A的IP端口,此时C想访问B的内网服务,只需要访问A的服务,A与B相互转发,完成C访问内网B。

二、安装与使用#
2.1 文件下载(这里需要注意的是,同一个文件夹就包含了同类型系统的服务端frps和客户端frpc程序)#
2.2 服务端安装#
- 将文件拷贝到服务器任意指定文件目录,并解压文件
tar -zxvf + 压缩包文件名
2.3 修改服务端配置文件#
- 2.3.1进入解压的压缩包内,编辑服务端配置文件
vim frps.ini
- 2.3.2 修改fprs.ini础配置,并保存退出
[common]
bind_port = 7000
token = 52010
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true
log_file = /var/log/frps.log
log_level = info
log_max_days = 3
[common]
bind_addr = 0.0.0.0
bind_port = 7000
kcp_bind_port = 7000
bind_udp_port = 7001
vhost_http_port = 8001
vhost_https_port = 443
dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
token = 123456
heartbeat_timeout = 30
privilege_allow_ports = 2000-3000,3001,3003,4000-50000
max_pool_count = 100
max_ports_per_client = 0
max_pool_count = 5
authentication_timeout = 900
tcp_mux = true
只需要将 *.{subdomain_host} 解析到 frps 所在服务器。之后用户可以通过 subdomain 自行指定自己的 web 服务所需要使用的二级域名,通过 {subdomain}.{subdomain_host} 来访问自己的 web 服务。
subdomain_host = frps.com
log_file = ./log/frps.log
log_level = info
最多保存多少天日志,可自定义
log_max_days = 3
2.4 开放端口规则#
- 2.4.1 如何是阿里云或者腾讯云,则需要打开上诉相应端口的入规则。如果是公网物理服务器,则需要开放相应防火墙端口,系统不一样的自己修改指令,当然可以直接关闭防火墙。

sudo firewall-cmd --permanent --add-port=7000/tcp
sudo firewall-cmd --permanent --add-port=7500/tcp
sudo firewall-cmd --reload
2.5 启动frps服务#
./frps -c ./frps.ini
./frps -c ./frps.ini &
ps -ef | grep frp
kill -9 + pid
sudo mkdir -p /etc/frp
sudo cp frps.ini /etc/frp
sudo cp frps /usr/bin
sudo cp systemd/frps.service /usr/lib/systemd/system/
sudo systemctl enable frps
sudo systemctl start frps
2.6 运行验证#
- 启动成功后,登录frp管理后台,默认 IP:7500,admin/admin,即可查看服务启动

2.7 客户端的安装#
- 2.7.1 假设客户端是内网的linux系统,将之前下载好的frp压缩包拷入本地linux文件夹,并解压缩
tar -zxvf + 压缩包文件名
- 2.7.2 进入解压缩文件夹,编辑客户端配置文件
vim frpc.ini
- 2.7.3 修改fprc.ini基础配置如下
frpc.ini
[common]
server_addr = 服务器公网IP
server_port = 7000
token = 52010
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
[mysql]
type = tcp
local_ip = 127.0.0.1
local_port = 3306
remote_port = 3307
[common]
server_addr = 116.85.28.230
server_port = 7000
token = 123456
log_file = ./frpc.log
log_level = info
log_max_days = 3
admin_addr = 127.0.0.1
admin_port = 7500
admin_user = admin
admin_passwd = admin
tcp_mux = true
login_fail_exit = true
protocol = tcp
tcp_mux = true
[ssh_01]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 8022
use_encryption = false
use_compression = false
[web2]
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port= 8811
use_encryption = false
use_compression = false
[web]
type = https
local_ip = 127.0.0.1
local_port = 88
use_encryption = false
use_compression = true
http_user = admin
http_pwd = admin
custom_domains = fy2018.online
host_header_rewrite = example.com
header_X-From-Where = frp
[web1]
type = http
local_ip = 127.0.0.1
local_port = 80
custom_domains = fy2018.online
- 2.7.4 如果开起了防火墙的,记得开放端口,如果没开的就不用管,系统不一样的自己修改指令
sudo firewall-cmd --permanent --add-port=6000/tcp
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
2.8 frp客户端启动运行#
./frpc -c ./frpc.ini
./frpc -c ./frpc.ini &
2.9 验证#
- 2.9.1 前后端均正常启动成功后,打开第三方ssh连接客户端,连接公网IP:[映射端口],如47.55.66.88:6000,即可连接到B电脑ssh服务的22端口。
三、常见问题处理#
3.1 frp异常#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具