最近工作中遇到一个问题,在一个vpc下面有两台虚拟机,其中一台机器绑定了eip可以访问互联网,另一台没有绑,没有公网的机器想通过绑定eip的机器来访问公网,我采用了frp中的sock5代理来实现这个需求,首先分别介绍一下frp和socks5代理协议。
1、frp简介
frp 是一个可用于内网穿透的高性能的反向代理应用,支持TCP、UDP协议,为HTTP和HTTPS应用协议提供了额外的能力,且尝试性支持了点对点穿透。frp 采用go语言开发。更多的人使用 frp 是为了进行反向代理,满足通过公网服务器访问处于内网的服务,如访问内网web服务,远程ssh内网服务器,远程控制内网NAS等,实现类似花生壳、ngrok等功能。而对于内网渗透来讲,这种功能恰好能够满足我们进行内网渗透的流量转发。FRP最大的一个特点是使用SOCKS代理,而SOCKS是加密通信的,类似于做了一个加密的隧道,可以把外网的流量,通过加密隧道穿透到内网。效果有些类似于VPN。
2、SOCKS介绍
SOCKS全称是SOCKet Secure,是一种网络传输协议,主要用于客户端与外网服务器之间通讯的中间传递。在OSI模型中,SOCKS是会话层的协议,位于表示层与传输层之间,最新协议是SOCKS5。
SOCKS5原理
①首先客户端向代理服务器发出请求信息,用以协商版本和认证方法。随后代理服务器应答,将选择的方法发送给客户端。
②客户端和代理服务器进入由选定认证方法所决定的子协商过程,子协商过程结束后,客户端发送请求信息,其中包含目标服务器的IP地址和端口。代理服务器验证客户端身份,通过后会与目标服务器连接,目标服务器经过代理服务器向客户端返回状态响应。
③连接完成后,代理服务器开始作为中转站中转数据。
3、操作步骤
1、在vm2 上下载frp
访问网址https://github.com/fatedier/frp/releases
根据自己的操作系统下载对应的版本
2、然后进行解压,解压之后下面有几个文件
3、编辑frpc.toml和frps.toml。
frpc.toml
frps.toml
4、然后分别启动frps和frpc
./frps -c frps.toml
./frpc -c frpc.toml
5、然后vm1便可以通过访问vm2ip:1080来访问到公网