透過 Cloudflare Zero Trust 與 WARP Client 從外網連回 Synology DSM

透過 Cloudflare Zero Trust 與 WARP Client 從外網連回 Synology DSM

由於現在的網路環境有兩層路由,且對外的路由我沒有控制權,以前要從外網連回家中的 Synology NAS 都要透過群暉的 QuickConnect 實現,後來經朋友推薦發現 Cloudflare Zero Trust 可以達成類似功能,並且可以掛上自己的域名!!(重要)

搜尋了一下發現設定方式相對不算太難,所以把設定過程紀錄下來供大家參考或是未來自己複習用!

在開始之前,這邊要特別感謝 sakkyoi 的教學文章: 用 Cloudflare Tunnel 打通 Synology NAS
非常清晰易懂也推薦各位參考,本文過程參照此文設定並加入一些個人筆記的細節及 Cloudflare 功能上的小更新。

事前準備

  • 運行 Synology DSM 的 NAS (撰文時所需套件要求為 DSM 5 以上)
  • 自己的 Domain Name
  • Cloudflare 帳號
  • 能夠刷的信用卡 (提供 Cloudflare 付費資訊用不會產生費用)
  • 將 DNS 託管在 Cloudflare 上 (用其他 DNS Provider 應該也可以只是要多做設定,因為我原本就是用他們家的服務)

Zero Trust 團隊設定

首先登入 Cloudflare Zero Trust 並建立團隊 (名稱任意)

選擇付費方案:一般個人使用 Free 應該就相當夠用,但記得即使免費方案還是需要輸入付費資訊才能夠使用喔!

成功建立好團隊及付款設定後會進到如下的 Dashboard 頁面

Zero Trust Dashboard

建立 Application

接下來要建立一層 Cloudflare Zero Trust 的保護應用在我們的 Tunnel 之前,這樣就可以讓使用者連入相關服務時讓平台
協助確認使用者的身份 (須先登入稍候設定的帳號或經過第三方登入驗證) 確保應用的安全,強力建議設定!

新增 Application

在左側導覽的 Access 選擇 Application 進入以下頁面,點擊 + Add an application (首次設定的話頁面會稍有不同)

Application

接著選擇 Self-hosted

Self-hosted

Application 設定

自行設定想要的 Application name,另外可以選擇性調整 Session Duration 讓使用者可以保持驗證狀態多長時間。

Application domain 設定自己的域名,若要掛在 Subdomain 底下也請再此設定。

另外下方的 Identity providers 則是可以設定不同的登入方式 (預設為 OTP 登入),這邊可以先不做變動,
稍候到 第三方登入驗證方式 會做 Github 登入的設定範例:

alt text

Policy 設定

Policy Name 隨意填入,Action 選擇 Allow 代表我們正在設定允許連入的規則,Session duration 預設為跟應用相同即可。

由於要限制只有我們自己的 Email 能夠登入,所以在 Configure rulesSelector 選擇 Emails
並在 Value 填入自己的信箱。同理若要讓其他人連入也可進行相對的設定。

Policy Configuration

接下來 Next 下一頁後,可以直接使用預設設定拉到最下面並點擊 Add application 完成新增!

建立與 NAS 連線的 Tunnel

接著我們要建立一個與 NAS 連線的 Tunnel,在左側導覽找到 Network 並選擇 Tunnels 進入設定頁面。

點擊 + Create a tunnel 來建立通道 (首次設定的話頁面會稍有不同):

Tunnels

這邊選擇預設的 Cloudflared 連接器即可點選下一步:

Cloudflared Tunnel

輸入喜歡的 Tunnel 名稱,點擊 Save tunnel

Tunnel Configuration

接著會顯示如何安裝及運行連接器,如果是要在其他的一般機器設定可以透過提供的指令安裝。
我們這邊要設定在 DSM 上設定所以可以把指令複製下來後只截取後面 ey... 那段的 Token 保存即可,稍候設定會用到。

Connector

下一步後,設定 Public HostnamesDomain 與剛才的設定相同,Service
部分則填入 NAS 在內網的 IP 位址 (DSM 預設 HTTP 為 5000,HTTPS 則為 5001)。

接著點開 Additional application settings,若使用 Synology 預設的憑證則要開啟 No TLS Verify

接著選擇 Access 套用剛才設定的 Access Application 即可儲存 Tunnel:

Route Traffic

在 DSM 安裝 Cloudflare Tunnel

新增套件來源

首先透過內網登入 DSM,進入套件中心 (Package Center),點選右上角的設定 (Settings) 並選擇套件來源 (Package Sources) 後按下新增 (Add),
輸入以下資訊 (名稱選用自己看的懂得即可):

1
https://packages.synocommunity.com/

Package Center

安裝 Cloudflare Tunnel

接著在套件中心 (Package Center) 中搜尋 Cloudflare Tunnel 安裝:

DSM Cloudflare Tunnel

安裝完成後按照提示輸入剛才取得的 Token 並執行即可。

完成 Tunnel 並測試

接著就可以到瀏覽器中輸入剛才設定過的 Domain 測試看能不能成功進入 Cloudflare Access 的頁面
(未設定第三方登入的話不會顯示 Github 的登入欄位):

Cloudflare Access

登入後即可透過外網輸入自訂的網址進入 DSM 跟各種 HTTP 服務囉! (如 /file/audio 等 DSM 上安裝的服務)

第三方登入驗證方式(可選)

由於 OTP 每次都要透過 Email 接收相當麻煩,我們可以加入不同的第三方登入服務讓登入更方便!

回到 Zero Trust Dashboard 選擇左側導覽的 Settings 後點選 Authentication 新增不同的驗證方式:

Authentication

進入後選擇下方 Login methods 點選 Add new 新增不同的第三方登入設定:

Login methods

選擇需要的第三方服務後就會出現各服務所需要的驗證資訊,Cloudflare 都有附上圖文操作安照對應的方式填入資訊即可啟用囉!
設定完成後回到 Zero Trust Access 驗證頁面時就會出現 Sign in with 的欄位了。

設定 Cloudflare WARP 搭配 WARP Client 訪問內網 Non-HTTP 服務

以上的設定能夠讓 HTTP 服務透過外網連入了,但由於 Tunnel 是透過 WebSocket 實現並不支援 Non-HTTP 的服務 (如 SMB 等),
同時官方的行動 App 會因為 Access 驗證被阻擋無法使用,所以如果需要連入其他協議的服務或訪問其他內網裝置的話,
我們可以透過 WARP 這個服務建立一個 Private Network 解決。

路由設定

首先從左側導覽的 Networks 進入 Routes,點選 + Create route

Routes

我的內網環境是 192.168.1.0 ~ 192.168.255CIDR 欄位需填入 192.168.1.0/24
描述可以任意填寫,Tunnel 則選擇剛才建立的 Tunnel 即可。

完成後點擊 Create 即可完成路由設定。

CIDR 相關可參考:WIKI - CIDR

Edit route

WARP Client 設定

左側導覽選擇 Settings,點擊 WARP Client 子項目:

WARP Client

Device enrollment 點選 Manage 設定裝置驗證:

Device enrollment

點擊 + Add a rule 加入驗證規則,這邊跟之前設定的驗證規則類似不再贅述,完成後點選 Save 即可。

Rules

接著回到上一頁的 WARP Client 設定頁面 (Settings > WARP Client)

找到 Device settings 區塊,在 Default Profile 右側點擊 Configure

Default Profile

找到 Split Tunnels,點擊 Manage

Manage Split Tunnels

找到包含自己網域的設定項目並把他刪除 (此為 Exclude 規則故需刪除要連線的網段)

Remove from Exclude

接著從左側導覽 Settings 選擇 Network

Network

FirewallProxy 啟用,協議部分可以把 UDP 一併啟用:

Firewall

WARP Client 安裝

接下來到 WARP Client 下載頁面下載對應的客戶端並安裝。

安裝 App 後按照只是填入 Team Name 進行驗證跟 VPN 安裝成功後會出現類似畫面 (原先顯示 WARP,完成後顯示 Zero Trust):

我一開始在 iOS 安裝 VPN 時卡住導致無法驗證,建議先將系統內的原本使用的 VPN 等先關閉在進行設定

iOS WARP Client

完成後點擊開關即可透過 WARP 連入區網,可以在外網透過 smb 等協議連上 NAS 測試是否設定成功。
現在就可以透過 WARP Client 夠連入內網中的其他機器囉,另外 Synology 官方的 App 也能夠直接透過區網 IP 連入使用了!

參考資料

透過樹莓派 5 及 ZeroTier 幫 NAS 做異地備份 Pi Dash - 一個比較大的桌上型 Touch Bar 還是 Cyberdeck ?
Buy Me A Coffee

評論

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×