| 2026-08-19
在数字化办公与远程协作日益普及的今天,将内网服务安全地暴露到公网已成为许多技术人员的刚需。无论是远程连接家中NAS、访问公司内部的ERP系统,还是调试本地开发的Web应用,内网穿透都是一项不可或缺的技能。本文将以详实的步骤为你拆解一套完整的frp内网穿透教程,帮助你从零开始搭建稳定、高效的远程访问通道。
1. 什么是frp?为什么选择它?
frp(Fast Reverse Proxy)是目前使用最广泛的开源内网穿透工具之一。它的核心原理是在一台拥有公网IP的服务器(服务端)和内网设备(客户端)之间建立隧道,将内网请求转发到公网,从而实现外网访问内网服务。相比于商业方案,frp内网穿透教程的优势在于:
完全开源免费:代码托管在GitHub,社区活跃,安全性可审计。
支持丰富协议:TCP、UDP、HTTP、HTTPS均可代理,满足远程桌面、SSH、Web服务等多种场景。
轻量灵活:客户端与服务端程序体积小,可在Linux、Windows、macOS、路由器甚至单片机等设备上运行。
自带管理面板:通过Dashboard可以实时查看连接状态、流量统计,运维方便。
准备好了吗?跟随这套frp内网穿透教程,你将实现从零到一的完整部署。
2. 环境准备与基础架构
在开始动手前,你需要准备以下资源:
一台有公网IP的服务器(VPS):作为frp服务端,用于接收外网请求并转发给内网设备。推荐内存不低于512MB,系统为Linux(如Ubuntu 20.04)。
一台内网设备:作为frp客户端,即需要被远程访问的机器(例如你的办公电脑、NAS或树莓派)。
域名(可选但推荐):用于绑定HTTP/HTTPS服务的访问入口,避免直接暴露IP。
架构简图:
外网用户 → 域名/IP:端口 → 公网服务器(frps) → 内网设备(frpc)
下面进入正式的frp内网穿透教程操作环节。
3. 服务端搭建(frps)
步骤1:下载frp并解压
登录你的VPS,执行以下命令下载最新版frp(以Linux amd64为例,其他架构请前往GitHub Releases选择对应文件):
wget https://github.com/fatedier/frp/releases/download/v0.54.0/frp_0.54.0_linux_amd64.tar.gz
tar -zxvf frp_0.54.0_linux_amd64.tar.gz
cd frp_0.54.0_linux_amd64
步骤2:编辑服务端配置文件
使用vim或nano编辑 frps.toml 文件(新版frp采用toml格式,旧版本为ini,原理相同):
[common]
bind_port = 7000 # frps监听端口,用于与frpc通信
vhost_http_port = 8080 # HTTP代理端口(可选)
token = your_secure_token # 安全验证令牌,客户端需一致
dashboard_port = 7500 # 管理面板端口(可选)
dashboard_user = admin
dashboard_pwd = admin123
步骤3:启动服务端
./frps -c frps.toml
若输出类似 start frps success 的日志,说明启动成功。建议使用 systemd 将其注册为服务,实现开机自启。
至此,服务端搭建完成,接下来进入frp内网穿透教程的第二阶段。
4. 客户端配置(frpc)
步骤1:在客户端设备下载并解压frp
同样下载frp,但注意目标系统架构。Windows用户选择 windows_amd64 版本;树莓派用户选择 linux_arm 版本。
步骤2:编辑客户端配置文件
编辑 frpc.toml,添加需要暴露的内网服务。以下是一个远程桌面(RDP)和HTTP网站的例子:
[common]
server_addr = your_vps_ip # 你的公网服务器IP
server_port = 7000 # 与服务端bind_port一致
token = your_secure_token # 与服务端一致
**远程桌面(RDP)**
[rdp]
type = tcp

local_ip = 127.0.0.1
local_port = 3389
remote_port = 7001 # 访问时使用VPS的7001端口
**HTTP网站**
[web]
type = http
local_port = 80
custom_domains = your-domain.com # 或直接使用IP:端口
步骤3:启动客户端
./frpc -c frpc.toml
客户端连接成功后,你在外网可以通过 http://your_vps_ip:7001 访问内网远程桌面,或通过 http://your-domain.com:8080 访问内网Web服务。
5. 进阶优化与安全加固
完成上述frp内网穿透教程后,你已具备基本的远程访问能力。但生产环境中还需注意以下几点:
配置systemd自启:参考frp官方文档编写服务文件,确保重启后自动运行。
使用证书加密:若需代理HTTPS服务,可在frps中配置证书路径,或通过Nginx反向代理进行SSL卸载。
限制访问IP:在frpc配置中对特定服务设置 allow_ips 或 deny_ips,防止未授权访问。
开启Dashboard:通过管理面板可监控各隧道的连接数、流量,便于排障。
这套frp内网穿透教程不仅适用于个人开发者,也适合小团队快速搭建远程办公环境。理解其底层原理后,你还可以将其集成到自动化部署脚本中,实现一键式内网穿透。
FAQ(常见问题)
Q:服务端和客户端连接后,外网无法访问,如何排查?
A:首先确保VPS防火墙放行了相关端口(如7000、7001、8080、7500)。其次检查 frpc 和 frps 日志,看是否有认证失败或连接超时的提示。最后验证内网服务是否正常运行(本地 telnet 127.0.0.1 端口 是否通)。
Q:frp支持UDP协议吗?我想远程联机打游戏。
A:支持。在配置文件中将 type 设为 udp 即可,例如代理Minecraft服务器的25565端口。注意游戏对延迟敏感,建议选择离你地理位置较近的VPS。
Q:frp域名绑定后,访问出现502错误是什么原因?
A:可能是 vhost_http_port 未开放,或 custom_domains 未正确指向VPS IP。请确认域名A记录解析正确,且防火墙允许访问该端口。另外,若内网服务本身未正常监听,也会导致502。