FRP原理图_FRP内网穿透_扶着你撒尿教程

也谈谈内网穿透,带你一步步体验FRP!

我们家庭宽带基本都是基于NAT,并没有提供公网IP,那么想从公网(Internet)访问家里电脑起的某个端口或服务该怎么办?那就来试试FRP这款内网穿透工具吧!


为啥要内网穿透?

比如你在家里电脑搭配了NAS,提供图片服务,你在外面想用手机同步照片到家里的NAS上?再比如你在办公电脑上启动了一个测试项目(API接口),想让合作小伙伴从公网访问到测试接口等等吧。当然,如果没有类似需求可以略过。

FRP搭建的前提准备条件:

  • 具有公共 IP 地址的服务器(例如:阿里/腾讯等各种云主机)
  • 处于NAT或防火墙后面的内网的机器,可以提供tcp/http等服务(家庭电脑,公司内部电脑都可以)

先看看我呕心沥血画的FRP的原理及数据流程图:

原理详细说明:

FRP Server(Server,IP假设为:)

  • 部署在公网: Server部署在拥有公网IP的服务器上,比如阿里云服务器。
  • 监听请求: Server会监听来自外网的请求(开放端口),并将这些请求转发到对应的内网服务。
  • 配置管理: 通过配置文件,Server会管理所有的客户端连接,新建监听端口,并维护连接状态。
  • 注意:要在防火墙开放需要暴露的端口()

frp Client(Client,IP假设:)

  • 部署在内网: Client部署在需要被访问的内网机器上。
  • 连接Server: Client会主动连接到Server,建立一条隧道。
  • 转发请求: 当有外部请求到达Server时,Server会通过建立的隧道将请求转发给Client服务。
  • 返回响应: Client处理完请求后,将响应结果通过隧道返回给Server,最终传给外网用户。

FRP何许人也?

FRP在内网穿透这块可谓是鼎鼎大名,是一款用 Golang 编写的快速反向代理,它通过转发端口来帮助您将 NAT 或防火墙后面的本地服务器暴露给 Internet。截至目前它支持 TCP 和 UDP,以及 HTTP 和 HTTPS 协议。

话不多说,我们来实战体验:

测试环境:

  • 阿里云主机,有固定公网IP
  • 内网测试服务器,系统Ubuntu2024

下载二进制可执行文件,服务端,客户端可执行程序和配置都在里面

wget https://github.com/fatedier/frp/releases/download/v0./frp_0..1_linux_amd64.tar.gz

tar zxvf frp_0..1_linux_amd64.tar.gz

cd frp_0..1_linux_amd64

服务端配置:

# cat frps.toml

bindPort = #端口随意

auth.method = "token"

auth.token = "mytokent"

启动服务端,这样会监听端口::

frps -c frps.toml

客户端配置:

前提:为了测试,已经有Nginx服务启动在内网机器的端口了,其他服务也可以,如ssh

FRP客户端配置

# cat frpc.toml

serverAddr = "public IP"

serverPort =

auth.method = "token"

auth.token = "mytokent"

[[proxies]]

name = "nginx-simple-web"

type = "tcp"

localIP = ""

localPort =

remotePort =

启动客户端FRP

./frpc -c frpc.toml


观察客户端及服务端日志,可以看到已经链接上FRP服务端了

服务端这时会启动新的端口(配置在客户端,但是需要在服务端的云服务上开通防火墙端口)

访问映射到公网的IP+端口,有域名的的也可以解析域名到公网地址上,使用域名访问

如:http://Public-IP:

以上是针对Linux有些了解的同学,如果内网是windows环境也没问题的,再介绍一个开源项目,地址在这:
https://github.com/luckjiawei/frpc-desktop。

这个开源项目提供了FRP跨平台桌面客户端,可视化配置,轻松实现内网穿透!

FRP应该有很多人介绍过,不过我还是按照我自己的方式,通过一步步的实际操作来验证和体验各种工具的可用性,找到工具的有点和不足之处,希望能帮到您。

[全文完]

原文链接:,转发请注明来源!