背景說明
這兩天由于疫情的原因,很多公司都得在家遠端上班,然後像我們這類小公司有沒有 VPN 這些東西。傳統的遠端回公司隻能依靠 Teamviewer 或者向日葵等工具。但是由于最近使用者量很多,可能會造成卡頓,本着能不花錢就不花錢的原則,就得找一個折中的方案。既不用收費,也不會像花生殼,nat123 這種從第三方别人的伺服器進行資料傳輸。于是便找到了本次的主角:FRP。
項目說明
該項目的開源位址:
https://github.com/fatedier/frp
在文檔中有這樣一個架構圖:
簡單的說明一下:
就是我們需要一個中間機器用于運作 FRP 的 Server(服務端),而且該機器需要有公網 IP。
在我們後端的電腦上門安裝 FRP 的 Client(用戶端),可以在這上面運作 tcp 或者 http 等服務。
使用者 User 可以通過通路官網 IP 的機器映射到後端 FRP 的機器,進行服務通路。
當然,我們本次的需求肯定不是這個,這個隻是用于搞搞什麼 web 通路,遠端連接配接等操作,我們這一次使用的是這個的更新版,架構如下:
說明:
1. 左邊為使用者在家的電腦,右邊為使用者在辦公室的電腦。
2. 公網 IP 的伺服器為公司一台雲上面的伺服器,需要運作 FRP Server(服務端)。
3. 使用者在家裡的電腦和公司的電腦上面需要運作 FRP Client(用戶端)。
安裝配置
1. 下載下傳服務:
https://file.kskxs.com/?dir=frp
我這裡以 0.29 版本為例!
2. 在具有公網 IP 的機器上面安裝配置 Server 端,我這個是 CentOS 7 的,Windows 也是同理,隻是需要下載下傳對應的系統版本:frp_0.29.0_linux_amd64.tar.gz
# 解壓
tar -zxf frp_0.29.0_linux_amd64.tar.gz
mv frp_0.29.0_linux_amd64 /opt/FRP-Server
# 删除不需要的配置
cd /opt/FRP-Server
rm -rf frpc* frps_full.ini frps.ini LICENSE systemd
mkdir logs
添加配置:
vim frps.ini
内容如下:
[common]
# 配置IP端口
bind_addr = 這台機器的公網IP
bind_port = 10000
bind_udp_port = 10001
# 配置管理頁面的端口,使用者密碼
dashboard_port = 10002
dashboard_user = admin
dashboard_pwd = admin
# 配置日志儲存位置和等級
log_file = ./logs/frps.log
log_level = info
log_max_days = 3
# 用戶端連接配接的token,最好是随機生成的
token = H99h8HHXSHXSSSCCC
啟動服務:
./frps -c frps.ini &
背景運作,可以通過檢視端口看到服務!
3. 在公司的電腦上面安裝啟動 FRP Client 端,由于是 Windows,是以需要下載下傳 Windows 的包:frp_0.29.0_windows_amd64.zip
為了便于區分,解壓後将檔案夾重命名為:FRP-remote
同理删除沒用的檔案,隻留下 frpc.exe 和 frpc.ini 即可:
其中 frpc.ini 的内容如下:
[common]
server_addr = 公網伺服器的公網IP位址
server_port = 10000
# 公網伺服器 FRP Server 配置檔案裡面的 token
token = H99h8HHXSHXSSSCCC
# 名字随意,但是待會兒家裡電腦必須和這個一緻
[dylan_p2p_rdp]
type = stcp
# 值随意,但是待會兒家裡電腦必須和這個一緻
sk = dylan123131223131
local_ip = 127.0.0.1
# 由于是遠端桌面,是以是 3389 端口
local_port = 3389
啟動方法,進入檔案夾,在位址欄輸入 cmd,打開指令行:
指令行執行指令:
frpc.exe -c frpc.ini
效果如下類似:
注意:該視窗由于沒用背景運作,是以不能關掉!
顯示 Success 啟動完成以後,在公司的電腦開啟遠端桌面:
開啟遠端:
至此,公司的電腦組態完成!
4. 家裡的電腦組態:
家裡的電腦也是 Windows,是以一樣使用安裝包:frp_0.29.0_windows_amd64.zip
除了配置檔案不一樣,其他配置和公司電腦一樣,但是為了便于區分,我們将其解壓改名為 FRP-vistor,frpc.ini 内容如下:
[common]
# 公網伺服器的IP和端口和token
server_addr = 公網伺服器的公網IP位址
server_port = 10000
token = H99h8HHXSHXSSSCCC
# 自定義的名字
[dyaln_RDP_visitor]
type = stcp
role = visitor
# 這個就是 RPC-remote 中配置的,必須一緻
server_name = dylan_p2p_rdp
# 這個就是 RPC-remote 中配置的,必須一緻
sk = dylan123131223131
bind_addr = 127.0.0.1
# 這個本機遠端端口,自己随便定義,遠端的時候使用
bind_port = 53389
然後在指令行一樣的方式啟動即可,效果如下:
5. 遠端測試:
輸入家裡電腦 配置檔案中的 IP 和端口即可,然後驗證遠端電腦的使用者密碼:
效果如圖:
遠端成功!
特别說明
1. 如果公網伺服器帶寬有限卡頓,可以将兩個 FRP Client 配置中的協定由 stcp 換成 xtcp,但是這種穿透方式不一定能夠成功。在文檔中有這樣一個說明:
2. windows 10 遠端可能出現預設輸入法無法使用輸入中文的問題,公司電腦安裝搜狗輸入法就解決。
3. 服務自帶了儀表盤,之前我們也配置過,可以通過公網 IP + 儀表盤端口登入通路:
至此,基本的遠端辦公功能就實作了!其他複雜功能可以看官方文檔和預設自帶的 full 配置,注釋都很詳細。
最後也感謝這位老哥的開源!!!