frp 客戶端使用群暉安裝

4年前 (2020-01-04) Yosheng 資訊教學 0評論 已收錄 3577℃

在前面提過安裝 frp 服務端,這裡記錄下怎麼透過該工具將NAS底下安裝的應用服務發布到公網世界。

安裝

這裡要注意下載版本必須保持與服務端一致由於我先前安裝版本為 0.30.0 因此客戶端也是下載對應版本,不知道可以透過打開服務端管理介面查看

配置

frpc.ini 配置

下述開始針對上面的配置細說

[common]

基本與服務端連線的配置,這裡建議開啟 adminUI 配置,方便後續添加後直接在瀏覽器上修改即可生效,不需要再重啟服務

[nas-backend] & [nas-web-reverse]

同時使用 https 連線,意味著需配合服務端 vhost_https_port 使用,這裡配置 custom_domains 用於連線時使用,由於我在服務端配置端口為 56443 因此應該訪問 https://server.yosheng.tw:56443/ 即可連線回群暉管理介面,因為先前在群暉已經配置好證書所以不會出現警告,配置證書可以參考該 黑群暉使用 https 連線,此外域名映射到的IP可以參考 更換域名託管商使用免費 CDN 。

[nas-jenkins-web]

因為原生容器內只提供 http 連線,如果要使用https官方建議使用 nginx 做反向代理,這部分後面會說明如何透過群暉內建的 nginx 實現,因為透過該方法實現無法在後台查看連線狀況,因此建議使用 frp 提供的https2http 插件來實現。

關於 HTTPS 证书相关的配置 這部分證書跟鑰匙位置,是和群暉內置 nginx 共用,路徑參考 黑群暉使用 https 連線 ,當時是透過一鍵腳本執行,腳本預設會將證書及鑰匙放到該位置。

[nas-aria2-web]

這部分使用 http 連線是因為使用 https 連線,針對 rpc 連線的部分也必須做額外的配置,必須將證書及鑰匙配置到 aria2.conf 上面否則會出現連線異常,具體可以參考 配置https后无法连接rpc 以及 Aria2搭配AriaNg实现离线下载 目前我就不在折騰。

[nas-ssh]

使用 tcp 連線是因為 ssh 也是基於上面的服務,具體本地端口和遠程連線端口記得修改下

[nas-aria2-rpc]

值得一提的是 use_encryption 及 use_compression  可以用來隱蔽連線內容,詳細如文檔所說。

引述文檔內容

如果公司内网防火墙对外网访问进行了流量识别与屏蔽,例如禁止了 ssh 协议等,通过设置 use_encryption = true,将 frpc 与 frps 之间的通信内容加密传输,将会有效防止流量被拦截。

如果传输的报文长度较长,通过设置 use_compression = true 对传输内容进行压缩,可以有效减小 frpc 与 frps 之间的网络流量,加快流量转发速度,但是会额外消耗一些 cpu 资源。

TLS
从 v0.25.0 版本开始 frpc 和 frps 之间支持通过 TLS 协议加密传输。通过在 frpc.ini 的 common 中配置 tls_enable = true 来启用此功能,安全性更高。

为了端口复用,frp 建立 TLS 连接的第一个字节为 0x17。

[v_warn]注意: 启用此功能后除 xtcp 外,不需要再设置 use_encryption。[/v_warn]

查看 AdminGUI

打開瀏覽器輸入 群暉的IP地址 預設端口 7400 即出現附圖


上述 local address 的部分出現空代表在配置中 local_ip 沒輸入,系統會預設使用 127.0.0.1 來連線,因此這裡建議盡量補全,方便日後查看,此外點選 Configure 的部分就可以直接修改配置再點及 Upload 即可生效。

配置群暉開機自動啟動

控制台 → 任務排程表 → 新增 → 觸發任務 → 使用者自訂指令碼 如附圖輸入任務名稱事件選擇開機


任務設定如附圖


S99frp.sh

記得根據自己的配置修改即可

如果需要查看日誌可以透過該命令

補充群暉反向代理

控制台 → 應用程式入口 → 反向代理伺服器 → 新增


假設我要代理 Aria2 服務如附圖


記得配置完回到 frpc.ini 修改下述設定,在 custom_domains 後面添加剛剛新增的主機名稱,還有在 cloudflare 上面配置A紀錄指定到VPS上面即可。

custom_domains 這個設定根據原始碼配置是讀取後會根據逗號進行分割存成陣列,最後再讀取使用。

為什麼透過群暉內建的反向代理?

主要是方便公用憑證,不需要再自己額外手動處理,如果使用低版本的FRP本身是沒有http2https的插件功能,這個方法就可以解決該問題。

博主

擅長使用 C# 和 Java 開發項目,全棧開發工程師,前端主要使用 Vue 其次 Angular ,目前正在學習分布式架構,運維研發兼具,平時愛好鑽研技術並應用於實務當中,常駐於上海。

相關推薦

相逢就是有緣,留下足跡吧!