| 2026-07-30
在内网环境中部署了Web服务、远程桌面或NAS等应用后,我们往往希望能在任何地方访问它们。然而,由于IPv4地址资源枯竭,大多数家庭和企业宽带分配的都是内网IP,无法直接从外网发起连接。这时候,就需要一种技术来打破这种限制——frp内网穿透,它能够将内网中的服务安全、高效地暴露到公网上。
本文将为你深入解析frp内网穿透的原理、关键配置与应用场景,帮助你快速上手并稳定运行。
1. 什么是frp内网穿透?
frp内网穿透是一种基于Go语言开发的高性能反向代理应用,主要用于解决内网服务无法被外网直接访问的问题。它通过在内网服务器与具有公网IP的服务器之间建立一条加密隧道,实现内网服务的对外发布。
其核心思想是:内网服务器主动连接公网服务器,注册自己的服务端口;外网用户访问公网服务器的指定端口时,请求会通过这条隧道被转发到内网服务器的对应端口上。整个过程对于客户端来说是透明的,用户只需要访问公网服务器提供的地址即可。
2. frp内网穿透的工作原理
frp内网穿透由两个关键组件构成:
服务端(frps):运行在具有公网IP的服务器上(如云服务器),负责监听来自内网客户端的连接请求和外网用户的访问请求,并进行数据转发。
客户端(frpc):运行在内网需要被访问的设备上,主动向服务端发起连接,注册本地的服务端口,并维持长连接心跳。
当一个外网用户尝试访问公网服务器的某个端口时,frps会查找该端口对应的内网服务隧道,然后通过这个隧道将数据包完整地转发给frpc,frpc再将数据交给本地网络服务。这种机制确保了即使目标设备没有公网IP,也能被稳定访问。
3. 应用场景
frp内网穿透的功能非常强大,能够满足多种远程访问需求:
远程办公:在外地通过远程桌面协议(如Windows的3389端口)连接公司内网的电脑,实现远程办公。
Web服务发布:将本地开发环境、个人博客或内部管理系统部署到公网,方便客户或团队成员随时查看。
NAS远程访问:在家庭NAS上部署frp内网穿透,即可在外网像本地一样访问NAS中的文件、照片和影音资源。
游戏联机:搭建“我的世界”等游戏服务器,并利用frp内网穿透技术将服务器端口映射出去,让朋友从外网加入游戏。
4. 实战配置步骤
下面以一台Linux云服务器作为服务端(假设公网IP为 1.2.3.4),一台内网Linux电脑作为客户端为例,演示完整的配置过程。
第一步:部署服务端(frps)
登录云服务器,下载对应系统架构的frp压缩包。
解压后,修改 frps.toml 配置文件,内容如下:
[common]
bind_port = 7000
bind_port 是服务端监听的端口,用于接收内网客户端的连接。
运行服务端: ./frps -c frps.toml
第二步:部署客户端(frpc)
在内网电脑上下载同样版本的frp客户端压缩包。
修改 frpc.toml 配置文件,添加一个远程桌面映射:
[common]
server_addr = "1.2.3.4"
server_port = 7000
[rdp]

type = tcp
local_ip = "127.0.0.1"
local_port = 3389
remote_port = 3389
server_addr 填云服务器公网IP,server_port 与服务端保持一致。[rdp] 为自定义的映射名称,local_port 是内网服务端口(远程桌面为3389),remote_port 是外网访问时将使用的端口。
运行客户端: ./frpc -c frpc.toml
第三步:测试访问
在外部电脑上,打开远程桌面客户端,输入“1.2.3.4:3389”,即可连接到内网电脑的远程桌面。
FAQ
Q: 服务端和客户端必须使用同一种操作系统吗?
A: 不需要。frp支持跨平台运行,服务端可以是Linux,客户端可以是Windows、macOS或Linux,只要版本兼容即可。
Q: 我只有一个云服务器,如何让多个内网服务都通过它暴露?
A: 非常方便。你可以在 frpc.toml 中添加多个映射段,例如 [web]、[nas],并为每个映射分配不同的 remote_port。服务端会自动根据端口号将流量分发到对应的服务上。
Q: 如果内网服务端口是动态变化的,该怎么办?
A: 你可以使用frp的 HTTP 协议支持或指定固定的本地端口。如果本地服务确实会动态改变端口,可以考虑在客户端脚本中动态更新 frpc.toml 并重启进程。
Q: 部署frp内网穿透后,安全性如何保障?
A: frp支持Token认证、TLS加密通信,以及白名单访问控制。在生产环境中,建议开启Token验证,并仅允许特定IP访问服务端的端口,最大限度降低被攻击的风险。