史上最简单的frp内网穿透配置教程
frp是什么?
frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。
中文官网:https://gofrp.org/zh-cn/
优点
通过在具有公网 IP 的节点上部署 frp 服务端,您可以轻松地将内网服务穿透到公网,并享受以下专业特性:
- 多种协议支持:客户端服务端通信支持 TCP、QUIC、KCP 和 Websocket 等多种协议。
- TCP 连接流式复用:在单个连接上承载多个请求,减少连接建立时间,降低请求延迟。
- 代理组间的负载均衡。
- 端口复用:多个服务可以通过同一个服务端端口暴露。
- P2P 通信:流量不必经过服务器中转,充分利用带宽资源。
- 客户端插件:提供多个原生支持的客户端插件,如静态文件查看、HTTPS/HTTP 协议转换、HTTP、SOCKS5 代理等,以便满足各种需求。
- 服务端插件系统:高度可扩展的服务端插件系统,便于根据自身需求进行功能扩展。
- 用户友好的 UI 页面:提供服务端和客户端的用户界面,使配置和监控变得更加方便。
原理图:
安装下载
在安装下载前,必须有一个公网的ip,这里我使用服务器ip
下载网址:https://github.com/fatedier/frp/releases
安装服务端(Linux)
也就是在你的公网ip服务器上安装frp服务端
下载到指定的一个目录,比如我这里下载到 /var/frp
,解压
修改frps.toml
配置文件,frps表示服务端,将下面配置内容写下去
bindPort = 7000 # 服务端监听端口
vhostHTTPPort = 8787 # 用于反向代理HTTP主机时使用
auth.method = "token" # 鉴权方式
auth.token = "12121212" # 客户端连接的token
# 后台管理面板配置
webServer.port = 7500 # 后台面板端口号
webServer.addr = "0.0.0.0" # 后台管理地址
webServer.user = "admin" # 后台管理员账号
webServer.password = "pwd" # 后台管理员密码
启动服务
./frps -c ./frps.toml
访问控制面板, ip:7500,注意需要开启端口
安装客户端(Windos)
下载完成解压
修改frpc.toml文件,将下面内容写进去
serverAddr = "xx.xx.xx.xx" # 服务端IP地址, 这里修改成linux的ip
serverPort = 7000 # 服务端通信端口
auth.method = "token"
auth.token = "12121212" # token 与服务端保持一直
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22 # 本地端口号
remotePort = 6000 # 公网端口号
[[proxies]]
name = "ps"
type = "http"
localIP = "127.0.0.1" # 本地监听地址和端口
localPort = 7001 # 本地监听端口
remotePort = 8787 #公网端口号
customDomains = ["xx.xx.xx.xx"] # 域名或者IP, 这里也是修改成linux的ip
当远程端口监听到有请求时,会将请求转发到本地端口,例如: http://xx.xx.xx.xx:8787 -> http://127.0.0.1:7001
启动客户端
frpc.exe -c frpc.toml
测试
我本地有个Springboot项目,启动项目
访问:http://ip:8787/api/hello,发现能够访问到本地项目(记得开放端口)