前言
frp 是一个高性能的反向代理应用,支持 tcp, udp, http, https 协议。
-
利用处于防火墙后的机器,对外网环境提供 http 或 https 服务。
-
对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。
-
利用处于防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司局部环境的主机。
(摘自百度百科)
环境准备
准备一台内网windows服务器虚拟机
一台公网服务器
一台pc(不要是windows虚拟机的宿主机)
内网windows服务器 192.168.244.130 公网linux服务器 152.X.X.X
设置内网Windows服务器防火墙不放行3389端口
frp下载
Github地址:https://github.com/fatedier/frp/releases
本次试验用的是一台linux服务器和一台windows服务器,下载的时候记得下载对应操作系统
frp_0.34.0_windows_amd64.zip frp_0.34.0_linux_amd64.tar.gz
开整
本次的试验目的是在另一台pc上连接内网服务器的3389端口,在环境搭建阶段我们已经将防火墙打开,而且由于pc和内网服务器不在同一网段,所以是无法直接连3389的,因此,我们需要将内网服务器的3389转发出来,转发到公网服务器的一个端口上,这样我们通过连接公网服务器的某个端口,就可以访问内网服务器的3389了。整个流程如下。(没啥专业的画图软件只能用windwos自带的画图了,原谅我的灵魂画术)
第一步 将frp上传到公网服务器和内网服务器上
将对应操作系统的包分别上传到两台服务器上
第二步 配置客户端及服务端,并启动
我们将window服务器作为客户端,公网服务器作为服务端
先配置服务端
编辑frps.ini
[common] bind_port = 7000
打开文件默认就是这个,不用动,保持这样就行,这是配置服务端的端口,然后用下面的命令启动服务端
./frps -c ./frps.ini
启动完了以后先放着,再配置客户端
编辑Windows服务器上的frpc.ini,做如下配置
[common] server_addr = 152.x.x.x #服务端ip,也就是公网服务器ip server_port = 7000 #服务器端口
[ssh] #这个是节点名称,可以随便写 type = tcp #通信协议 local_ip = 127.0.0.1 #本地地址 local_port = 3389 #要转发的端口 remote_port = 6000 #要转发到的远程端口
配置完成后,运行以下命令启动客户端
frpc.exe -c frpc.ini
随后就能看到服务端显示有新的客户端连进来了
第三步 连接远程桌面
使用pc连接公网服务器的6000端口,连接成功
总结
内网端口转发和反向隧道的建立大多数工具都是这种方式,内网做客户端主动向外网服务端通信,了解了这种方式就能更好的理解大多数端口转发的操作了。