前言
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端口,連接成功
總結
內網端口轉發和反向隧道的建立大多數工具都是這種方式,內網做客戶端主動向外網服務端通信,了解了這種方式就能更好的理解大多數端口轉發的操作了。