FRP(Fast Reverse Proxy)是一款开源的内网穿透工具,用于将局域网内的服务安全地暴露到公网,解决无公网IP或NAT限制导致的访问难题。
什么是 frp
frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。
frp 采用 C/S 模式,将服务端部署在具有公网 IP 的机器上,客户端部署在内网或防火墙的机器上,通过访问暴露在服务器上的端口,反向代理处于内网的服务。
核心功能
- 多种协议支持:客户端服务端通信支持 TCP、QUIC 和 Websocket 等多种协议
- TCP 连接流式复用:在单个连接上承载多个请求,减少连接建立时间,降低请求延迟
- 代理组间的负载均衡
- 端口复用:多个服务可以在同一服务端端口暴露
- P2P 通信:流量不经过服务器中转,充分利用带宽资源
安装部署
您可以从 Github 的 Release 页面下载最新版本的客户端与服务器二进制文件。
解压 frp
tar -zxvf frp_0.36.2_linux_amd64.tar.gz
将 frpc 复制到内网服务所在的机器上,将 frps 复制到拥有公网的 IP 地址机器上,并将他们放在任意目录。
- 服务端配置:
[common]
bind_port = 7000
# frp可视化面板访问端口
dashboard_port = 7500
dashboard_user = 登录用户名
dashboard_pwd = 登录用户密码
vhost_http_port = 8088
- 客户端配置
[common]
server_addr = 101.x.x.x
server_port = 7000
[web]
type = http
local_port = 8088
custom_domains = 101.x.x.x
启动服务器:
./frps -c ./frps.toml
启动客户端:
./frpc -c ./frpc.toml
如果需要长期在后台运行,建议结合其他工具,如 systemd、supervisor。
总结
frp 的功能超级强大,远不止文中介绍的这个小功能这么简单。这里也尝试了通过内网穿透 3389 端口实现远程桌面服务(不要吐槽我为啥这么喜欢研究远程桌面哈),也是很好实现的。项目地址和官方文档放到下面啦,大家快去好好研究研究吧。