高性能的內(nèi)網(wǎng)穿透工具frp使用場景
本文將分享一個(gè)很好用的內(nèi)網(wǎng)穿透工具 frp,以及一些具體的使用場景。
什么是 frp
frp 是一個(gè)專注于內(nèi)網(wǎng)穿透的高性能的反向代理應(yīng)用,支持 TCP、UDP、HTTP、HTTPS 等多種協(xié)議。可以將內(nèi)網(wǎng)服務(wù)以安全、便捷的方式通過具有公網(wǎng) IP 節(jié)點(diǎn)的中轉(zhuǎn)暴露到公網(wǎng)。
為什么使用 frp
通過在具有公網(wǎng) IP 的節(jié)點(diǎn)上部署 frp 服務(wù)端,可以輕松地將內(nèi)網(wǎng)服務(wù)穿透到公網(wǎng),同時(shí)提供諸多專業(yè)的功能特性,這包括:
- 客戶端服務(wù)端通信支持 TCP、KCP 以及 Websocket 等多種協(xié)議。
- 采用 TCP 連接流式復(fù)用,在單個(gè)連接間承載更多請求,節(jié)省連接建立時(shí)間。
- 代理組間的負(fù)載均衡。
- 端口復(fù)用,多個(gè)服務(wù)通過同一個(gè)服務(wù)端端口暴露。
- 多個(gè)原生支持的客戶端插件(靜態(tài)文件查看,HTTP、SOCK5 代理等),便于獨(dú)立使用 frp 客戶端完成某些工作。
- 高度擴(kuò)展性的服務(wù)端插件系統(tǒng),方便結(jié)合自身需求進(jìn)行功能擴(kuò)展。
- 服務(wù)端和客戶端 UI 頁面。
安裝
可以在 Github 的 Release 頁面中進(jìn)行下載:
curl -LO https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_linux_amd64.tar.gz tar zxf frp_0.37.0_linux_amd64.tar.gz
壓縮包里包含了客戶端和服務(wù)端的兩個(gè)可執(zhí)行文件,以及對應(yīng)的配置文件:
> tree -L 1 frp_0.37.0_linux_amd64 frp_0.37.0_linux_amd64 ├── frpc # 客戶端程序 ├── frpc_full.ini # 對應(yīng)客戶端程序的詳細(xì)配置文件 ├── frpc.ini # 對應(yīng)客戶端程序的簡單配置文件 ├── frps # 服務(wù)端程序 ├── frps_full.ini # 對應(yīng)服務(wù)端程序的詳細(xì)配置文件 ├── frps.ini # 對應(yīng)服務(wù)端程序的簡單配置文件 ├── LICENSE └── systemd ├── frpc.service # 客戶端的 systemd 服務(wù)配置文件 ├── frpc@.service # 客戶端的 systemd 模板文件 ├── frps.service # 服務(wù)端的 systemd 服務(wù)配置文件 └── frps@.service # 服務(wù)端的 systemd 模板文件
使用
首先,這個(gè)工具需要一個(gè)公網(wǎng)服務(wù)器配置使用,配置文件可以參考詳細(xì)的配置文件進(jìn)行編寫,后面會講到自己常用的幾個(gè)場景下的配置。
先啟動(dòng)服務(wù)端:
./frps -c ./frps.ini
再啟動(dòng)客戶端:
./frpc -c ./frpc.ini
Tip:如果需要在后臺長期運(yùn)行,可以結(jié)合 systemd 或者 supervisor 進(jìn)行使用。
使用場景
統(tǒng)一的服務(wù)端配置
[common] bind_port = 9999 authentication_method = token token = yourtokenhere vhost_http_port = 10001 vhost_https_port = 10002
配置說明:
- bind_port 是客戶端連接使用的端口號。
- 為了安全起見,會給服務(wù)端加上 token 認(rèn)證,客戶端被要求使用服務(wù)端配置的 token 才可以連接。
- vhost_http_port 和 vhost_https_port 在自定義域名訪問時(shí)需要設(shè)置。
下面將都是基于這個(gè)服務(wù)端配置的一些場景下的客戶端配置。
SSH 連接內(nèi)網(wǎng)服務(wù)器
[common] server_addr = x.x.x.x server_port = 9999 token = yourtokenhere [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6666
配置說明:
- server_addr 是服務(wù)端所在服務(wù)器的公網(wǎng) IP。
- remote_port 設(shè)置在公網(wǎng)服務(wù)器上綁定的端口號。
現(xiàn)在,我們就可以通過 SSH 連接內(nèi)網(wǎng)服務(wù)器:
ssh -p 6666 k8scat@x.x.x.x
暴露內(nèi)網(wǎng) HTTP 服務(wù)
TCP 類型
這種方式不需要在服務(wù)端設(shè)置 vhost_http_port 和 vhost_https_port:
[common] server_addr = x.x.x.x server_port = 9999 token = yourtokenhere [web] type = tcp local_ip = 127.0.0.1 local_port = 3333 remote_port = 6666
訪問:http://x.x.x.x:6666
HTTP 類型
這種方式需要在服務(wù)端設(shè)置 vhost_http_port = 6666,也就是和客戶端配置的 remote_port 相同。
[common] server_addr = x.x.x.x server_port = 9999 token = yourtokenhere [web] type = http local_ip = 127.0.0.1 local_port = 3333 remote_port = 6666 custom_domains = x.x.x.x
同樣訪問:http://x.x.x.x:6666
靜態(tài)文件下載服務(wù)
在沒用 frp 之前,使用的是 Nginx 搭建的靜態(tài)文件服務(wù)器,只適用于公網(wǎng)服務(wù)器,如果是內(nèi)網(wǎng),還是得用 frp!下面是使用 frp 搭建靜態(tài)文件下載服務(wù)的客戶端配置:
[common] server_addr = x.x.x.x server_port = 9999 token = yourtokenhere [file-server] type = tcp remote_port = 6666 plugin = static_file plugin_local_path = /home/k8scat/files plugin_strip_prefix = download plugin_http_user = k8scat plugin_http_passwd = yourpasswd
配置說明:
- plugin_local_path 指定本地文件存放的路徑。
- plugin_strip_prefix 指定下載的 URL 的前綴,比如需要下載 /home/k8scat/files/a.tgz 文件,那么 URL 將會是 http://x.x.x.x:6666/download/a.tgz。
- plugin_http_user 和 plugin_http_passwd 為了安全起見,可以設(shè)置下載時(shí)的 HTTP 身份驗(yàn)證。
以上就是高性能的內(nèi)網(wǎng)穿透工具frp使用場景的詳細(xì)內(nèi)容,更多關(guān)于內(nèi)網(wǎng)穿透工具frp的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
代理軟件強(qiáng)中強(qiáng)--WinRoute使用圖文教程
代理軟件強(qiáng)中強(qiáng)--WinRoute使用圖文教程...2007-02-02代理獵手驗(yàn)證數(shù)據(jù)的設(shè)置方法
代理獵手驗(yàn)證數(shù)據(jù)的設(shè)置方法...2007-02-02