Frp 是一個高性能的反向代理應用程式,它可以幫助您輕鬆地管理內網中的服務,並且可以將這些服務暴露給公網。Frp 的主要作用是實現內網穿透,使外網用戶能夠訪問內網中的服務。下面是一些 Frp 的應用場景:
- 內網穿透:通過 Frp,您可以將內網中的服務暴露到公網上,例如 Web 伺服器、FTP 伺服器、SSH 伺服器等。
- 內網遠程桌面:Frp 可以讓您在外網使用遠程桌面連接到內網中的計算機,方便遠程管理和維護。
- 構建雲計算平台:Frp 可以幫助企業構建私有雲環境,提供虛擬機、存儲和計算資源等服務。
- 網絡監控:Frp 可以用於搭建網絡監控系統,通過端口轉發將監控服務暴露到公網上,方便管理員遠程查看。
總之,Frp 是一款十分實用的工具,可以幫助企業和個人輕鬆地管理和訪問內網中的服務。
官網:https://github.com/fatedier/frp/releases/tag/v0.48.0
官方文檔:https://gofrp.org/docs/setup/systemd/
背景#
使用 todesk 個人版 (免費) 連接遠程桌面(win10、win11),在網絡環境比較差的情況下,使用起來很不友好,於是就想使用 frp 這個工具了。
前提#
伺服器需要開放安全組規則
例如以我的阿里雲伺服器為例
具體如何配置請參考:
frp 實現思路:#
首先先明確伺服器端和客戶端是什麼?
FRP 中伺服器端(Server)和客戶端(Client)是指 FRP 這個工具的兩個不同角色。
伺服器端是 FRP 的遠程伺服器,它運行在公網上,並且通常被用來提供內網穿透功能。當您需要從外部網絡訪問內部網絡的設備時,可以在公網上部署一個 FRP 伺服器端,通過配置相應的映射規則,將來自公網的請求轉發到內網設備上。
客戶端是 FRP 工具的本地組件,它運行在需要被訪問的內部網絡設備上,並與遠程伺服器端建立連接。客戶端會向伺服器端註冊自己的身份信息,並定期向伺服器端發送心跳包以保持連接。一旦客戶端成功連接到伺服器端,外部網絡就可以通過伺服器端訪問客戶端所在的內部網絡設備。
環境安裝#
在 Linux 系統下使用 systemd 控制 frps 及配置開機自啟
這裡以 Linux 伺服器(centos)為例,
安裝 systemd
#
yum install systemd
創建並編輯 frps.service
文件(使用 vim 編輯器)#
vim /etc/systemd/system/frps.service
寫入內容#
[Unit]
# 服務名稱,可自定義
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 啟動frps的命令,需修改為您的frps的安裝路徑
# 例如我解壓後的frp安裝包在此路徑下 /root/frp/frps
# ExecStart = /root/frp/frps/frps -c /root/frp/frps/frps.ini
ExecStart = /path/to/frps -c /path/to/frps.ini
[Install]
WantedBy = multi-user.target
如下圖:
上面三步可以參考:https://gofrp.org/docs/setup/systemd/
下載解壓安裝包#
方式一:
在已經創建好的 /root/frp 目錄下,執行下面的命令即可下 frp 安裝包:
wget https://github.com/fatedier/frp/releases/download/v0.48.0/frp_0.48.0_linux_arm64.tar.gz
方式二:
下載地址:https://github.com/fatedier/frp/releases
Linux 版(centos),下載如下圖版本:
將 frp 的 linux 包傳遞 Linux 伺服器的自定義目錄下
例如:
放在 /root/frp/ 目錄(文件夾)下,然後解壓此文件frp_0.48.0_linux_amd64.tar.gz
tar -zxvf frp_0.48.0_linux_amd64.tar.gz
然後對其命名:
mv 原文件名 修改後的文件名
mv frp_0.48.0_linux_amd64 frps
或者直接解壓並重新命名
配置伺服器端(伺服器)#
在解壓 frp 安裝包後的文件夾下對文件進行配置:
例如:frp 解壓在 /root/frp/frps/ 目錄下
對 frps.ini 文件進行配置
vim frps.ini
輸入內容:
[common]
# 伺服器端端口
bind_port = 7000
binf_addr = 0.0.0.0
bind_udp_port = 7000
authentication_method = token
# 認證Token的值包含字母大小寫數字等
token = 自定義token
# 可視化面板
dashboard_user = admin
# Dashboard密碼
dashboard_pwd = 123456
dashboard_port = 7500
保存配置並退出
使用 systemd
命令,管理 frps
# 啟動frp
systemctl start frps
# 停止frp
systemctl stop frps
# 重啟frp
systemctl restart frps
# 查看frp狀態
systemctl status frps
配置 frps 開機自啟:
systemctl enable frps
貼一張可視化面板圖:
配置客戶端 frp#
自定義一個文件夾解壓
配置客戶端(win10 本機)#
在解壓 frp 安裝包後,進入找到 frpc.ini 配置文件並使用文本編輯器打開
配置如下:
# 全局配置
[common]
# 伺服器端公網ip
server_addr = 你的伺服器端公網ip地址,自行修改
# 伺服器端端口
server_port = 7000
authentication_method = token
token = 自定義token
# 反向代理的名稱,可以隨意設置
[RDP]
# RDP 是 TCP 協議的
type = tcp
# 本機 IP
local_ip = 127.0.0.1
# 遠程桌面的默認端口
local_port = 3389
# 外網訪問的端口
remote_port = 7001
注意:伺服器端的配置的 token 與客戶端配置的 token 需要保持一致。
參考:https://cloud.tencent.com/developer/article/1710141
在目錄下輸入 cmd 回車,然後運行 frpc.exe
如圖所示:
就此配置完成
接下來就連接遠程桌面了
連接遠程桌面#
如下圖所示:
計算機為你伺服器端的 ip 地址加端口
例如:139.224.12.12:7001 (外網訪問端口)
由於我電腦使用的微軟郵箱,用戶名就為 [email protected],密碼對應微軟郵箱密碼
如果你使用的是本地賬號登錄,那用戶名就是你本地的那個用戶名,密碼就是開機密碼。
如果不想使用 ip 地址,可以將 ip 地址綁到域名上,或不想輸入端口,可以進行反向代理
總結#
總之,frp 不僅僅只是玩遠程桌面,還可以玩內網穿透、滲透等。
附件#
參考 1:https://cloud.tencent.com/developer/article/1710141
參考 2:https://www.cnblogs.com/zhanggaoxing/p/9221705.html
阿里雲官方地址:https://account.aliyun.com/login/login.htm