高性能的內(nèi)網(wǎng)穿透工具frp使用場景
本文將分享一個很好用的內(nèi)網(wǎng)穿透工具 frp,以及一些具體的使用場景。
什么是 frp
frp 是一個專注于內(nèi)網(wǎng)穿透的高性能的反向代理應用,支持 TCP、UDP、HTTP、HTTPS 等多種協(xié)議。可以將內(nèi)網(wǎng)服務以安全、便捷的方式通過具有公網(wǎng) IP 節(jié)點的中轉(zhuǎn)暴露到公網(wǎng)。
為什么使用 frp
通過在具有公網(wǎng) IP 的節(jié)點上部署 frp 服務端,可以輕松地將內(nèi)網(wǎng)服務穿透到公網(wǎng),同時提供諸多專業(yè)的功能特性,這包括:
- 客戶端服務端通信支持 TCP、KCP 以及 Websocket 等多種協(xié)議。
- 采用 TCP 連接流式復用,在單個連接間承載更多請求,節(jié)省連接建立時間。
- 代理組間的負載均衡。
- 端口復用,多個服務通過同一個服務端端口暴露。
- 多個原生支持的客戶端插件(靜態(tài)文件查看,HTTP、SOCK5 代理等),便于獨立使用 frp 客戶端完成某些工作。
- 高度擴展性的服務端插件系統(tǒng),方便結(jié)合自身需求進行功能擴展。
- 服務端和客戶端 UI 頁面。
安裝
可以在 Github 的 Release 頁面中進行下載:
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
壓縮包里包含了客戶端和服務端的兩個可執(zhí)行文件,以及對應的配置文件:
> tree -L 1 frp_0.37.0_linux_amd64 frp_0.37.0_linux_amd64 ├── frpc # 客戶端程序 ├── frpc_full.ini # 對應客戶端程序的詳細配置文件 ├── frpc.ini # 對應客戶端程序的簡單配置文件 ├── frps # 服務端程序 ├── frps_full.ini # 對應服務端程序的詳細配置文件 ├── frps.ini # 對應服務端程序的簡單配置文件 ├── LICENSE └── systemd ├── frpc.service # 客戶端的 systemd 服務配置文件 ├── frpc@.service # 客戶端的 systemd 模板文件 ├── frps.service # 服務端的 systemd 服務配置文件 └── frps@.service # 服務端的 systemd 模板文件
使用
首先,這個工具需要一個公網(wǎng)服務器配置使用,配置文件可以參考詳細的配置文件進行編寫,后面會講到自己常用的幾個場景下的配置。
先啟動服務端:
./frps -c ./frps.ini
再啟動客戶端:
./frpc -c ./frpc.ini
Tip:如果需要在后臺長期運行,可以結(jié)合 systemd 或者 supervisor 進行使用。
使用場景
統(tǒng)一的服務端配置
[common] bind_port = 9999 authentication_method = token token = yourtokenhere vhost_http_port = 10001 vhost_https_port = 10002
配置說明:
- bind_port 是客戶端連接使用的端口號。
- 為了安全起見,會給服務端加上 token 認證,客戶端被要求使用服務端配置的 token 才可以連接。
- vhost_http_port 和 vhost_https_port 在自定義域名訪問時需要設置。
下面將都是基于這個服務端配置的一些場景下的客戶端配置。
SSH 連接內(nèi)網(wǎng)服務器
[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ǎng) IP。
- remote_port 設置在公網(wǎng)服務器上綁定的端口號。
現(xiàn)在,我們就可以通過 SSH 連接內(nèi)網(wǎng)服務器:
ssh -p 6666 k8scat@x.x.x.x
暴露內(nèi)網(wǎng) HTTP 服務
TCP 類型
這種方式不需要在服務端設置 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 類型
這種方式需要在服務端設置 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)文件下載服務
在沒用 frp 之前,使用的是 Nginx 搭建的靜態(tài)文件服務器,只適用于公網(wǎng)服務器,如果是內(nèi)網(wǎng),還是得用 frp!下面是使用 frp 搭建靜態(tài)文件下載服務的客戶端配置:
[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 為了安全起見,可以設置下載時的 HTTP 身份驗證。
以上就是高性能的內(nèi)網(wǎng)穿透工具frp使用場景的詳細內(nèi)容,更多關(guān)于內(nèi)網(wǎng)穿透工具frp的資料請關(guān)注腳本之家其它相關(guān)文章!