本文目錄
先把 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。下面兩組依賴只能按自己的防火牆選一組,不能兩組一起裝。
# 仅适用于 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。
第一次啟用訂閱
手動更新
確認檔案時間和大小變化,並記錄下載階段的 HTTP 錯誤。
執行設定檢查
先處理 YAML 行號、未知欄位和策略群組引用。
設為目前設定
回到狀態頁確認實際載入的檔案名。
固定一個節點
先不要使用會自動切換出口的測速組。
訂閱能用後,只選一種執行模式做第一次測試
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 都要指向旁路由,只改其中一個只能證明半條路徑。
- 手機或電腦從 DHCP 獲得閘道和 DNS
- OpenWrt接收終端的連線和解析請求
- OpenClash按設定和規則選擇出口
- 目標服務從直連或代理路徑收到請求
旁路由情境不能只改閘道或只改 DNS。兩者不一致時,常見表現就是網頁偶爾能開,但規則命中和解析結果不穩定。
驗證順序從路由器本機走到一台終端
一次能說明問題的驗證
先測路由器本機
確認系統時間正確、WAN 能聯網、訂閱網域可以解析。
再看核心狀態
設定載入成功,固定節點有連線結果,日誌沒有持續重啟。
接入一台電腦
不設定瀏覽器擴展代理,只依賴新的閘道和 DNS。
對照三類位址
分別存取國內網站、需要代理的網站和路由器管理頁,並核對連線記錄。
路由器本機能存取、下游電腦不能存取時,優先檢查 DHCP、閘道和防火牆轉發;網域失敗而 IP 請求有回應時,再查 DNS;連線記錄已經出現但出站錯誤,才回到規則和策略群組。按這條順序處理,比反覆重啟 OpenClash 更快。
全屋上線要按裝置類型逐批進行
一台電腦和一部手機穩定後,再加入電視、遊戲機和智慧家庭。每新增一類裝置都保留原閘道與 DNS,出現異常就先讓這類裝置退回直連;家庭網路恢復以後,日誌和規則才有條件慢慢看。
最終修改 DHCP 前,記錄停用 OpenClash、恢復原 DNS 和進入 failsafe 的方法。訂閱更新、韌體升級或核心替換都可能改變行為,有一條不依賴 OpenClash 的管理路徑,後續維護才不會把一次外掛程式故障變成全家斷網。
