frp內網穿透工具使用,附遠程桌面


前言

由於之前做devops,需要給用戶支持,為了方便遠程,首先使用的是向日葵,但是這個收費就算了,收費后效果也不大(很顯然著的是去年疫情時候遠程辦公),后面就查詢有沒遠程工具,繼而發現了frp,覺得很好用,配置對於首次使用的人來說,稍微有點復雜,因此記錄下。

frp介紹

frp簡單來說就是個內網穿透工具,提供了支持tcp的轉發,這也是我們最常用的功能,下載地址和文檔請參考frp github文檔

如果配置ssh、http,也是類似,具體參考文檔

使用frp進行遠程桌面

windows默認提供了遠程桌面功能,但是由於電腦都是局域網,沒有公網ip,是無法進行遠程桌面的,如果使用內網穿透工具frp,就可以實現。

配置frp tcp

以家中電腦遠程辦公室電腦為例

1.准備一個雲服務端(具有公網ip,比如阿里雲、騰訊雲、京東雲等),在雲服務器上安裝frp

從github下載frp,解壓后frp目錄是/etc/frp

服務端配置

#vim /etc/frp/frps.ini文件
#文件 frps.ini
[common]
bind_port = 7000

#啟動frp
nohup /etc/frp/frps -c /etc/frp/frps.ini &

客戶端(辦公室電腦)配置

同理下載frp安裝包,解壓后(目錄D:\tools\frp_0.31.2_windows_amd64),編輯frpc.ini文件

#frpc.ini
[common]
server_addr = 雲服務器ip
server_port = 7000

#不能相同
[office_demo_mstsc]
type = tcp
local_ip = 127.0.0.1
local_port = 3389   #3389是windows的遠程桌面端口,如果是ssh默認是22
remote_port = 7002  #把雲服務器的7002映射到辦公pc的3389端口,即遠程桌面端口

Windows開機啟動frp

winkey+r,輸入shell:startup,進入開機啟動目錄,創建frpc.vbs文件,內如如下

set ws=wscript.createobject("wscript.shell")
ws.run "D:\tools\frp_0.31.2_windows_amd64\frpc.exe -c D:\tools\frp_0.31.2_windows_amd64\frpc.ini",0

雙擊frpc.vbs啟動frp,在Windows進程中可以查看到frpc.exe,同時在雲服務器netstat -an |grep 700,發下7002端口處理監聽狀態。

這樣就可以從家中電腦進行遠程桌面到辦公室電腦: 遠程地址 雲服務器ip:7002 ,輸入辦公室電腦賬戶密碼即可登錄。

這個做法就是使用的frp的tcp轉發功能,把雲服務器的7002端口流量轉發到辦公電腦的3389端口,這種方法簡單,但是由於把內網的辦公電腦暴露到了外網,不安全。我由於使用此方法遠程家中電腦,由於家里電腦密碼太簡單,導致被電腦被黑,電腦密碼被修改而無法登陸。因此要考慮使用安全的遠程方法。

配置stcp

stcp即securt tcp,安全的tcp

由於frp tcp需要把內網端口暴露到公網,無法保證安全性,當然電腦密碼設置的復雜也可以,但是誰天天去輸入那么復雜的密碼登錄電腦呢,很不方便,因此采用安全的方式進行遠程桌面,frp提供了stcp即secret tcp,安全的tcp,這種方式流量也是經過雲服務器,但是內網端口並不進行暴露,而且經過認證,很安全。

雲服務器配置

#vim /etc/frp/frps.ini文件
[common]
bind_port = 7000
token = 123456  #token配置,客戶端要保持一致,也可以不加
dashboard_port = 7501  #dashboard端口,在瀏覽器輸入 雲服務ip:7501 即可訪問查看
dashboard_user = frp  
dashboard_pwd = frp123456  #建議密碼復雜

#啟動
nohup /etc/frp/frps -c /etc/frp/frps.ini &

在瀏覽器輸入 雲服務ip:7501 即可訪問查看儀表盤

日志直接查看/etc/frp/nohup文件即可

公司電腦配置(受控方)

[common]
server_addr = 雲服務器ip
server_port = 7000
token = 123456  # 如果服務端設置了token,那客戶端要保持一致才連得上

#服務名不能相同,
[office_demo_mstsc]
type = stcp  #使用stcp
sk = mstsc123   #安全key,訪問端也要保持一致
local_ip = 127.0.0.1
local_port = 3389
#remote_port = 7002  #發現去除了公網監聽 stcp模式以服務名的形式匹配,不再需要remote_port

同理,使用自己編寫的frp.vbs腳本進行啟動

家里電腦配置(控制方)

[common]
server_addr = 雲服務器ip
server_port = 7000
token = 123456 # 如果服務端設置了token,那客戶端要保持一致才連得上

#訪問公司電腦
[office_demo_mstsc_visitor]
type = stcp
# stcp 的訪問者
role = visitor
sk = mstsc123 #保持和受控方frp內的sk相同,否則無法通過
# 要訪問的 stcp 代理的名字
server_name = office_demo_mstsc #受控方的服務名稱
# 綁定本地端口用於訪問 SSH 服務
bind_addr = 127.0.0.1
bind_port = 7555 #本地監聽端口

然后家中電腦 mstsc,輸入127.0.0.1:7555 輸入公司電腦的賬戶密碼即可訪問

這種方式最安全,受控方只能被配置的使用方(自己家里電腦)遠程。但是比較麻煩

同理,如果要使用公司電腦控制家中電腦,在兩邊的frpc.ini配置即可。

參考 https://gofrp.org/docs/examples/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM