進階配置 · 預計閱讀 14 分鐘

Mihomo find-process-mode:
TUN 模式下進程探測、YAML 設定與 PROCESS-NAME 命中率(Clash Meta)

你已經會開 TUN 模式或正在用 MihomoClash Meta 接管底層流量,下一步最常卡住的是:規則明明寫了 PROCESS-NAME,連線卻像「看不見程式」一樣走錯組,或是在儀表板裡無法回答「究竟是哪個行程在走這條代理」。這通常不是規則語法突然失效,而是進程辨識這條鏈路還沒被你對齊——頂層的 find-process-mode 決定了核心要不要、以及在什麼條件下才把連線對應回使用者態行程。本文把這個開關放回整體模型裡講清楚,並補上 Linux/Windows 常見權限誤判/漏判場景,與站內 PROCESS-NAME 分流範例TUN 入門分工閱讀。

find-process-mode · TUN · 進程匹配 · Mihomo · PROCESS-NAME · YAML · Clash Meta

1 為什麼開 TUN 時更要談 進程匹配

TUN 模式的本質,是把大量原本散落於「瀏覽器/系統代理/個別 App」的流量,改由虛擬網路介面集中進入Mihomo。對使用者來說這很棒:終端機、容器周邊與背景元件較不容易繞過規則;但對核心來說,每一個封包最初往往只是一組五元組與路由決策——要把這條連線對應回「到底是 Chrome、Discord,還是某個更新器」,必須再做一層行程層級的資訊補齊,才能在規則引擎裡命中 PROCESS-NAMEPROCESS-PATH 這類條件。

也因此:PROCESS-NAME「會不會準」,並不只跟你規則怎麼寫有關,而是同時依賴平台是否能提供可信的行程對照,以及你是否允許核心用對的成本去做這件事——這正是 find-process-mode 介入的位置。你可以把它理解為「進程分流開關的策略旋鈕」:off 等於告訴核心別費心找行程(域名/IP 規則仍可照常工作);strict 偏向只在資訊可靠時才相信進程匹配,藉此降低誤判;always 則更積極解析,追求更高的命中率,但可能增加開銷,而且仍無法保證每一條連線都能對應到你心目中的那個 App。

sniffing(協定嗅探)處理的多半是「這個 TLS/HTTP 連線背後的域名或 SNI是什麼」;find-process-mode 處理的是「這條連線背後的行程是誰」。兩者常常一起出現在進階 YAML,但彼此不能互相替代——別拿嗅探結果硬貼成進程規則的替代品。
與站內姊妹篇的分工 若你想先把「遊戲與辦公 exe 分流」的規則骨架搭起來,請讀 Windows PROCESS-NAME 教學;本文只補「為什麼 TUN 開了仍對不上」這條內核/辨識縱軸,並給你可調的 YAML 頂層開關。

2 find-process-mode:strict/always/off 怎麼取捨?

下列語意以多數 Clash MetaMihomo 公開文件與社群共識為準;若你使用的是特定 GUI 內嵌打包版本,仍建議對照該版本的 Release Notes,將本文當作概念地圖而非唯一真理來源。

  • strict(嚴格):偏向「沒把握就不要硬匹配」。當核心無法取得足夠可信的行程資訊時,會避免把連線貼上錯的程式標籤,從而降低「明明是 A 軟體,卻被標成 B」這種誤判風險。缺點是你會更容易遇到「規則寫了 PROCESS-NAME,但這條連線始終走 fallback」——它其實是在逼你先確認:這條連線究竟能不能被歸因到使用者程式。
  • always(積極):偏向「盡量去找」。核心會更頻繁/更執著地做行程查找,對某些難抓的背景連線可能提升命中率;代價是更多的 CPU/系統呼叫開銷,而且在複雜場景(更新器、服務子行程、沙盒)仍可能出現邊界案例。
  • off(關閉):明確關閉進程查找。此時 PROCESS-NAMEPROCESS-PATH 類規則通常不該再當作可靠手段;你若仍然放置這些規則,很多情境會退化成「形同虛設」或只在極少數例外路徑湊巧命中——這正是許多新手覺得「我的規則壞了」但其實是開關設錯的經典誤會。

實務上的推薦順序通常是:先用 strict建立可預期的基線;若你已經非常確定環境乾淨、且確實存在「必須靠進程才能把某類長連線從 DOMAIN 規則拯救出來」的需求,再評估改成 always做 A/B 對照;若你根本不做應用級分流,而是純域名/IP 策略,則可以乾脆 off減少無謂開銷。

别把「模式」当成「权限替身」 find-process-mode 再怎麼調,也無法憑空跨越作業系統對 /proc、行程控制區塊或安全軟體攔截的限制;若平台層拒絕提供對照,你再 aggressive 也只能得到「找不到」這個結果。

3 YAML 怎麼寫:把 find-process-mode 放在設定頂層

在典型的 Mihomo 設定檔中,find-process-mode 屬於全域行為開關,會影響後續規則評估時是否能取得行程名稱/路徑。下列片段僅示意欄位位置與常見取值,實際鍵名請以你的發行版本為準;若你透過 Clash Verge Rev 等 GUI 生成檔案,亦可先在進階編輯器中確認該鍵是否已被覆寫。

YAML
# Example — global process lookup policy for Mihomo / Clash Meta
find-process-mode: strict

tun:
  enable: true
  stack: system
  auto-route: true
  strict-route: false

rules:
  - PROCESS-NAME, Spotify.exe, PROXY_GROUP_MEDIA
  - PROCESS-PATH, /usr/bin/curl, DIRECT
  - MATCH, FINAL_GROUP

一旦你把 TUN進程規則放在同一個設定生命週期裡維護,建議你也同步檢視 tun.stackauto-route與 DNS 相關區塊——某些「規則命中不如預期」其實是路由/DNS 回流導致連線走了另一條路徑,而不是進程辨識失效。若 DNS 行為仍讓你困惑,可再對照站內 DNS 防洩漏 與 Mihomo DNS 專文。

小型實驗清單(建議照順序) 備份設定 → 將 find-process-mode 設為 strict → 重載 → 用单一應用程式制造對外連線 → 在儀表板查連線是否顯示預期行程 → 再逐步加入 PROCESS-NAME/PROCESS-PATH 規則並調整順序。

4 LinuxWindowstun 權限與行程資訊來源並不是同一件事

很多人在論壇裡把「TUN 建立不起來」與「PROCESS-NAME 對不上」混成同一題,但其實它們對應的系統門檻常常不同。對 Linux 而言,CAP_NET_ADMIN(以及對 /dev/net/tun 這類裝置節點的可開啟權限)是經典的硬前置;若你用 systemd 託管核心,還要留心單元檔裡的 CapabilityBoundingSetAmbientCapabilities與裝置允許清單是否真的能讓長駐服務完成路由插入。這一步若失敗,你根本不會進入「規則評估」這個階段——自然也就無從討論進程分流。

當 TUN 已经稳定運作後,進程匹配第二道門檻才是:核心是否能透過系統 API/procfs 等方式把「這個 socket」對回「哪個 PID/執行檔」。在過度沙箱化的服務(例如某些預設強 hardening 的 unit)或受限容器中,行程資訊可能不完整,使得 strict 模式下長期呈現「對不上」——這時你要優先檢查的不是規則文案,而是執行身分與安全策略是否允許對照。

Windows 使用者來說,典型桌面環境下管理員權限與驅動/WFP(Windows Filtering Platform)相關議題常跟 TUN/透明代理綁在一起;同時,安全軟體對「行程注入/流量重定向」的過敏也可能間接干擾連線歸因的可見度。若你只在本機測試某個 .exe,請務必確認規則匹配的是實際對外連線的那個行程名稱:許多程式會派出 updater、helper、webview host,你的規則若只寫主程式,會出現「我已經開著 App,但規則不吃」的假象。

  • Linux systemd:確認 unit 没有過度的 ProtectSystem=strictProtectKernelTunables 組合把資訊來源掐死(實際可否停用需自行权衡安全模型)。
  • Windows:用工作管理員/資源監視器核对對外連線 PID,再對照規則文字是否写錯大小寫或缺少副檔名。
  • 多使用者/服務帳號:核心若在 service session,對桌面使用者行程的可見度可能不同;這類問題多半要靠「改成使用者會話啟動」或調整服務模型。
不要用過時教程硬套新路徑 Meta 家族迭代很快:同一個鍵在不同版本的預設值或細節行為可能微调。升級後若進程規則集體失效,請先看 Release Notes 是否提及進程查找、tun stack 或規則優先級調整。

5 為什麼規則「看起來正確」卻仍然漏判誤判

下列檢查清單多半能把問題從「玄學」拉回「可複現」:

  1. 規則順序:更早的 DOMAIN-SUFFIXGEOIPIP-CIDR 規則是否已经決定了出站?進程規則若排在後面,可能根本碰不到那条連線。
  2. 實際行程名稱:Windows 需要對準真正的 .exe 名稱;Linux 可能是 python3java 這類母体進程,而不是你在 IDE 裡看到的專案名稱。
  3. split tunnel/例外路由:某些 VPN 或企業代理會插入更高優先路由,導致流量根本沒進入 Mihomo 的規則路徑。
  4. local/loopback 特例:本機服務互連有時不走你想像的 tun path;請用連線紀錄確認來源是否仍在使用者程式。
  5. strict 的保守策略:当資訊不足以可靠匹配時,strict 選擇「不要瞎猜」,這時應視為訊號而非 bug——你需要換模式或改規則模型。

若你把上述項目逐一排除後仍舊卡住,下一步通常是暫時調高 log-level或改用外部控制器觀察連線細節(仍請注意不要把敏感域名/token 貼到公開場合)。長期維護上,建議把「會頻繁改名的進程規則」收斂成PROCESS-PATH(若能接受絕對路徑維護成本),或退回域名規則 + sniffing的穩定組合。

與訂閱刷新無關 find-process-mode 不會影响機場連結多久更新一次;若你同時在調整 proxy-providers interval,請閱讀 interval/lazy 訂閱 YAML 篇以免混線。

6 建議的除錯流程:先看見「核心眼中的行程」,再改規則

實務上最省時間的路線,是把調参拆成「觀測 → 改設定 → 再觀測」的回合:

  • 觀測:選定一個問題 App,製造一條穩定的對外 HTTPS 連線;在外部控制器/Dashboard 找到對應連線列,確認是否有行程名稱/路徑欄位。
  • 調開關:若完全沒有行程資訊且你確定 find-process-mode 不是 off,先在測試環境將模式改為 always 做對照;若 always 仍長期空白,偏向权限/環境問題。
  • 調規則:把 PROCESS 規則上移或改成更符合真實 exe/路徑的文字;同步檢查是否需要為 helper 行程另寫一條規則。
  • 回落:若進程分流成本過高,改用域名/Geosite/Rule Provider 統一治理,把進程規則限制在少数顽固案例。

若你已經在使用 REST/面板工具,亦可複習 外部控制器與 Yacd 的安全設定,避免為了除錯而把監聽界面暴露在公開網路。

7 實務問答(對齊結構化 FAQ)

問:我只有域名規則,也需要設 find-process-mode 嗎?
若你完全不使用 PROCESS-* 規則,理論上可以設為 off減少開銷;但若 GUI 預設開啟進程能力供連線詳情顯示,維持 strict 通常也可接受。

問:為什麼儀表板看得到行程名稱,但規則仍不吃?
多半是規則順序策略組選擇問題——連線雖然被標記行程,但在評估鏈更早的位置已經被別的條件送去 DIRECT/另一組節點。

問:always 會讓電池/CPU 很有感嗎?
在高連線數、長連線多的場景確實可能更有感;請以實測為準,並避免長期為了「心里踏实」而常驻 always。

合规提醒 請在合法合規情境下使用代理與分流功能;企業設備請遵循資訊安全政策,勿擅自繞過監管。

8 總結

MihomoTUN 模式下要回答「誰在走代理」,核心鏈路是:先把流量導進來,再在規則評估時決定要不要、以及多積極地做進程查找——這就是 find-process-mode。把它設對之后,PROCESS-NAMEPROCESS-PATH 才能真正成为你手上的精密扳手,而不是一堆「偶爾生效」的許願規則;若再加上對 LinuxWindows 權限與子行程分裂的理解,你就能系统性排除漏判與誤判,而不是每次開機都像抽獎。

與純命令行或散落設定檔相比,許多桌面使用者會碰到「知其然不知其所以然」的痛點:複製了別人的規則集卻不知道進程開關仍停在 off,或在 strict 環境裡硬寫一堆 PROCESS 規則導致大量 fallback。Clash Verge Rev 這類整合 MetaMihomo 能力、並把 TUN、DNS、規則與連線詳情放在同一視窗裡的原生用戶端,通常能把「觀測 → 調 find-process-mode → 驗證命中」變成可複製的操作節奏,而不是論壇碎片化截圖。若你希望把本文的 YAML 與實測流程落到日常主力機,不妨先從 本站下載頁取得與教程一致的安裝來源,再在圖形介面裡對照連線詳情與規則順序——比起盲目追逐第三方修改版核心,這條路往往更能長期維護。

→ 前往下載頁取得 Clash Verge Rev(內建 Meta/Mihomo 能力)

標籤: find-process-mode Mihomo TUN 進程匹配 PROCESS-NAME YAML Clash Meta
Clash 桌面客戶端 Logo:Mihomo TUN 與 find-process-mode 進程匹配示意

Clash Verge Rev

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

需要同時看清楚 TUN連線詳情規則命中鏈時,圖形介面能把「調整 find-process-mode → 驗證 PROCESS-NAME」變成連貫動作;也更適合與本站其他 Mihomo YAML 教程互相對照。

TUN 全流量接管 Mihomo 高效能核心 進程與域名規則並行 DNS 防洩漏 多訂閱管理