設定實務 · Clash 技術部落格

OpenClash 教學:OpenWrt 安裝、訂閱匯入與全屋代理設定

OpenClash 裝好並不等於全屋裝置已經接入。先確定主路由或旁路由拓撲,再按外掛程式、核心、訂閱、接管方式和 DNS 的順序設定。

  • OpenWrt
  • OpenClash
  • 全屋代理
本文目錄

先把 OpenClash 外掛程式和 Mihomo 核心裝到能穩定執行

這篇教學先把路由器本身跑通,再談訂閱和全屋接入。開始前到「狀態 → 概覽」記下 OpenWrt 版本、CPU 架構和可用記憶體,再到「系統 → 備份與升級」匯出一份設定。路由器空間本來就緊張,先確認 /overlay 還有餘量,能避免軟體套件裝到一半才失敗。

先透過 SSH 執行下面的只讀命令。command -v opkg 有輸出,才繼續使用本文的 opkg 安裝路徑;如果裝置只有 apk,就不要把 opkg 命令硬套上去,應按 OpenClash 目前發布頁中的 apk 說明安裝。

先確認韌體、空間和套件管理員
ubus call system board
df -h /overlay
free -h
command -v opkg

下載只使用 vernesong/OpenClash 的發布頁。LuCI 可以走「系統 → 軟體套件 → 上傳軟體套件」,把官方 ipk 上傳後安裝;SSH 方式則把同一個檔案傳到 /tmp/openclash.ipk。

OpenWrt 23.05 之後常見的是 firewall4 與 nftables,較老韌體可能仍是 iptables。下面兩組依賴只能按自己的防火牆選一組,不能兩組一起裝。

opkg 韌體的安裝路徑
# 仅适用于 command -v opkg 有输出的固件
opkg update

# firewall4 / nftables 固件选这一行
opkg install bash dnsmasq-full curl ca-bundle ip-full ruby ruby-yaml kmod-tun kmod-inet-diag unzip kmod-nft-tproxy luci-compat luci luci-base

# 老的 iptables 固件改用这一行,不要和上一行同时执行
# opkg install bash iptables dnsmasq-full curl ca-bundle ipset ip-full iptables-mod-tproxy iptables-mod-extra ruby ruby-yaml kmod-tun kmod-inet-diag unzip luci-compat luci luci-base

opkg install /tmp/openclash.ipk
opkg status luci-app-openclash

安裝結束後重新整理 LuCI,入口應出現在「服務 → OpenClash」。進入「外掛程式設定 → 版本更新」,確認核心編譯版本與路由器架構一致,然後下載或更新 Meta 核心。

手動放置核心時,官方要求目錄為 /etc/openclash/core/,檔案名為 clash_meta。這一步沒有完成,luci-app-openclash 頁面能開啟也不能處理流量。

回到 OpenClash 首頁啟動服務,然後看執行日誌。若處理程式幾秒後退出,先按日誌處理缺少依賴、空間不足或 exec format error,不要繼續匯入訂閱。外掛程式、核心和日誌這三處都正常,安裝階段才算結束。

啟動後核對外掛程式、核心和日誌
opkg status luci-app-openclash
ls -l /etc/openclash/core/
/etc/init.d/openclash enable
/etc/init.d/openclash restart
sleep 3
pgrep -af clash_meta
logread | grep -i openclash | tail -n 80

安裝完成的判斷

  • LuCI 的「服務 → OpenClash」可以開啟
  • 版本更新頁顯示的核心架構與路由器一致
  • /etc/openclash/core/clash_meta 存在且能啟動
  • 重啟服務三秒後仍能看到 clash_meta 處理程式
  • 日誌沒有缺少依賴、空間不足或執行格式錯誤
  • 停用 OpenClash 後 OpenWrt 仍可直連上網

在「設定檔訂閱」裡匯入,並確認它真的被載入

進入「設定檔訂閱」,新增服務方提供的 Clash 或 Mihomo 訂閱位址,再手動更新一次。真正匯入成功應同時看到:檔案更新時間變化、代理群組和節點出現、設定檢查透過,而且狀態頁顯示的目前設定就是剛更新的這份。

如果頁面提示任務結束但節點仍為空,查看下載日誌。HTTP 401、403、跳轉到登入頁、方案提示或空檔案,說明訂閱內容沒有正常取回;YAML 行號、unknown field 或 group not found 則屬於解析問題。檢查時隱藏 URL 中的個人 token。

第一次啟用訂閱

  1. 手動更新

    確認檔案時間和大小變化,並記錄下載階段的 HTTP 錯誤。

  2. 執行設定檢查

    先處理 YAML 行號、未知欄位和策略群組引用。

  3. 設為目前設定

    回到狀態頁確認實際載入的檔案名。

  4. 固定一個節點

    先不要使用會自動切換出口的測速組。

訂閱能用後,只選一種執行模式做第一次測試

OpenClash 的 Fake-IP、Redir-Host、TUN 或混合模式解決的是不同接管需求,不是同時開啟才完整。第一次執行先採用目前外掛程式推薦的常用模式,讓一台電腦產生連線記錄,再處理少數應用的相容問題。

Fake-IP 便於核心較早拿到網域並執行規則,但區域網路網域和少數應用可能需要排除;Redir-Host 回傳實際解析結果,行為更直觀;TUN 能接住更多不讀取系統代理的流量,也更容易與 VPN、策略路由或硬體加速衝突。

切換模式後,讓測試電腦重新取得網路位址並清理 DNS 快取,再存取同一個網站。舊快取不清掉,新模式很容易被誤判為沒有生效。

準備全屋接入前,先確定 OpenWrt 是主路由還是旁路由

OpenClash 能否處理手機、電視和 NAS 的流量,取決於這些裝置的預設閘道,而不是外掛程式頁面是否顯示執行。OpenWrt 做主路由時,LAN 裝置本來就經過它;做旁路由時,只有把閘道交給 OpenWrt 的裝置才會進入 OpenClash。

旁路由第一次測試只改一台電腦的閘道和 DNS。它能同時開啟普通網站、需要代理的網站和路由器管理頁以後,再修改 DHCP。直接切換全家裝置,一旦 DNS 或防火牆出錯,連管理頁面都可能打不開。

兩種家庭網路接法

接法OpenWrt 負責什麼還原方式
OpenWrt 主路由接入、DHCP、DNS 和防火牆都在同一台裝置停用 OpenClash 後仍由 OpenWrt 直連
OpenWrt 旁路由原主路由繼續聯網,指定裝置把閘道交給 OpenWrt把測試裝置的閘道和 DNS 改回主路由

閘道決定連線去向,DNS 決定規則能否認出網域

OpenWrt 做主路由時,DHCP 通常把它的 LAN 位址同時作為預設閘道和 DNS 傳送給終端。旁路由測試階段則可在一台電腦上手動填寫旁路由位址,確認無誤後再讓主路由 DHCP 對指定裝置傳送。兩個 DHCP 服務同時在同一網段傳送位址,會造成時好時壞,而不是可靠的備援。

瀏覽器安全 DNS、Android 私人 DNS 和某些電視應用的內建 DoH 可能繞過路由器。檢查時先暫時關閉這些獨立入口,讓查詢經過 dnsmasq 與 OpenClash;規則命中穩定後,再決定哪些加密 DNS 需要恢復。

IPv6 也要一起看。裝置拿到公用網路 IPv6、但 OpenClash 只接管 IPv4 時,部分連線會從 IPv6 直接出去。此時應明確處理 IPv6 路由和解析,而不是簡單把所有「偶爾直連」歸咎於節點。

NAS、印表機和路由器管理介面
私有網段和本機網域應保持直連,先確認管理入口不會被接管。
遊戲機和電視
它們很少給出詳細錯誤,放在電腦和手機驗證完成以後再加入。
旁路由
測試裝置的閘道和 DNS 都要指向旁路由,只改其中一個只能證明半條路徑。
一台終端經過 OpenClash 的完整路徑
  1. 手機或電腦從 DHCP 獲得閘道和 DNS
  2. OpenWrt接收終端的連線和解析請求
  3. OpenClash按設定和規則選擇出口
  4. 目標服務從直連或代理路徑收到請求

旁路由情境不能只改閘道或只改 DNS。兩者不一致時,常見表現就是網頁偶爾能開,但規則命中和解析結果不穩定。

驗證順序從路由器本機走到一台終端

一次能說明問題的驗證

  1. 先測路由器本機

    確認系統時間正確、WAN 能聯網、訂閱網域可以解析。

  2. 再看核心狀態

    設定載入成功,固定節點有連線結果,日誌沒有持續重啟。

  3. 接入一台電腦

    不設定瀏覽器擴展代理,只依賴新的閘道和 DNS。

  4. 對照三類位址

    分別存取國內網站、需要代理的網站和路由器管理頁,並核對連線記錄。

路由器本機能存取、下游電腦不能存取時,優先檢查 DHCP、閘道和防火牆轉發;網域失敗而 IP 請求有回應時,再查 DNS;連線記錄已經出現但出站錯誤,才回到規則和策略群組。按這條順序處理,比反覆重啟 OpenClash 更快。

全屋上線要按裝置類型逐批進行

一台電腦和一部手機穩定後,再加入電視、遊戲機和智慧家庭。每新增一類裝置都保留原閘道與 DNS,出現異常就先讓這類裝置退回直連;家庭網路恢復以後,日誌和規則才有條件慢慢看。

最終修改 DHCP 前,記錄停用 OpenClash、恢復原 DNS 和進入 failsafe 的方法。訂閱更新、韌體升級或核心替換都可能改變行為,有一條不依賴 OpenClash 的管理路徑,後續維護才不會把一次外掛程式故障變成全家斷網。

參考資料