Frp是一款基于Go语言的反向代理应用, 支持多种协议包括:TCP、UDP、HTTPS、HTTP、STCP、XTCP等, 通过使用Frp我们可以很轻松的实现内网穿透。 下面介绍一下这几种协议在Frp中的用法。
通过Frp将内网的ssh服务以tcp协议的形式暴露到互联网上, 这个框架的原理图如下所示:
框架中frp服务端的配置如下:
frp客户端的配置如下:
通过frp将内网的webService以HTTP协议暴露给互联网,对应的原理如下图所示:
服务端的配置如下:
客户端的配置如下:
通过Frp将内网的DNS请求通过UDP协议暴露给互联网, 应的原理图如下图所示:
服务端的配置如下所示:
客户端的配置如下所示:
为了降低将某些服务直接暴露到公共网络带来的安全风险, Frp提供了STCP(Secret-TCP)协议, 该协议需要使用预共享密钥来从其他客户端访问该服务,从而提高访问的安全性。 STCP协议的原理如下图所示:
服务端的配置如下所示:
被访问端的配置如下所示:
访问端的配置如下图所示:
在这种模式下访问端和被访问端都需要安装frpc客户端, 且两边都需要配置好相同的秘钥。相较于TCP协议,它的优点如下: 1.Frps服务端只需要暴露一个端口就可以了,增强了安全性。 2.由于访问端和被访问端通过秘钥访问,且都需要安装frpc,提高了服务暴露的安全性。
xtcp是frp新推出的一种协议,用来解决客户端之间直接传输大量数据的问题。由于协议还不完善, 这种传输方式并不适用于所有的NAT设备。 xtcp协议通信的原理如下图所示:
frp服务端的配置如下所示:
frp被访问的客户端的配置如下:
frp访问端的配置如下:
访问方式如下:
服务端只需要开放对应的端口就行了, 客户端对应的配置如下:
服务端的配置如下所示:
客户端的配置如下所示:
通过http://x.x.x.x:6000/static/ 访问frpc所在机器上的文件
frp的服务端frps提供了对应的web端控制台,通过该控制台, 我们可以监控frps的统计情况, 启动服务端控制台的配置如下所示:
http访问控制的配置如下:
https访问控制台的配置如下所示:
frpc客户端配置控制台访问