轉載自:https://www.appinn.com/frp/
什么是 Frp?
內網穿透工具有很多,其中 Frp (Fast Reverse Proxy) 是比較流行的一款。FRP 是一個免費開源的用於內網穿透的反向代理應用,它支持 TCP、UDP 協議, 也為 http 和 https 協議提供了額外的支持。你可以粗略理解它是一個中轉站,幫你實現 公網 ←→ FRP(服務器) ←→ 家庭內網
的連接,讓內網里的設備也可以被公網訪問到。
官方提供的 Frp 架構原理示意圖
而目前 FRP 還推出了“點對點穿透”的試驗性功能,連接成功后可以讓公網設備直接跟內網設備“點對點”傳輸,數據流不再經過 VPS 中轉,這樣可以不受服務器帶寬的限制,傳輸大文件會更快更穩定。當然,此功能並不能保證在你的網絡環境 100% 可用,而且還要求訪問端也得運行 FRP 客戶端 (因此目前手機是無法實現的,只有電腦可以)。由於實現條件較多,所以有文件傳輸需求的朋友還是建議買帶寬稍大一點的 VPS 會比較省心。
簡單的 Frp 安裝配置教程:
現在假設你已經有一台 VPS 服務器了,那么只需按照下面的步驟,一步一步來來即可搞定 FRP 的安裝和配置。當然,這里涉及到一些 Linux 基礎操作命令,如果完全未接觸過的朋友,可以找一些「Linux 入門教程」先了解一下。
1、服務器端安裝配置 Frp:
FRP 使用 Go 語言開發,可以支持 Windows、Linux、macOS、ARM 等多平台部署。FRP 安裝非常容易,只需下載對應系統平台的軟件包並解壓就可用了。這里以 Linux 系統為例:
export FRP_VERSION=0.29.1 sudo mkdir -p /etc/frp cd /etc/frp sudo wget "https://github.com/fatedier/frp/releases/download/v${FRP_VERSION}/frp_${FRP_VERSION}_linux_amd64.tar.gz" sudo tar xzvf frp_${FRP_VERSION}_linux_amd64.tar.gz sudo mv frp_${FRP_VERSION}_linux_amd64/* /etc/frp
- 其中,第一行等號后面的
0.29.1
是 frp 的版本號 (截稿為止最新版本)。你安裝的時候可以到官網查看下有沒更新的版本,只需將新版本的號碼替換掉0.29.1
即可。 - FRP 默認提供了 2 個服務端配置文件,一個是簡化版的
frps.ini
,另一個是完整版的frps_full.ini
。初學者只需用簡版配置即可,在簡版frps.ini
配置文件里,默認設置了監聽端口為7000
,你可以按需修改它。
防火土嗇和安全組開放指定的端口:
請一定要記住,你需要將服務器的系統防火土嗇,以及阿里雲、騰訊雲后台里找到“安全組策略”的相關配置,設置 7000
或你修改過的對應端口的「允許入站和出站」,否則會一直連接不上的哦!!!這個切記!!
啟動 FRP 服務端
./frps -c ./frps.ini
如服務器使用 Win 系統,假設解壓到 c:\frp
文件夾,那么只需這樣啟動:
c:\frp\frps.exe -c c:\frp\frps.exe
2、配置 Frp 客戶端 (安裝在內網的機器上)
設置好服務器上 Frp 服務端后,我們就需要在內網的機器上安裝 Frp 的客戶端了。 Frp 的客戶端程序 frpc (frpc.exe) 與服務器端都在同一個壓縮包里, 我們同樣下載對應系統版本的軟件包。
你可以將 Frp 客戶端安裝在內網的 Windows 電腦、Linux 設備 (比如樹莓派) 或者 NAS,甚至部分路由器等設備上。Linux 客戶端的安裝和啟動與服務器端沒有太多區別,只是對應運行程序是 frpc 而不是 frps。
為了簡單起見,我們這里以 Windows 電腦來安裝 Frp 客戶端,因為 Frp 是綠色程序,下載軟件包回來解壓后,啟動 frpc.exe
即可。
但在啟動前,我們需要先修改配置文件,我們以配置“Windows 遠程桌面控制”以及“群暉 NAS 管理界面”為例。假設你的 FRP 服務端所在的 VPS 公網 IP 為 1.2.3.4
, 而客戶端是 Win 電腦,我們來修改 frpc.ini
配置文件:
[common] # server_addr 為 FRP 服務端 (VPS 服務器) 的公網 IP server_addr = 1.2.3.4 server_port = 7000 [DSM] type = tcp local_ip = 192.168.1.40 #群暉 NAS 在局域網中的內網 IP local_port = 5000 remote_port = 7001 [RDP] type = tcp local_ip = 192.168.1.30 #電腦在局域網中的內網 IP (如是本機,也可使用 127.0.0.1) local_port = 3389 remote_port = 7002
這樣就在本地上新增了“DSM”和“RDP”兩個可供公網訪問的服務了 (它們名稱可以自己取),這里分別對應內網的群暉 NAS 的后台管理界面和 PC 遠程桌面。如果你需要添加更多的設備和服務供外網訪問,那么只需照樣畫葫蘆,指定正確的 IP 地址和端口號即可。
注意放行端口
每個服務的 remote_port 是遠程訪問時要用到的端口號,注意這些端口號也要在服務器的防火土嗇和安全組里放行才能順利訪問的,如上面的 7001、7002。
啟動 FRP 客戶端:
假設你已將 Frp 的客戶端解壓縮到 c:\frp
目錄中,那么啟動 Frp 客戶端的命令就是:
c:\frp\frpc.exe -c c:\frp\frpc.ini
Linux 啟動 Frp 客戶端命令:
./frpc -c ./frpc.ini
啟動之后看到 “start proxy success”字樣就表示啟動成功了。
3、進行遠程訪問:
前面搞了這么多,我們終於可以正式使用 Frp 內網穿透來進行遠程訪問內網里的設備了!按照上面的配置,我們想要訪問群暉 NAS 的界面,只需打開瀏覽器,在地址欄輸入 服務器公網IP:7001
即可訪問到群暉后台管理界面。
而如果需要遠程桌面連接到家里的 Windows 電腦,那么打開“微軟遠程桌面客戶端”后,在地址欄里填入 服務器公網IP:7002
即可連接。
由此,借助 Frp,你就能輕松地為本地局域網內網的設備提供公網直接訪問的能力了,你可以用 Frp 來轉發包括但不限於 ssh、http、https、轉發 Unix 域套接字等服務。
上面只是最基礎的教程,Frp 還有很多很多高級功能,比如給 Web 增加密碼保護、點對點內網穿透、設置端口白名單等等,Frp 官網上也提供了很詳細的文檔,感興趣的朋友可以去研究一下。
寫在后面:
最后,有了 Frp,我們就能輕松解決沒有公網 IP 的老難題了!無論家里的 NAS 、電腦還是其他網絡設備,都能輕松在外訪問,這可以說是無公網 IP 用戶必備的工具了。
希望這篇簡單 Frp 入門教程能對有遠程訪問需求的同學有所幫助吧。畢竟 Frp 帶來的便利性是非常大的,特別是需要出差移動辦公的用戶,值得大家去研究和折騰一番。與 Frp 同類的軟件還有 Ngrok、n2n、lanproxy 等,它們工作方式都大同小異,都需要一台服務器作為中轉。