FRP代理
附上官网的部分介绍:
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
客户端服务端通信支持 TCP、QUIC、KCP 以及 Websocket 等多种协议。
采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间,降低请求延迟。
代理组间的负载均衡。
端口复用,多个服务通过同一个服务端端口暴露。
支持 P2P 通信,流量不经过服务器中转,充分利用带宽资源。
多个原生支持的客户端插件(静态文件查看,HTTPS/HTTP 协议转换,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
高度扩展性的服务端插件系统,易于结合自身需求进行功能扩展。
服务端和客户端 UI 页面。
https://github.com/fatedier/frp/tree/dev
本地虚拟机环境
虚拟网卡配置
网络环境具体如下:
主机 | 服务类型 | 虚拟网卡 | 网卡模式 | IP地址 |
---|---|---|---|---|
WIN0 | 仿攻击机 | VM0 | 桥接 | 192.168.0.108 |
Centos | 仿VPS | VM0 | 桥接 | 192.168.0.106 |
Win1 | DMZ服务器 | VM0 VM8 | 桥接 NAT |
192.168.0.107 192.168.234.150 |
WIN2 | 内网1服务器 | VM8 VM10 | NAT HOST |
192.168.234.149 10.10.22.129 |
WIN3 | 内网2服务器 | VM10 | HOST | 10.10.22.128 |
这样设置的原因为了仿真一个两层局域网环境,纯为了本地学习FRP代理工具使用的方法。
WIN0、Centos、win1机器可以互通。
Win1、WIN2可以互通,WIN2只有Win1、WIN3可以发访问。
WIN3只有WIN2可以访问。
一层代理
目的:通过使用win1的socks代理,可以访问win2服务器环境,达到可以在本地win0机器上访问192.168.234.xxx网段的服务。
centos vps
配置 frps.ini:
[common]
bind_port = 7000 # VPS上的FRP服务端绑定的端口
启动服务端:
./frps -c frps.ini
win1 :
192.168.0.107 桥接
192.168.234.150 NAT
frpc.ini 配置:
[common]
server_addr = 192.168.0.106 # 指向FRP服务端绑定的IP地址
server_port = 7000 # 指向FRP服务端绑定的端口
[socks5]
type = tcp
remote_port = 1081 # 要转发到VPS的远程端口
plugin = socks5
启动客户端:
frpc.exe -c frpc.ini
在攻击机就可以使用代理进行访问win2服务器。
代理配置:
使用浏览器配置代理或者proxychains4、proxifier等工具配置IP和端口。
192.168.0.106:1081
然后访问234网段服务(192.168.234.149搭建了phpinfo):
二层代理
目的:通过使用win2的socks代理,可以访问win3服务器环境,达到可以在本地win0机器上访问10.10.22.xxx网段的服务。
centos vps配置frps.ini和一层代理一样:
[common]
bind_port = 7000 # VPS上的FRP服务端绑定的端口
启动服务端:
./frps -c frps.ini
win1:
192.168.0.107 桥接
192.168.234.150 NAT
配置frpc.ini:
[common]
server_addr = 192.168.0.106 # 指向FRP服务端绑定的IP地址
server_port = 7000 # 指向FRP服务端绑定的端口
[socks5_forward]
type = tcp # 所使用的协议
local_ip = 192.168.234.150 # 本地监听的IP地址
local_port = 1082 # 要转发的本地端口
remote_port = 1081 # 要转发到的远程端口
启动客户端:
frpc.exe -c frpc.ini
配置win1的frps.ini:
[common]
bind_ip = 192.168.234.150 # 在win1的FRP服务端绑定的IP地址
bind_port = 7000 # 在win1的FRP服务端绑定的端口
启动服务端:
./frps -c frps.ini
win2:
[common]
server_addr = 192.168.234.150 # 指向win1 FRP服务端绑定的IP地址
server_port = 7000 # 指向win1 FRP服务端绑定的的端口
[socks5]
type = tcp
remote_port = 1082 #代理所使用的端口,会被转发到服务端
plugin = socks5 # 代理的类型
启动客户端:
frpc.exe -c frpc.ini
代理配置:
使用浏览器配置代理或者proxychains4、proxifier等工具配置IP和端口。
192.168.0.106:1081
然后访问22网段服务(10.10.22.128搭建了phpinfo):