FRP—— Fast Reverse Proxy
軟件介紹:
frp is a fast reverse proxy to help you expose a local server behind a NAT or firewall to the Internet. As of now, it supports TCP and UDP, as well as HTTP and HTTPS protocols, where requests can be forwarded to internal services by domain name. frp also has a P2P connect mode.
frp 是一個可用於內網穿透的高性能的反向代理應用,支持 tcp, udp 協議,為 http 和 https 應用協議提供了額外的能力,且嘗試性支持了點對點穿透。
准備:
- 具備公網IP服務器(Ubuntu 18.04.4 LTS,阿里雲)
- 本地計算機(Ubuntu 20.04 LTS)
操作:
1.FRP軟件包
從github頁面下載FRP軟件包:https://github.com/fatedier/frp/releases
從中選擇適合自己系統及架構的版本下載,並將軟件包分別放在服務器和本地計算機中,任意位置均可。具體方法可以使用wget,也可以使用scp,方法不限。此次設置將軟件包放在了/home路徑下。
版本列表如下:
注1:軟件包中包含服務器端和客戶端兩種程序,以frps和frpc區分。frps即為frp server,frpc即為frp client。
注2:可在終端中輸入指令arch來查看架構。
root@iZ2zejeormv0s1jgutmmejZ:~# arch
x86_64
2.服務器FRP程序設置(frp server)
解壓軟件包:
tar -zxvf frp_0.33.0_linux_386.tar.gz
進入解壓后軟件包目錄,並刪除客戶端文件:
rm -rf frpc*
3.服務器FRP配置(frp server)
打開frps.ini文件,並編輯參數:
設置bind_port參數,此端口用來連接客戶端。
# frps.ini [common] bind_port = 7000
設置dash_board參數,分別設定端口號、登錄用戶名和登錄密碼。設定此參數后可以通過瀏覽器查看FRP的服務信息。
dashboard_port = 7201 dashboard_user = user dashboard_pwd = password
注:通過瀏覽器輸入“服務器IP:7201”進行訪問。
4.本地計算機FRP程序設置(frp client)
解壓軟件包:
tar -zxvf frp_0.33.0_linux_386.tar.gz
進入解壓后軟件包目錄,並刪除服務器端文件:
rm -rf frps*
5.客戶端FRP配置(frp client)
[common]下設置服務器IP及端口,端口須與服務器中frps.ini文件的設置的相同。
[ssh]設置ssh服務映射:
local_port:設置為本地計算機ssh端口22
remote_port:設置與local_port相連接的服務器端口。
# frpc.ini [common] server_addr = x.x.x.x server_port = 7000 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 7200
注:可添加更多其它服務映射,具體設置請參考官方文檔。
6.端口檢查
確保服務器和本地計算機相關端口已打開,尤其是服務器會有相應的策略組,需在服務器控制台開啟。可使用nmap等工具進行測試。
7.啟動服務
在服務器運行服務端程序:
./frps -c frps.ini
服務端程序運行成功則顯示如下信息:
2020/07/29 11:33:10 [I] [service.go:178] frps tcp listen on 0.0.0.0:7000 2020/07/29 11:33:10 [I] [service.go:277] Dashboard listen on 0.0.0.0:7500 2020/07/29 11:33:10 [I] [root.go:209] start frps success
在本地計算機運行客戶端程序:
./frpc -c frpc.ini
客戶端程序運行成功則顯示如下信息:
2020/07/29 05:42:56 [I] [service.go:282] [26687067e8a12f6f] login to server success, get run id [26687067e8a12f6f], server udp port [0] 2020/07/29 05:42:56 [I] [proxy_manager.go:144] [26687067e8a12f6f] proxy added: [ssh] 2020/07/29 05:42:56 [I] [control.go:179] [26687067e8a12f6f] [ssh] start proxy success
8.測試
從別的計算機上通過以下指令則可連接到本地計算機。
ssh -oPort=7200 user@x.x.x.x
至此,成功從外網訪問內網計算機,實現內網穿透。
注:更多功能使用及介紹可參考frp中文文檔。
frp中文檔:https://github.com/fatedier/frp/blob/master/README_zh.md
2020-07-29 14:10:11