内网穿透 FRP 配置指南

发布于:2025-08-05 ⋅ 阅读:(9) ⋅ 点赞:(0)

关键词:内网穿透、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

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

# 以 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

bindPort = 15700
vhostHTTPPort = 14144

启动 frps:

# 后台启动frp服务端应用
nohpu ./frps -c frps.toml &

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

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

[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)
serverAddr = "公网IP"
serverPort = 15700

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

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

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

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

启动 frpc:

./frpc -c frpc.toml

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


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

1. 服务器

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

[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

[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

执行:

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 文件格式


网站公告

今日签到

点亮在社区的每一天
去签到