作为一名开发者,有很多场景需要用到内网穿透,比如:我们在接入一些大平台做第三方应用时,在本地开发微信公众号工具的时候需要让微信平台能否访问到本地提供的接口。除此之外,还有很多其他场景,也会用到,比如:把放在家里的 NAS 或服务器暴露到公网上,这样在外面的时候也可以随时随地的访问。
说到内网传统,第一个想到的是国内最早的一款知名软件:花生壳。但是今天不是要推荐它,而是要推荐一个更牛的开源项目:frp!该项目目前已经收获了 69.9 K Star,在 GitHub 上获得了极大的认可!
项目介绍
frp 是一个专注于内网损坏的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以通过公有方式将内网服务以安全、便捷的方式进行网IP节点的中转暴露到公网。
项目特性
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
- 客户端服务端通信支持 TCP、QUIC、KCP 以及 Websocket 等多种协议。
- 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间,降低请求延迟。
- 代理组间的负载均衡。
- 端口复用,多个服务通过同一个服务端端口暴露。
- 支持 P2P 通信,流量不经过服务器中转,充分利用带宽资源。
- 多个原生支持的客户端插件(静态文件查看,HTTPS/HTTP 协议转换,HTTP、SOCK5 代理等),便于独立使用
- frp 客户端完成某些工作。
- 高度扩展性的服务端插件系统,易于结合自身需求进行功能扩展。
- 服务端和客户端 UI 页面。
其他支持
除了上面的玩法之外,frp还有很多玩法,比如:
-
自定义域名访问内网的 Web 服务 -
转发 DNS 查询请求 -
转发 Unix 域套接字 -
对外提供简单的文件访问服务 -
为本地 HTTP 服务启用 HTTPS -
点对点内网穿透
篇幅有限,具体如何配置这里就不多说了,有需要的读者可以直接查看官方文档,均有详细的服务端客户端配置案例。
最后,奉上相关链接
开源地址
https://github.com/fatedier/frp