frp 客戶端使用群暉安裝
在前面提過安裝 frp 服務端,這裡記錄下怎麼透過該工具將NAS底下安裝的應用服務發布到公網世界。
安裝
這裡要注意下載版本必須保持與服務端一致由於我先前安裝版本為 0.30.0 因此客戶端也是下載對應版本,不知道可以透過打開服務端管理介面查看
1 2 3 4 5 6 7 8 |
# 下載FRP wget https://github.com/fatedier/frp/releases/download/v0.30.0/frp_0.30.0_linux_amd64.tar.gz # 解壓縮 tar -xvf frp_0.30.0_linux_amd64.tar.gz # 切換到目錄 cd frp_0.30.0_linux_amd64 # 刪除服務器配置 rm -rf frps* |
配置
1 |
vim frpc.ini |
frpc.ini 配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
[common] # 修改成自己的域名或服務器IP地址及連接埠綁定 server_addr = 0.0.0.0 server_port = 7000 # 客戶端管理介面 admin_addr = 127.0.0.1 admin_port = 7400 admin_user = admin admin_pwd = admin # 群暉後台管理介面(https) # 使用 https 連線 [nas-backend] type = https local_port = 5001 custom_domains = server.yosheng.tw # 群暉 WebStation 反向代理 # 使用 https 連線 [nas-web-reverse] type = https local_port = 443 custom_domains = test-home.yosheng.tw # 基於群暉 Docker 搭建 Jenkins # 透過 https2http 插件實現https連線 [nas-jenkins-web] type = https local_port = 8888 custom_domains = jenkins.yosheng.tw plugin = https2http plugin_local_addr = 127.0.0.1:8888 # HTTPS 证书相关的配置 plugin_crt_path = /usr/local/etc/certificate/WebDAVServer/webdav/fullchain.pem plugin_key_path = /usr/local/etc/certificate/WebDAVServer/webdav/privkey.pem plugin_host_header_rewrite = 127.0.0.1 plugin_header_X-From-Where = frp # 基於群暉 Docker 搭建 Aria2 # 內置的 WebGUI 服務 [nas-aria2-web] type = http local_port = 6880 custom_domains = aria2.yosheng.tw # 群暉SSH連線 [nas-ssh] type = tcp local_ip = 192.168.31.104 local_port = xxxx remote_port = xxxx # 基於群暉 Docker 搭建 Aria2 # 穿透RPC連線 [nas-aria2-rpc] type = tcp local_ip = 192.168.31.104 local_port = 6800 remote_port = 58002 use_encryption = true use_compression = true |
下述開始針對上面的配置細說
[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 即可生效。
配置群暉開機自動啟動
控制台 → 任務排程表 → 新增 → 觸發任務 → 使用者自訂指令碼 如附圖輸入任務名稱事件選擇開機
任務設定如附圖
1 |
/usr/syno/etc.defaults/rc.sysv/S99frp.sh |
1 2 |
# 建立S99frp.sh sudo vim /usr/syno/etc.defaults/rc.sysv/S99frp.sh |
S99frp.sh
1 2 3 |
#!/bin/bash cd /usr/local/software/frp_0.30.0_linux_amd64/ nohup ./frpc -c ./frpc.ini & |
記得根據自己的配置修改即可
如果需要查看日誌可以透過該命令
1 |
sudo tail /usr/local/software/frp_0.30.0_linux_amd64/nohup.out |
補充群暉反向代理
控制台 → 應用程式入口 → 反向代理伺服器 → 新增
假設我要代理 Aria2 服務如附圖
記得配置完回到 frpc.ini 修改下述設定,在 custom_domains 後面添加剛剛新增的主機名稱,還有在 cloudflare 上面配置A紀錄指定到VPS上面即可。
1 2 3 4 |
[nas-web-reverse] type = https local_port = 443 custom_domains = test-home.yosheng.tw, aria2.yosheng.tw |
custom_domains 這個設定根據原始碼配置是讀取後會根據逗號進行分割存成陣列,最後再讀取使用。
為什麼透過群暉內建的反向代理?
主要是方便公用憑證,不需要再自己額外手動處理,如果使用低版本的FRP本身是沒有http2https的插件功能,這個方法就可以解決該問題。
相逢就是有緣,留下足跡吧!