利用frp实现内网端口转发

时间:2024-03-07 11:48:38

前言

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端口,连接成功

 

 总结

内网端口转发和反向隧道的建立大多数工具都是这种方式,内网做客户端主动向外网服务端通信,了解了这种方式就能更好的理解大多数端口转发的操作了。