
由於現在的網路環境有兩層路由,且對外的路由我沒有控制權,以前要從外網連回家中的 Synology NAS 都要透過群暉的 QuickConnect 實現,後來經朋友推薦發現 Cloudflare Zero Trust 可以達成類似功能,並且可以掛上自己的域名!!(重要)
搜尋了一下發現設定方式相對不算太難,所以把設定過程紀錄下來供大家參考或是未來自己複習用!
在開始之前,這邊要特別感謝 sakkyoi 的教學文章: 用 Cloudflare Tunnel 打通 Synology NAS,
非常清晰易懂也推薦各位參考,本文過程參照此文設定並加入一些個人筆記的細節及 Cloudflare 功能上的小更新。
事前準備
- 運行 Synology DSM 的 NAS (撰文時所需套件要求為 DSM 5 以上)
- 自己的 Domain Name
- Cloudflare 帳號
- 能夠刷的信用卡 (提供 Cloudflare 付費資訊用不會產生費用)
- 需要將 DNS 託管在 Cloudflare 上
Zero Trust 團隊設定
首先登入 Cloudflare Zero Trust 並建立團隊 (名稱任意)
選擇付費方案:一般個人使用 Free 應該就相當夠用,但記得即使免費方案還是需要輸入付費資訊才能夠使用喔!
成功建立好團隊及付款設定後會進到如下的 Dashboard 頁面

建立 Application
接下來要建立一層 Cloudflare Zero Trust 的保護應用在我們的 Tunnel 之前,這樣就可以讓使用者連入相關服務時讓平台
協助確認使用者的身份 (須先登入稍候設定的帳號或經過第三方登入驗證) 確保應用的安全,強力建議設定!
新增 Application
在左側導覽的 Access 選擇 Application 進入以下頁面,點擊 + Add an application (首次設定的話頁面會稍有不同)

接著選擇 Self-hosted

Application 設定
自行設定想要的 Application name,另外可以選擇性調整 Session Duration 讓使用者可以保持驗證狀態多長時間。
在 Application domain 設定自己的域名,若要掛在 Subdomain 底下也請再此設定。
另外下方的 Identity providers 則是可以設定不同的登入方式 (預設為 OTP 登入),這邊可以先不做變動,
稍候到 第三方登入驗證方式 會做 Github 登入的設定範例:

Policy 設定
Policy Name 隨意填入,Action 選擇 Allow 代表我們正在設定允許連入的規則,Session duration 預設為跟應用相同即可。
由於要限制只有我們自己的 Email 能夠登入,所以在 Configure rules 的 Selector 選擇 Emails,
並在 Value 填入自己的信箱。同理若要讓其他人連入也可進行相對的設定。

接下來 Next 下一頁後,可以直接使用預設設定拉到最下面並點擊 Add application 完成新增!
建立與 NAS 連線的 Tunnel
接著我們要建立一個與 NAS 連線的 Tunnel,在左側導覽找到 Network 並選擇 Tunnels 進入設定頁面。
點擊 + Create a tunnel 來建立通道 (首次設定的話頁面會稍有不同):

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

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

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

下一步後,設定 Public Hostnames,Domain 與剛才的設定相同,Service
部分則填入 NAS 在內網的 IP 位址 (DSM 預設 HTTP 為 5000,HTTPS 則為 5001)。
接著點開 Additional application settings,若使用 Synology 預設的憑證則要開啟 No TLS Verify。
接著選擇 Access 套用剛才設定的 Access Application 即可儲存 Tunnel:

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

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

安裝完成後按照提示輸入剛才取得的 Token 並執行即可。
完成 Tunnel 並測試
接著就可以到瀏覽器中輸入剛才設定過的 Domain 測試看能不能成功進入 Cloudflare Access 的頁面
(未設定第三方登入的話不會顯示 Github 的登入欄位):

登入後即可透過外網輸入自訂的網址進入 DSM 跟各種 HTTP 服務囉! (如 /file、/audio 等 DSM 上安裝的服務)
第三方登入驗證方式(可選)
由於 OTP 每次都要透過 Email 接收相當麻煩,我們可以加入不同的第三方登入服務讓登入更方便!
回到 Zero Trust Dashboard 選擇左側導覽的 Settings 後點選 Authentication 新增不同的驗證方式:

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

選擇需要的第三方服務後就會出現各服務所需要的驗證資訊,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:

我的內網環境是 192.168.1.0 ~ 192.168.255 故 CIDR 欄位需填入 192.168.1.0/24,
描述可以任意填寫,Tunnel 則選擇剛才建立的 Tunnel 即可。
完成後點擊 Create 即可完成路由設定。
CIDR 相關可參考:WIKI - CIDR

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

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

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

接著回到上一頁的 WARP Client 設定頁面 (Settings > WARP Client)
找到 Device settings 區塊,在 Default Profile 右側點擊 Configure:

找到 Split Tunnels,點擊 Manage:

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

接著從左側導覽 Settings 選擇 Network:

到 Firewall 把 Proxy 啟用,協議部分可以把 UDP 一併啟用:

WARP Client 安裝
接下來到 WARP Client 下載頁面下載對應的客戶端並安裝。
安裝 App 後按照只是填入 Team Name 進行驗證跟 VPN 安裝成功後會出現類似畫面 (原先顯示 WARP,完成後顯示 Zero Trust):
我一開始在 iOS 安裝 VPN 時卡住導致無法驗證,建議先將系統內的原本使用的 VPN 等先關閉在進行設定

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

評論