macOS 安裝 Clash 客戶端:網路延伸功能授權、鑰匙圈提示與「已損壞」警告處理
整理「已損壞,無法打開」的處理方式、首次啟用 TUN 時的網路延伸功能授權,以及鑰匙圈密碼提示反覆出現的原因與解法。
先釐清安裝遭封鎖、網路權限與憑證存取
macOS 上名稱含有 Clash 的客戶端,安裝與授權方式不盡相同。圖形介面、代理核心、特權輔助程式和網路延伸功能可能分屬不同元件。Clash Meta 現稱為 mihomo;使用 mihomo 核心,不代表客戶端一定透過 Apple 網路延伸功能來實作 TUN。處理提示視窗前,先記下客戶端名稱、版本、macOS 版本及完整提示內容,不要把所有密碼欄都當成同一種權限要求。
| 出現時機與提示內容 | 主要檢查項目 | 接下來怎麼做 |
|---|---|---|
| 首次啟動時提示無法驗證開發者或應用程式已損壞 | 安裝檔來源、架構、簽章與隔離屬性 | 先重新下載符合需求的安裝檔,再查看系統封鎖資訊 |
| 安裝輔助工具時要求輸入管理者密碼 | 特權輔助程式或服務模式 | 確認要求授權的程式名稱與安裝操作相符 |
| 啟用 TUN 時提示新增 VPN 設定或核准延伸功能 | 客戶端採用的網路流量接管方式 | 依系統顯示的設定或延伸功能類型授權 |
| 提示存取鑰匙圈中的特定項目 | 已儲存的憑證與應用程式存取控制 | 確認項目名稱、要求存取的應用程式及登入鑰匙圈狀態 |
安裝前確認晶片架構與應用程式位置
Apple 晶片選 arm64,Intel 機型選 x64
開啟蘋果選單 →「關於這台 Mac」。若顯示 Apple M 系列晶片,優先選擇 macOS arm64 或 Apple Silicon 版本;若顯示 Intel 處理器,則選擇 x64 或 x86_64 版本。Universal 版本可能同時包含兩種架構,請以發布說明為準。Apple 晶片透過 Rosetta 執行部分 Intel 應用程式,不代表其中的輔助程式也一定相容。
- 先結束正在執行的同名客戶端,避免舊程序繼續占用本機代理連接埠。
- 開啟 DMG,將應用程式拖曳至「應用程式」資料夾,避免長期從磁碟映像檔或「下載項目」資料夾執行。
- 退出 DMG,再從「應用程式」資料夾啟動客戶端;之後的授權應套用於這個固定位置的副本。
- 首次使用時先匯入設定檔並測試系統代理,確認連線正常後再啟用 TUN。
保留多個同名副本,可能導致登入項目、鑰匙圈存取紀錄與實際啟動路徑不一致。更新前應先結束應用程式,再替換「應用程式」資料夾中的舊副本;不要一邊執行舊版本,一邊啟動新下載的副本進行授權。
「已損壞,無法打開」:先檢查,再決定是否允許開啟
顯示「已損壞」不一定代表下載檔案不完整,也可能是簽章失效、應用程式內容遭修改,或未通過系統評估。另一種常見提示是「無法驗證開發者」。兩者不能一概而論,更不應看到提示就直接關閉系統安全檢查。
優先使用系統提供的單一應用程式允許開啟方式
- 確認安裝檔來自該專案的正式發布管道,並核對系統需求與晶片架構。
- 重新下載安裝檔,完整替換舊副本,再嘗試啟動一次。
- 開啟「系統設定」→「隱私權與安全性」,查看「安全性」區域是否列出該應用程式的封鎖紀錄。
- 確認應用程式身分後,再使用系統提供的「仍要打開」等選項,並依提示完成驗證。
macOS 15 調整了部分未正確簽署或未經公證的應用程式之允許開啟方式,不要假設舊教學中的「按右鍵 → 打開」一定能略過提示。若系統明確警告有惡意軟體,或應用程式會損害電腦,請停止執行並重新確認來源;一般應用程式的允許開啟步驟不適用於這類警告。
終端機檢查僅適用於已確認的應用程式
以下以實際安裝路徑為 /Applications/Clash Verge.app 的客戶端為例。若應用程式名稱不同,請使用 Finder 中的實際路徑;也可以將應用程式拖曳至終端機以取得路徑。以下三個指令分別用來查看隔離屬性、驗證程式碼簽章完整性,以及要求系統進行執行評估,不會授予網路權限。
xattr -p com.apple.quarantine "/Applications/Clash Verge.app"
codesign --verify --deep --strict --verbose=2 "/Applications/Clash Verge.app"
spctl --assess --type execute --verbose=4 "/Applications/Clash Verge.app"
第一個指令若回傳「No such xattr」,表示沒有該屬性,不代表安裝失敗。簽章驗證通過也不能單獨證明發布者可信,仍須確認來源和簽章身分。若簽章驗證失敗,建議重新下載或回報維護者,不要重新簽署來掩蓋失敗原因。
只有在確認來源與應用程式完整性,且了解解除隔離的風險後,才考慮移除該應用程式本身的隔離屬性:
xattr -d com.apple.quarantine "/Applications/Clash Verge.app"
這個指令無法修復損毀的程式、補上簽章或完成公證,也不一定能解決啟動失敗。不要將目標改成整個「應用程式」資料夾,也不要習慣性加上遞迴參數或管理者權限,更不要全域關閉 Gatekeeper。若問題仍未解決,請保留錯誤訊息,並重新參照專案的安裝說明。
首次啟用 TUN:分別處理網路延伸功能與輔助服務
TUN 透過虛擬網路介面和路由接管流量,可涵蓋部分不遵循系統代理設定的應用程式,但實際範圍仍受路由、排除項目和通訊協定支援限制。系統代理主要提供 HTTP、HTTPS 或 SOCKS 代理設定給應用程式,通常不需要安裝網路延伸功能。不能從其中一種模式的授權需求推斷另一種模式也需要相同授權。
先確認客戶端採用哪種實作方式
- 特權輔助程式或服務模式:客戶端可能要求安裝輔助工具,以便核心建立 TUN 介面、調整路由和 DNS。這類實作不一定會出現在網路延伸功能清單中。
- Network Extension:使用 Apple 網路延伸功能的客戶端,可能會要求新增 VPN 設定、執行隧道提供者,或核准相關延伸功能。僅核准目前安裝的應用程式所對應的項目。
- 內容過濾器:若另有過濾網路內容的提示,請確認專案文件是否確實要求此功能;並非所有 Clash 客戶端啟用 TUN 都需要內容過濾器。
依 macOS 版本尋找授權位置
在 macOS 13、14 中,可先檢查「系統設定」→「隱私權與安全性」頁面底部是否有遭封鎖的系統軟體或延伸功能提示,並查看「網路」中的 VPN 或過濾器項目。macOS 15 可前往「系統設定」→「一般」→「登入項目與延伸功能」→「網路延伸功能」查看;VPN 設定則在系統設定的「VPN」頁面。是否會顯示相關項目,取決於客戶端的實作方式和安裝進度。
- 先關閉其他 VPN、其他代理客戶端的 TUN,以及可能變更路由的測試工具。
- 在目前使用的客戶端中安裝文件要求的輔助服務,並確認系統驗證視窗中顯示的程式名稱。
- 啟用 TUN,處理此次操作直接觸發的設定或延伸功能請求;只有系統要求時才重新啟動。
- 查看客戶端記錄,分辨是權限不足、介面建立失敗還是路由衝突,不要只看開關是否亮起。
由機構管理的 Mac 可能透過裝置管理政策限制延伸功能或 VPN 設定。遇到這種情況,請聯絡管理者,而不是降低啟動安全性或停用系統完整性保護。正常安裝這類客戶端,不應以關閉上述系統保護作為通用前置條件。
鑰匙圈提示反覆出現:檢查密碼、應用程式身分與項目權限
典型的鑰匙圈視窗會顯示「某個應用程式想要使用儲存在鑰匙圈中的機密資訊」,並列出具體項目名稱。這與安裝輔助工具時出現的「允許此操作」驗證視窗不同。請先看清楚存取要求,再決定要選「允許一次」、「永遠允許」或拒絕。
登入鑰匙圈密碼可能與目前的登入密碼不同
一般情況下,登入鑰匙圈會在登入帳號時自動解鎖。透過帳號復原或其他管理者重設登入密碼後,舊鑰匙圈可能仍使用原本的密碼,因此反覆輸入新的登入密碼也可能無法解鎖。透過「Spotlight 搜尋」開啟「鑰匙圈存取」,確認「登入」鑰匙圈是否已鎖定,再判斷是否需要使用舊密碼解鎖。
若已不記得舊密碼,不要只為了消除提示就重設鑰匙圈。重設可能導致無法再存取舊鑰匙圈中的密碼、憑證或權杖;請先閱讀系統提示,確認備份與帳號復原方式,再決定如何處理。
更新後應用程式身分改變,可能需要重新確認
更換發布管道、從其他分支遷移、改用不同簽章的版本,或從多個路徑執行同名應用程式,都可能使既有存取授權不再適用。外觀和名稱相同,不代表系統辨識到的程式碼身分也相同。
- 結束所有同類客戶端,只保留「應用程式」資料夾中的一個副本執行。
- 在「鑰匙圈存取」中搜尋提示視窗顯示的完整項目名稱,不要批次刪除名稱含有 Clash 的項目。
- 開啟對應項目的詳細資訊;若密碼項目提供「存取控制」選項,請確認獲准存取的應用程式是否指向舊副本。
- 確認目前的應用程式確實需要使用該憑證後,再透過系統提示授予存取權;不要改成允許所有應用程式存取。
授權後仍無法開啟網頁:檢查連接埠、代理與 TUN 記錄
應用程式能啟動、鑰匙圈不再跳出提示,只代表安裝或憑證問題已處理,不代表代理連線已可使用。請分別檢查核心監聽、本機代理入口、節點連線和系統流量接管。
指定連接埠測試本機入口
假設客戶端設定明確顯示 mixed-port: 7890,可使用以下指令。7890 僅為此處範例,並非所有客戶端都使用這個固定連接埠;實際連接埠請以目前生效的設定為準。
lsof -nP -iTCP:7890 -sTCP:LISTEN
scutil --proxy
curl -I --connect-timeout 10 --max-time 20 \
--proxy http://127.0.0.1:7890 https://example.com/
- 沒有監聽紀錄:檢查核心是否已啟動、設定檔是否成功解析,以及連接埠是否已改為其他數值。
- 監聽程序屬於舊客戶端:正常結束舊程序,再啟動目前使用的客戶端;不要直接結束不熟悉的系統程序。
- 明確指定代理測試收到 HTTP 回應:表示這次請求能透過本機入口,但不保證所有網站或規則都正常。
- 明確指定代理可用,但瀏覽器仍無法連線:檢查目前網路服務的系統代理、瀏覽器本身的代理策略與 DNS 設定。
scutil --proxy 可用來查看系統代理狀態;若只使用 TUN,沒有 HTTP 代理項目也可能是正常情況。測試 TUN 時,應查看記錄中的介面、路由和 DNS 錯誤,再發出不含 --proxy 的請求。即使存在 utun 介面,也不能證明 Clash 已接管流量,因為系統服務和其他 VPN 也會建立這類介面。
退出與復原:恢復網路後再繼續排查
無法上網時,請依序「關閉 TUN → 關閉系統代理 → 正常結束客戶端」。若客戶端已當機,可前往「系統設定」→「網路」→目前使用的 Wi-Fi 或乙太網路服務→「詳細資訊」→「代理」,確認是否還有指向 127.0.0.1 的設定;只移除這次客戶端寫入的項目。
接著檢查系統「VPN」頁面中是否仍有這次客戶端啟用的連線。不要刪除機構設定、其他 VPN 的網路延伸功能或自行安裝的憑證。網路恢復後,重新開啟客戶端,先測試系統代理,再單獨測試 TUN,避免同時變更多項設定而無法判斷原因。
回報問題時,請提供 macOS 版本、晶片架構、客戶端與核心版本、錯誤發生時間,以及已隱去敏感資訊的記錄。明確區分「首次啟動失敗」、「輔助服務安裝失敗」、「鑰匙圈存取遭拒」和「TUN 路由失敗」,通常比反覆重新安裝更容易找出原因。