一,简介
FRP(Fast Reverse Proxy)是一款使用Go语言开发的高性能的反向代理工具,主要用于内网穿透,使得外部网络可以访问内网中的服务。FRP 支持 TCP、UDP 协议,适用于多种应用场景,如远程桌面、Web 服务、游戏服务器等。
二,下载安装
在GitHub上下载即可;
支持Linux和Windows等多种版本;
下载完成之后在本地解压;
FRP 包含两个主要组件:frps
(服务端)和 frpc
(客户端)
包括两个可执行文件和两个配置文件;
对于S端的配置文件;
[common]
bind_port = 7000
#bind_port表示服务端要监听的端口
对于C端的配置文件;
[common]
serverAddr = "127.0.0.1"
serverPort = 7000
[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
#server_addr表示服务端的公网 IP 地址
#server_port:服务端的监听端口
#[[proxies]]表示一个代理的服务
#type表示服务类型,这里为 tcp
#local_ip:本地服务的 IP 地址
#local_port:本地服务的端口
#remote_port:远程服务的端口
三,实验
首先来看拓扑结构;
VPS是一台具有公网IP的云服务器;
在这里充当Server端,修改其配置文件;
[common]
bind_port = 7000
运行命令;
./frps -c frps.ini
在本地开始监听7000端口;
由一台内网机器来充当客户端,修改其配置文件;
[common]
serverAddr = "127.0.0.1"
#这里的IP地址填写VPS的IP地址,也就是公网的IP
serverPort = 7000
#端口和服务端配置文件的保持一致
[[proxies]]
name = "22端口的转发"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
#本地的IP地址及端口
remotePort = 6000
#转发到服务器的端口
这个配置文件的目的是将本地22端口的流量通过服务端的7000端口,抓发给6000端口;
运行命令;
./frpc -c frpc.ini
至此配置完成;
现在使用渗透测试人员的电脑,访问VPS的6000端口就相当于访问内网机器的22端口;
上述方式仅仅是实现了某个端口的转发;
通过修改Client端的配置文件,也可以实现全局的代理;修改如下:
[common]
serverAddr = "127.0.0.1"
#这里的IP地址填写VPS的IP地址,也就是公网的IP
serverPort = 7000
#端口和服务端配置文件的保持一致
[[proxies]]
type = tcp
plugin = socks5
#这里还可以使用http协议
remotePort = 6000
#转发到服务器的端口