教學 · 預計閱讀 18 分鐘

群暉 DSM 7 以 Docker 部署 Mihomo:
區網裝置把預設閘道指到 NAS 的實作步驟

家裡已有 Synology、又不想刷 OpenWrt?在 DSM 7 用 Docker/Container Manager 常駐 Mihomo(Clash.Meta 相容核心),再把手機與電腦的閘道改成 NAS 的區網 IP,即可在單一路由下集中管理規則分流。本文整理映像檔、資料卷掛載、埠對應、DSM 防火牆,以及 DHCP 與手動閘道設定時最容易踩雷的環節。

Synology · DSM 7 · Docker · Mihomo · 旁路閘道 · NAS 代理

1 為何選 NAS+Docker+旁路閘道

許多家庭使用者已經擁有群暉 Synology NAS,且 DSM 7 內建的 Docker(套件中心名稱多為 Container Manager)足以常駐一個輕量的代理核心。相較於刷路由器韌體或架設整台 Linux 小主機,把 Mihomo(即 Clash.Meta,與多數 Clash 相容的 YAML 與規則寫法)放在 NAS 上,可善用既有硬體、快照與備份策略,也方便在區網內用固定 IP 存取。

常見訴求是:手機與筆電不想逐台安裝用戶端,而是把預設閘道改成 NAS 的區網位址,讓流量「先經過 NAS 再出去」。這種旁路閘道拓樸能保留原廠路由器負責 WAN 撥接與 Wi‑Fi,只在內網多一層規則引擎。實務上,您仍須釐清「只改閘道」與「透明代理/TUN」之間的技術差異,本文會分層說明,避免改完閘道卻發現封包並未自動進 Mihomo 的情況。

若訂閱格式尚非原生 YAML,可先參考站內訂閱轉換教學;若您也在意遊戲主機僅能填 HTTP 代理、而非整機閘道的場景,可一併對照Switch/PS5 區網代理閘道一文的分流與 Allow LAN 說明。

2 拓樸與「改閘道」的前提

假設路由器為 192.168.1.1,NAS 固定為 192.168.1.10。當您把客戶端的預設閘道改成 192.168.1.10 時,客戶端會把「非本地子網」的封包先丟給 NAS。此時 NAS 必須具備IP 轉發能力,並且能把這些封包再轉送到真正的上游閘道(通常是 192.168.1.1),否則裝置會無法上網。

僅在 Docker 裡開 mixed-port 提供 HTTP/SOCKS,並不會自動讓「改閘道」的 TCP 連線全部變成走代理規則。要做到類似「全屋透明代理」,常見作法包含:在 NAS 上啟用 Mihomo 的 TUN 模式、或搭配 iptables/redirect 將流量導入本機代理埠。這些作法在 DSM 上通常需要容器較高權限、掛載 /dev/net/tun,並接受核心與套件版本帶來的維護成本。

因此建議先把目標分兩層:(甲)區網裝置以「代理伺服器=NAS:7890」方式運作,不改預設閘道,設定最單純;(乙)堅持改閘道+透明分流,就請預留時間調整 TUN、轉發與 DNS,並在每次 DSM 小版本更新後重新驗證。下文先完成(甲)所需的 Docker 與 YAML,再於專節整理(乙)的進階方向。

避免閘道迴圈 NAS 本身的預設閘道仍應指向路由器,切勿把 NAS 管理介面的閘道設成自己。若使用路由器 DHCP「選項 3」統一下發閘道,請先為 NAS 保留固定 IP,並確認沒有第二台 DHCP 伺服器互相打架。

3 DSM 7 與 Docker 前置

在套件中心安裝 Container Manager(舊版稱 Docker),並確認 NAS 已固定區網 IP(建議在路由器以 DHCP 保留或於 DSM 網路設定使用手動 IP)。建立一個共用資料夾(例如 docker),其下再建 mihomo 目錄,用來放 config.yaml 與日誌,之後整夾備份即可還原狀態。

於控制台啟用 SSH(僅限區網管理時段開啟亦可),可方便貼上 compose 檔與除錯;若您完全依賴圖形介面,也可在 Container Manager 以「專案」匯入相同設定。請確認 NAS 的時間與時區正確,以免訂閱簽章或 TLS 相關連線因時間漂移而失敗。

與純 Linux 主機不同,DSM 的系統層較封閉,較不建議直接改系統的 systemd;因此以容器重啟策略維持常駐較符合原廠支援邊界。若您也想在一般 Linux 伺服器上對照命令列部署,可延伸閱讀Linux 安裝 Mihomo 與 systemd一文。

4 映像檔、資料卷與 Compose

官方社群常用的 Mihomo 映像檔為 metacubex/mihomo。容器內預設設定目錄多為 /root/.config/mihomo,請將其掛載到 NAS 上的實體路徑(範例使用 /volume1/docker/mihomo;若您的儲存空間掛載在 /volume2,請自行替換)。

docker-compose.yml
services:
  mihomo:
    image: metacubex/mihomo:latest
    container_name: mihomo
    restart: unless-stopped
    ports:
      - "7890:7890"
      - "9090:9090"
    volumes:
      - /volume1/docker/mihomo:/root/.config/mihomo

在 Container Manager 建立專案並啟動後,可用「日誌」分頁觀察是否讀到設定檔。若埠已被其他套件占用,請在左側埠號改成區網內未使用的號碼,並同步修改 YAML 中的 mixed-portexternal-controller

架構差異 範例使用 bridge 網路並對外映射埠,最適合「客戶端填代理位址」模式。若您後續要嘗試 TUN 或 host 網路,請改在測試共用資料夾複製一份專案,避免影響已穩定運作的容器。

5 YAML:Clash 相容與區網存取

下列為精簡範本,示範如何讓區網能連到混合埠,並開啟外部控制器供 Yacd/Meta Cube 等面板使用。請務必修改 secret,並在 proxiesproxy-groups 填入實際節點;規則可依需求擴充,語法與 Clash 生態系相容。

YAML (config.yaml)
# Replace secret and fill proxies / groups before use
mixed-port: 7890
allow-lan: true
bind-address: "*"
mode: rule
log-level: info
external-controller: 0.0.0.0:9090
secret: "change-me-strong"

dns:
  enable: true
  listen: 0.0.0.0:1053
  enhanced-mode: fake-ip
  nameserver:
    - 223.5.5.5
    - 1.1.1.1

proxies: []
proxy-groups:
  - name: PROXY
    type: select
    proxies:
      - DIRECT
rules:
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

external-controller 綁在 0.0.0.0 是為了讓區網電腦能開啟儀表板;其風險是同一區網內其他裝置亦可嘗試連線,因此務必設定強密碼,並搭配下節防火牆僅允許信任網段。若您僅在本機管理,可改回 127.0.0.1:9090 並以 SSH 轉發存取。

想熟悉外部控制器與網頁面板操作,可參考Mihomo 外部控制器與 Yacd 儀表板一文。若啟用 FakeIP,客戶端 DNS 指向 NAS 時,請確認沒有第二個 DNS 服務搶占 53 或您自訂的埠。

6 DSM 防火牆與埠放行

NAS 代理服務要對區網開放時,請在 DSM「控制台 → 安全性 → 防火牆」建立規則:來源限定為內網網段(例如 192.168.1.0/24),允許 TCP 7890(混合埠)及選用的 9090(外部控制器)。避免建立「來源為任何位置」的規則,以免若路由器誤做埠轉發時將控制台暴露於外網。

若您同時執行 QuickConnect、Photos 或其他對外服務,建議將規則排序檢查一遍,確認沒有較寬鬆的規則蓋過較嚴格的條目。測試階段可暫時關閉防火牆確認連線問題是否與規則相關,但正式環境請務必重新啟用並以最小權限放行。

7 DHCP 或手動閘道/DNS

手動設定:在 Windows、macOS、iOS、Android 的 Wi‑Fi 詳細資訊中,將「路由器/閘道」保留為原廠 IP 或僅把「代理」指向 192.168.1.10:7890,是最穩定的起步方式。若您確定要走「改閘道」路線,請同步設定DNS 伺服器(指向 NAS 或可信的公共 DNS),並確認 NAS 上的 Mihomo DNS 區塊與系統轉發一致,否則 FakeIP 與分流規則可能出現「能 ping 不能瀏覽」的現象。

路由器 DHCP:部分家用路由器可在 DHCP 選項中加入「預設閘道覆寫」或靜態路由,將特定裝置的閘道指到 NAS。不同廠牌介面差異大,核心仍是:客戶端拿到的閘道必須能連到 NAS,且 NAS 必須能把封包送回 WAN。建議先以單一手機測試,再決定是否對全屋裝置下發。

合規與風險 請在合法授權的網路環境內設定代理與路由;企業或學校網路常有政策禁止二層閘道或 DNS 竄改,擅自修改可能造成無法連線或違反使用條款。

8 透明代理與 TUN 進階

若您希望「改閘道」後無需在各裝置填代理,即為透明代理場景。於 DSM 的 Docker 內啟用 TUN,通常需在 Container Manager 勾選高權限執行、加入 NET_ADMIN 能力值,並掛載裝置 /dev/net/tun;部分機型亦可能需額外驅動或核心模組支援,無法保證跨型號一致。

另一思路是使用 network_mode: host 讓容器與 DSM 共用網路堆疊,較容易綁定本機埠與 TUN,但升級 DSM 後較需重測。無論採哪一種,請在變更前備份 config.yaml,並以單一測試裝置驗證,避免全家斷網。

compose snippet (advanced)
# Optional: only after you understand TUN risks on DSM
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun
    privileged: true

9 驗證與儀表板

在區網任一台電腦執行 curl -x http://192.168.1.10:7890 -I https://www.google.com(請替換為實際 NAS IP),若回應標頭正常,代表混合埠與防火牆已打通。接著瀏覽器開啟 http://192.168.1.10:9090/ui(依您面板部署方式調整),確認能載入 Yacd 或內建 UI,並檢查節點延遲測試是否成功。

容器日誌若出現設定載入錯誤,多半是 YAML 縮排或訂閱 URL 無法解析;可先將 log-level 調為 debug 觀察,再恢復為 info。每次調整 config.yaml 後,在 Container Manager 重新啟動容器即可套用。

10 常見問題

  • 改閘道後全斷線:先改回路由器為閘道;檢查 NAS 是否啟用 IP 轉發、靜態路由是否指回 192.168.1.1,以及 NAS 本機是否能正常上網。
  • 只有瀏覽器可走代理:代表多數流量仍直連;要嘛在各系統填入 HTTP/SOCKS 代理,要嘛完成 TUN/透明轉發進階設定。
  • 埠連不上:優先查 DSM 防火牆與路由器是否對 7890 做額外過濾;再確認容器埠映射與 YAML 埠一致。
  • DNS 怪異或部分網站打不開:檢查 FakeIP 與本機 DNS 快取;可暫時改為 redir-host 模式比對差異。

11 總結

群暉 DSM 7 上以 Docker 部署 Mihomo,能把與 Clash 相容的規則引擎搬到現成 NAS,並透過固定 IP、資料卷與防火牆完成可維運的 NAS 代理基礎。若目標是快速可用,建議先以區網代理埠達成需求;若堅持預設閘道指向 NAS 的旁路閘道透明分流,再把 TUN 與轉發列入實驗排程並做好還原計畫。

相較僅依賴單一裝置上的圖形用戶端,NAS 常駐核心適合當「家中網路的中繼規則層」;若您同時也需要筆電外出時的一鍵 TUN 與訂閱圖形化管理,仍可搭配本站下載頁挑選合適的桌面用戶端,與 NAS 上的 Mihomo 並存。

立即免費下載 Clash,體驗穩定流暢的跨平台代理 →

標籤: Synology DSM 7 Docker Mihomo 旁路閘道 NAS 代理
Clash 用戶端 Logo

Clash Verge Rev

新一代 Clash 用戶端 · 免費開源

繼承 Clash for Windows 衣缽、內建 TUN 模式、支援訂閱一鍵匯入,Windows、macOS、Linux 全平台可用。專為開發者與進階用戶設計,無論是日常連線還是進階分流,都能輕鬆應對。

TUN 全流量接管 Mihomo 高效能核心 精準規則分流 DNS 防洩漏 多訂閱管理

相關閱讀