沒有公網IP的用戶如何訪問內網,比如你在公司有台電腦,這時你在家里想要訪問公司電腦文件。那么這時候有什么辦法?有人說我用公司VPN,或者公司自有公網IP端口映射,當然辦法有很多種,前提條件都是要有公網IP。
今天給大家介紹一款好用內網穿透工具FRP,FRP全名:Fast Reverse Proxy。FRP是一個使用Go語言開發的高級的反向代理應用,可以幫助您輕松地進行內網穿透,對外網提供服務,FRP支持TCP,UDP,HTTP,HTTPS等協議類型,支持並且Web服務根據域名進行路由轉發。
開源FRP項目地址:https : //github.com/fatedier/frp
FRP的作用
- 利用位於內網或防火牆后的機器,對外網環境提供HTTP、HTTPS或者遠程服務。
- 對於HTTP,HTTPS服務支持基於域名的虛擬主機,支持自定義域名綁定,使多個域名可以共享一個80端口。
- 利用位於內網或防火牆后的機器,對外網環境提供TCP和UDP服務,例如在家里通過SSH訪問位於公司內網環境內的主機。
FRP架構

FRP安裝
FRP采用Go語言開發,支持Windows,Linux,MacOS,ARM等多平台部署。FRP安裝非常容易,只需下載對應系統平台的軟件包,並解壓就可用了。
這里以Linux為例:
wget https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gz tar xzvf frp_0.36.2_linux_amd64.tar.gz
最新版本下載地址:https://github.com/fatedier/frp/releases
FRP配置
服務端配置
以Linux為例,替換為FRP兩個服務端配置文件,一個是簡版的frps.ini,另一個是完整版本frps_full.ini。
先來看下簡版的frps.ini,通過這個配置可以快速的建造起一個FRP服務端。
vi frps.ini [common] bind_port = 7000 token = asdfgh #為了安全這里也可以加上一個token驗證
- 默認配置中監聽的是7000端口,可根據自己實際情況修改。
- 防火牆要放行該端口
啟動FRP服務端
chmod 700 frps frps.ini ./frps -c ./frps.ini
服務端簡單配置完成
PC客戶端配置
類似,或者FRP也可以稱為兩個客戶端配置文件,一個是簡版的frpc.ini,另一個是完整版本frpc_full.ini。
同樣以簡版的frpc.ini文件為例。
[common] server_addr = 公網IP server_port = 7000 token = asdfgh #token和服務端一樣 [ssh] type = tcp local_ip = 192.168.2.21 #內網電腦地址或者填寫本機環回地址127.0.0.1 local_port = 3389 #內網遠程端口 remote_port = 7000
打開cmd,運行frpc.exe
cd C:frp_0.36.2_windows_amd64 frpc.exe
客戶端運行如下圖

至此客戶端已配置完成,為了方便客戶端重啟失效,這里加個運行腳本,以便無論何時都可以遠程(只要客戶端PC是開啟狀態)
一、使用bat腳本后台運行
1、新建bat批處理文件,內容如下
cd C:\frp_0.37.0_windows_amd64 frpc.exe -c frpc.ini
如圖:
打開剛新建的bat文件,運行圖和cmd一樣

2、新建vbs開機自動啟動腳本文件,命名frpc.vbs
Set ws = CreateObject("Wscript.Shell") ws.run "cmd /c C:\frp_0.36.2_windows_amd64\Telnet.bat",vbhide
如圖:

將改frpc.vbs文件放進windows啟動程序中。或者您按下 "Win + R" 鍵,打開 "運行" 對話框。輸入“shell:startup”並按下回車鍵,打開用戶的啟動文件夾。在啟動文件夾中,將之前創建的frpc.vbs腳本文件復制進來。現在,每次 Windows 10 開機啟動時,該frpc.vbs腳本都會被自動執行。

如圖:

到此已全部配置完成。
二、使用nssm服務助手放到后台運行(開機可自動啟動或手動禁用)
- nssm 點擊下載
詳細安裝見 https://mefj.com.cn/lur3664.html
管理員運行cmd,nssm install frpc

安裝完 nssm start frpc 啟動即可,重啟pc遠程連接,檢查服務是否自動啟動。
- 啟動服務:
nssm start <servicename>
- 停止服務:
nssm stop <servicename>
- 重啟服務:
nssm restart <servicename>
- 編輯服務參數:
nssm edit <servicename>
- 刪除服務:
nssm remove <servicename>
可選項
給FRP服務端增加一個儀表板
通過Dashboard可以方便的查看FRP的狀態以及代理統計信息展示,要使用這個功能首先需要在FRP服務端配置文件中指定Dashboard服務使用的端口:
$ vim frps.ini [common] #指定Dashboard的監聽的IP地址 dashboard_addr = 公網IP地址 #指定Dashboard的監聽的端口 dashboard_port = 7500 #指定訪問Dashboard的用戶名 dashboard_user = admin #指定訪問Dashboard的端口 dashboard_pwd = admin #打開普羅米修斯 enable_prometheus = true
普羅米修斯
首先啟用儀表板,然后enable_prometheus = true在中進行配置frps.ini。
http://{dashboard_addr}/metrics 將提供普羅米修斯監測器數據。
防火牆放行7500
firewall-cmd --zone=public --add-port=7500/tcp --permanent
查看所有已打開的端口
firewall-cmd --zone=public --list-ports
通過公網IP地址:7500訪問Dashboard界面,用戶名 admin 密碼admin。

登錄如圖
