内网穿透 FRP 配置指南

关键词:内网穿透、FRP配置、frps、frpc、远程访问、自建服务器、反向代理、TCP转发、HTTP转发

在开发或部署项目时,我们经常遇到内网设备无法被公网访问 的问题,例如你想从外网访问你家里的 NAS、远程调试开发板,或是访问本地测试环境。这时候,一个轻量、易用、高效的开源工具 ------ FRP (Fast Reverse Proxy) 就派上用场了。

本文将手把手教你如何使用 FRP 实现内网穿透,支持 **TCP / HTTP ** 协议的穿透。


一、FRP 是什么?

FRP(Fast Reverse Proxy) 是一个高性能的反向代理应用,专为内网穿透而设计。你可以通过它将内网服务映射到公网服务器,实现从外网访问内网服务的需求。

FRP 包含两个核心组件:

  • frps:部署在公网服务器上,作为服务端。
  • frpc:部署在内网主机上,作为客户端。

二、FRP 应用场景

  • 从公网访问位于 NAT/防火墙后的内网服务
  • 家庭网络中远程访问内网电脑或 NAS
  • IoT 设备远程调试
  • 本地开发环境暴露给互联网使用
  • 内网网站、API接口暴露给第三方服务

三、准备工作

1. 准备一台 公网服务器

  • 操作系统:Linux(例如 Ubuntu 20.04)
  • 能开放指定端口(例如 7000、80、443)
  • 安装 SSH,方便远程管理

2. 一台内网主机

  • 比如你家里的电脑、树莓派、或公司内网中的服务器

3. 下载 FRP 工具

访问:https://github.com/fatedier/frp/releases

选择对应系统版本进行下载,例如:

bash 复制代码
# 以 Linux 64 位为例
wget https://github.com/fatedier/frp/releases/download/v0.63.0/frp_0.63.0_linux_amd64.tar.gz
tar -zxvf frp_0.63.0_linux_amd64.tar.gz

四、服务端配置(公网服务器)

进入 frp_0.63.0_linux_amd64 目录:

编辑 frps.toml:

toml 复制代码
bindPort = 15700
vhostHTTPPort = 14144

启动 frps:

bash 复制代码
# 后台启动frp服务端应用
nohpu ./frps -c frps.toml &

#利用tail 命令查看启动日志
tail -f nohup.out

出现如下内容则表示启动成功:

bash 复制代码
[1;34m2025-07-23 18:50:38.146 [I] [frps/root.go:105] frps uses config file: frps.toml
[0m[1;34m2025-07-23 18:50:38.307 [I] [server/service.go:237] frps tcp listen on 0.0.0.0:15701
[0m[1;34m2025-07-23 18:50:38.308 [I] [server/service.go:305] http service listen on 0.0.0.0:14144
[0m[1;34m2025-07-23 18:50:38.308 [I] [frps/root.go:114] frps started successfully

✅ 建议将其配置为 Systemd 服务,实现开机自启。


五、客户端配置(内网主机)

在内网主机中进入对应解压后的 frp 目录。

编辑 `frpc.toml:

1. 穿透 HTTP 服务(比如本地 8080)
toml 复制代码
serverAddr = "公网IP"
serverPort = 15700

[[proxies]]
name = "web01"
type = "http"
localIP = "127.0.0.1"
localPort = 8080
customDomains = ["指定到公网的域名"]

启动成功后,可以通过 http://公网IP:14144 内网http服务!

2. 穿透 SSH 服务(远程 SSH 到内网设备)
toml 复制代码
serverAddr = "公网地址"
serverPort = 15700

[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort =16000

启动 frpc:

bash 复制代码
./frpc -c frpc.toml

启动成功后,ssh 公网IP -p 16000 来访问内网ssh服务!


六、设置自启动(Systemd 配置)

1. 服务器

创建 /etc/systemd/system/frps.service

ini 复制代码
[Unit]
Description=FRP Server
After=network.target

[Service]
ExecStart=/opt/frp/frps -c /opt/frp/frps.toml
Restart=on-failure

[Install]
WantedBy=multi-user.target

2.客户端

创建 /etc/systemd/system/frpc.service

ini 复制代码
[Unit]
Description=FRP Client
After=network.target

[Service]
ExecStart=/opt/frp/frpc -c /opt/frp/frpc.toml
Restart=on-failure

[Install]
WantedBy=multi-user.target

执行:

bash 复制代码
sudo systemctl daemon-reexec
sudo systemctl enable frps
sudo systemctl start frps

客户端同理。


七、常见问题排查

问题 可能原因 解决办法
frpc 连接不上 frps 防火墙或端口未开放 检查安全组、防火墙设置
HTTP 映射失败 域名未解析或未配置 vhost_http_port 检查 DNS 和配置
SSH 登录失败 remote_port 已被占用 修改 remote_port
frps/frpc 启动失败 配置文件格式错误 仔细检查 toml 文件格式

相关推荐
高频因子挖掘机31 分钟前
只取最近 60 个交易日,却每次拉全历史:量化脚本变慢的原因与改法
后端·github·api
孟健1 小时前
从5000亿Token到83%字节匹配:AI逆向工程与重构的工程闭环实践
后端·架构·ai编程
码事漫谈2 小时前
丢得静悄悄,谈一谈 Agent 的记忆是怎么没的
后端
迪飞特科技2 小时前
智慧物业平台实战:Spring Boot 整合小程序实现报修巡检费用全流程
spring boot·后端·小程序
考虑考虑2 小时前
@JsonInclude注解使用
spring boot·后端·spring
IT_陈寒3 小时前
Vite的这个问题坑了我三天,原来如此解决!
前端·人工智能·后端
网易云信3 小时前
大模型能上岗做销售吗?我们让 12 款国产模型交了 420 份作业
前端·后端
CCblandy3 小时前
HTTP 长连接 3 类故障实测:[WinError 10053]、99 个 TIME_WAIT、69 次多余握手,4 种对策怎么选
后端·python·网络协议·http·云原生·性能优化·架构
蜗牛互联网3 小时前
Python Agent工具调用的白名单、参数校验与审批门禁
java·服务器·前端·人工智能·后端·python
dd聊技术4 小时前
Prompt 从代码常量搬进数据库:改一句话,不用再发一次版
java·后端