使用frp實現內網穿透如遠程訪問校園內網服務器:frp-Github鏈接
frp安裝
可以根據需求下載對應的文件版本,推薦使用Windows_amd64和Linux_amd64版本,具體還需要根據機子情況。下載鏈接
frp環境部署
frp 主要由 客戶端(frpc) 和 服務端(frps) 組成,服務端通常部署在具有公網 IP 的機器上,客戶端通常部署在需要穿透的內網服務所在的機器上。以阿里雲WinServer2008作為公網IP服務器和Win10作為內網機子為例。
首先下載frp_0.33.0_windows_amd64版本,之后配置客戶端文件,打開frpc.ini。
[common]
server_addr = x.x.x.x #填寫公網服務器IP
server_port = 7000 #這個端口指的是客戶端與服務端通信使用的端口
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 3389 #SSH使用22端口 windows系統使用3389端口
remote_port = 6000 #這個端口是指通過x.x.x.x:6000訪問內網機子的轉發端口
注意若使用雲服務器,在服務器的安全組中要把端口7000、6000(可自定義)都進行開放,否則連接不上。服務端使用默認配置文件不需要更改。
配置好文件之后,啟動即可,windows的話需要使用cmd打開,可自寫bat文件啟動。
想要多客戶端配置就在不同客戶端上面使用不同端口啟動即可:
[common]
server_addr = x.x.x.x #填寫公網服務器IP
server_port = 7000 #這個端口指的是客戶端與服務端通信使用的端口
[ssh2] # 不同客戶端需要不同的名字
type = tcp
local_ip = 127.0.0.1
local_port = 3389 #SSH使用22端口 windows系統使用3389端口
remote_port = 6006 #這個端口是指通過x.x.x.x:6000訪問內網機子的轉發端口
若需要配置web服務需要更改服務器和客戶端文件如下:
frps.ini服務端配置文件
[common]
bind_port = 7000
vhost_http_port = 6001 # 訪問6001端口,映射到內網web服務
frpc.ini客戶端配置文件
[common]
server_addr = x.x.x.x
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 6000
[web]
type = http
local_port = 8080 # 訪問本地8080web服務
custom_domains = www.xxx.cn # 必須已經備案
客戶端啟動:
服務端啟動:
連接測試圖:
frp儀表盤配置
通過frp自帶儀表盤控制界面 Dashboard 可以方便的查看 FRP 的狀態以及代理統計信息展示
要使用這個功能首先需要在 FRP 服務端配置文件 frps.ini 中指定 Dashboard 服務使用的端口:
# frps.ini 內容
[common]
bind_port = 7000
# 指定 儀表盤控制界面 Dashboard 的監聽的 IP 地址 //0.0.0.0 為所以IP均可訪問
dashboard_addr = 0.0.0.0
# 指定 儀表盤控制界面 Dashboard 的監聽的端口,默認為 7500
dashboard_port = 7500
# 指定訪問 儀表盤控制界面 Dashboard 的登錄用戶名
dashboard_user = admin
# 指定訪問 儀表盤控制界面 Dashboard 的登錄用戶密碼
dashboard_pwd = admin123
在frp目錄下輸入【frps -c frps.ini】命令重新啟動 frps 服務端
出現start frps success即啟動好服務,注意在阿里雲開放對應端口7500.
nssm將frp注冊為win10服務
為了方便frp在win10啟動,可以設置為服務,讓其后台自啟。
首先下載nssm,官網鏈接
NSSM是一個服務封裝程序,它可以將普通exe程序封裝成服務,使之像windows服務一樣運行。同類型的工具還有微軟自己的srvany,不過nssm更加簡單易用,並且功能強大。它的特點如下:
- 支持普通exe程序(控制台程序或者帶界面的Windows程序都可以)
- 安裝簡單,修改方便
- 可以重定向輸出(並且支持Rotation)
- 可以自動守護封裝了的服務,程序掛掉了后可以自動重啟
- 可以自定義環境變量
服務安裝:
服務安裝可以使用如下命令(注意使用管理員運行): nssm install servicename
執行此命令后,會出現一個界面,基本上看着就知道怎么用了,大多數情況下,只需要填第一個界面的程序路徑就可以了。
其它界面的是高級參數的配置,可以根據需要自行選擇。
參數填完后執行"install service"按鈕即可將服務安裝到系統,可以使用系統的服務管理工具查看了。
當然,如果要自動化安裝,可以直接帶上程序路徑: nssm install servicename program [arguments]
NSSM本身win7及以上的系統基本都是支持的,我測試過win7,2008,2016系統,都是沒有問題的,如果安裝失敗,請首先檢查是否裝了某國產管家或國產殺毒軟件。
安裝完成后,服務還沒有啟動,需要通過下面的服務管理的命令啟動服務。
服務管理:
服務管理主要有啟動、停止和重啟,其命令如下:
- 啟動服務:nssm start servicename
- 停止服務:nssm stop servicename
- 重啟服務:nssm restart servicename
當然,也可以使用系統自帶的服務管理器操作和使用系統的命令。
修改參數:
NSSM安裝的服務修改起來非常方便,命令如下:
nssm edit servicename
會自動啟動操作界面,直接更改即可。
服務刪除:
服務刪除可以使用如下命令之一:
- nssm remove servicename
- nssm remove servicename confirm
功能沒有大的區別,后面的命令是自動確認的,沒有交互界面。
建議
- 如果有自己的域名,可以將域名解析到公網ip上面,這樣只需要根據域名即可進行遠程連接。
- frp是需要公網的機子,若無公網機子,可以考慮花生殼、NatApp等軟件進行內網穿透。