先區分四種授權:開啟 App、輔助服務、網路延伸功能與鑰匙圈
macOS 上的 Clash 用戶端,網路流量導向方式不盡相同。圖形介面可能呼叫 mihomo 核心,也可能搭配特權輔助服務或 Network Extension。參考其他用戶端的授權畫面時,請先確認目前使用的軟體名稱、版本與執行模式,再判斷是否需要進行相同步驟。
先從蘋果選單 →「關於這台 Mac」記下 macOS 版本與晶片類型,再到用戶端的「關於」頁面記下用戶端版本;若有核心資訊頁面,也一併記錄 mihomo 版本。Apple Silicon 與 Intel 安裝檔應選擇各自對應的架構;選錯架構通常是啟動相容性問題,無法靠核准網路延伸功能解決。
| 提示或功能 | 涉及的權限 | 處理時機 |
|---|---|---|
| 無法驗證開發者、App 已損毀 | Gatekeeper、簽章與下載隔離屬性 | 首次開啟 App 前 |
| 安裝輔助工具、要求管理者驗證 | 特權輔助服務或服務模式 | 用戶端明確要求安裝服務時 |
| 核准系統延伸功能、加入 VPN 設定 | 系統延伸功能、網路延伸功能或 VPN 設定 | 首次啟用相應功能時 |
| 存取鑰匙圈中的項目 | 讀取指定憑證的權限 | App 讀取已儲存的憑證時 |
首次開啟:分別處理開發者驗證與「已損毀」提示
先確認安裝位置與來源
- 先結束正在執行的舊版本,再將磁碟映像檔中的 App 拖到「應用程式」資料夾,不要長期直接從安裝映像檔執行。
- 退出安裝映像檔,再從「應用程式」資料夾開啟,避免後續授權指向暫時掛載路徑中的副本。
- 確認下載來源、App 名稱與處理器架構;若系統明確提示含有惡意軟體,請停止執行並重新確認來源。
若出現「無法驗證開發者」之類的提示,macOS 13 Ventura、14 Sonoma 及後續版本,通常會在「系統設定」→「隱私權與安全性」的安全性區段,提供針對最近一次遭封鎖項目的「仍要打開」。macOS 12 Monterey 的對應位置是「系統偏好設定」→「安全性與隱私權」→「一般」。只有發生相關封鎖且系統允許略過時,才會顯示按鈕。
macOS 15 Sequoia 調整了部分未簽署或未經公證軟體的開啟流程,不應只依賴舊教學中按住 Control 再點按「打開」的方法。請依目前系統提示前往安全性設定,確認 App 後再繼續。由組織管理的電腦可能禁止略過限制,請交由裝置管理者處理。
「已損毀」不是一般的權限開關
這項提示可能與套件內容異常、簽章失效或下載隔離處理有關。建議先刪除目前的 App 副本,重新下載與目前系統相容的版本;不要一開始就關閉整體系統安全檢查。若要進一步查明原因,可在終端機輸入以下命令開頭,再將「應用程式」資料夾中的實際 App 拖入終端機,補上路徑後分別執行每一行:
spctl --assess --type execute --verbose=4
codesign --verify --deep --strict --verbose=2
xattr -l
以上命令都需要提供 App 路徑,不能直接把三行一起貼上當作完整診斷。第一行查看系統執行評估結果,第二行驗證現有簽章,第三行列出延伸屬性。出現 com.apple.quarantine 只代表檔案帶有隔離標記,不代表 App 有害,也不代表 App 可信;簽章驗證成功也不等於已通過系統公證。
核准網路延伸功能:依 macOS 版本尋找設定位置
先在用戶端啟用一次需要延伸功能的項目,再查看系統提示。系統延伸功能通常由 App 主動提出啟用要求;只把 App 複製到「應用程式」資料夾,不一定會產生待核准項目。核准前請確認開發者名稱及用戶端的版本說明,不要只憑提示出現的時間判斷來源。
| macOS 版本 | 常見檢查位置 | 確認方式 |
|---|---|---|
| 12 Monterey | 系統偏好設定 → 安全性與隱私權 → 一般 | 若出現系統軟體遭封鎖的提示,解鎖後確認開發者並允許 |
| 13 Ventura / 14 Sonoma | 系統設定 → 隱私權與安全性 | 查看安全性區段是否有延伸功能核准提示 |
| 15 Sequoia | 系統設定 → 一般 → 登入項目與延伸功能 → 網路延伸功能 | 開啟詳細資訊,確認並啟用該 App 對應的網路延伸功能 |
實際設定位置也會因延伸功能的套件形式與系統小版本而異。若出現「加入 VPN 設定」提示,請先確認提出要求的 App 名稱,再決定是否允許;VPN 設定可在系統的「VPN」或「網路」相關頁面查看。VPN 設定授權與系統延伸功能核准是不同的開關,內容過濾器也不等同於 TUN 通道。
- 保持用戶端開啟,並在介面中啟用需要延伸功能的網路功能。
- 依系統提示前往設定,核准相符的開發者或延伸功能,並完成系統要求的身分驗證。
- 返回用戶端,先關閉再重新啟用該功能;只有系統明確要求時才重新啟動電腦。
- 若沒有待核准項目,請檢查用戶端記錄、延伸功能安裝說明與服務狀態;不必反覆尋找尚未提出申請的權限。
可執行 systemextensionsctl list,查看透過系統延伸功能機制註冊的項目及其狀態。但這項命令不會列出所有網路元件:不同形式的 Network Extension 不一定都會顯示,透過特權服務運作的 TUN 也不能只憑這裡有沒有項目來判定是否成功。
鑰匙圈提示:確認請求程序、項目名稱與密碼類型
鑰匙圈存取提示通常會顯示兩項重要資訊:提出存取要求的程序,以及要讀取的項目。項目可能用來儲存訂閱憑證、代理伺服器驗證資訊或 App 自身的存取權杖,實際用途取決於用戶端的設計。請先展開詳細資訊確認內容,再選擇「允許」或「永遠允許」。
三種操作各代表什麼
- 拒絕:不提供憑證給這次要求;App 可能會要求重新登入、重新輸入驗證資訊,或顯示讀取憑證失敗。
- 允許:核准這一次存取;之後再次讀取時,仍可能再次詢問。
- 永遠允許:為該項目記錄目前 App 身分的存取許可;適用於已確認且需要持續讀取的要求。
若提示要求解鎖「登入」鑰匙圈,通常需要輸入目前使用者的登入密碼,而非訂閱密碼或 Apple 帳號密碼。若曾以其他方式重設登入密碼,鑰匙圈密碼可能仍是舊密碼;持續輸入新密碼不一定能解鎖舊鑰匙圈。
反覆出現提示時,依序排查
- 在 Finder 選擇「前往」→「工具程式」→「鑰匙圈存取」;也可以透過 Spotlight 搜尋開啟。
- 選取「登入」鑰匙圈,依提示中顯示的項目名稱搜尋,不要大量刪除無關密碼。
- 開啟符合的項目,檢查「存取控制」中允許存取的 App。部分項目不提供相同的編輯選項,請以實際介面為準。
- 確認是否安裝了兩份 App,或更新後簽章身分是否改變。先保留一份位置明確的安裝版本,再重新提出存取要求。
重設預設鑰匙圈會影響其他已儲存的憑證,不應作為第一個排查步驟。若需要刪除用戶端專用項目,請先確認可以重新輸入相關憑證,並記下項目名稱;刪除後讓用戶端重新儲存,不要修改其他 App 的存取控制來略過提示。
TUN 權限:先確認系統代理,再啟用虛擬介面
系統代理主要為遵循 macOS 代理設定的 App 提供 HTTP、HTTPS 等代理入口;TUN 則透過虛擬網路介面與路由接管流量。終端機工具是否讀取系統代理,取決於工具本身,因此「瀏覽器可以連線、命令列無法連線」不足以證明是權限不足。
建議先關閉 TUN,只測試本機代理監聽與規則,再處理路由接管。以下以 127.0.0.1:7890 作為範例位址,實際設定請以用戶端顯示的 HTTP 或 mixed 連接埠為準;7890 並非所有用戶端的固定預設值。
lsof -nP -iTCP:7890 -sTCP:LISTEN
scutil --proxy
curl --proxy http://127.0.0.1:7890 --connect-timeout 10 --max-time 20 -I https://example.com/
lsof有監聽結果:接著確認程序是否屬於目前的用戶端;若沒有結果,先檢查核心是否啟動,以及實際使用的連接埠。scutil --proxy:查看目前生效的系統代理資訊。這不能證明 TUN 路由已建立。curl傳回回應標頭:代表這次明確指定代理的請求收到回應;仍須搭配狀態碼與用戶端連線記錄,判斷請求的實際結果。
確認服務與執行階段設定
若用戶端使用 mihomo 特權服務,請從設定中的服務安裝入口完成管理者驗證,再啟用 TUN。選單可能稱為「服務模式」、「輔助服務」或「安裝服務」,請以該版本的實際介面為準;不要長期以管理者身分執行整個圖形介面。
tun:
enable: true
stack: system
auto-route: true
auto-detect-interface: true
這些只是 TUN 相關欄位,並非可獨立執行的完整設定。stack 可用值與行為請以目前核心版本為準;這些欄位也不能取代系統權限。用戶端可能在啟動時覆寫訂閱中的同名欄位,應檢查最終生效的設定,而不只是下載的 YAML 檔案。
啟用後可用 ifconfig 查看介面、用 netstat -rn -f inet 查看 IPv4 路由,並用 scutil --dns 查看解析器狀態。macOS 本身與其他 VPN 也會建立 utun 介面;單獨看到 utun0 或其他編號,不能證明它屬於目前的用戶端。請一併比對啟用前後的變化、用戶端記錄與實際連線紀錄。
授權完成仍無法連線:依現象縮小排查範圍
| 觀察到的現象 | 優先檢查項目 | 下一步 |
|---|---|---|
| 介面已開啟,但本機連接埠沒有監聽 | 核心啟動記錄、設定解析錯誤、連接埠遭占用 | 修正啟動錯誤後重新載入設定 |
| 明確指定代理可用,但瀏覽器未走代理 | 系統代理狀態、瀏覽器自己的代理設定 | 確認目前的網路服務與瀏覽器延伸功能設定 |
| 系統代理可用,但 TUN 無法啟用 | 特權服務、延伸功能狀態、介面或路由錯誤 | 依用戶端實際採用的方式處理對應權限 |
| 啟用 TUN 後,網域名稱無法解析 | DNS 設定、解析記錄、其他 VPN 的 DNS 設定 | 每次只保留一個網路流量接管元件再測試 |
| 更新後鑰匙圈反覆詢問 | App 副本、簽章身分、項目存取控制 | 確認請求者後,重新授予該項目的存取權限 |
訂閱成功匯入,只代表用戶端已取得設定,不代表節點驗證、DNS、策略群組選擇與系統路由都正常。測試時請在連線頁面確認目標網域命中的規則與出口;若命中 DIRECT,應先檢查規則順序,而非繼續核准系統延伸功能。
排查衝突時,先暫停其他 VPN、內容過濾器或封包擷取工具,再單獨啟用目前的用戶端。每次只變更一項條件,並記錄變更前後的記錄時間。不要同時重新安裝 App、刪除鑰匙圈項目及修改 DNS,否則即使恢復連線,也無法判斷真正起作用的是哪一項修正。
升級與解除安裝:確認服務狀態,保留可還原的網路設定
- 升級前:記下用戶端版本、核心版本與目前的運作模式;備份需要保留的本機規則,避免覆寫後遺失修改。
- 升級後:先開啟 App,再確認服務是否需要更新;只有出現新的授權要求時,才確認並重新核准。
- 解除安裝前:在用戶端關閉 TUN 與系統代理,使用內建選項解除安裝輔助服務或停用延伸功能,再結束 App。
- 解除安裝後:macOS 13 及後續版本可在「系統設定」→「網路」→目前的網路服務→「詳細資訊」→「代理伺服器」檢查殘留設定;macOS 12 對應位置為「系統偏好設定」→「網路」→目前的服務→「進階」→「代理伺服器」。
不要刪除其他 VPN 的設定,也不要一看到 127.0.0.1 就全部清除。請先確認該位址與連接埠確實由已解除安裝的用戶端設定;工作網路可能另有管理者設定的代理伺服器。若裝置受管理,請先向管理者確認相關設定。
排查完成後,應能分別回答四個問題:App 是否正常啟動、目前模式是否需要延伸功能、鑰匙圈存取要求是否來自已確認的 App,以及代理或 TUN 流量是否命中預期規則。分別確認這四點,比反覆輸入密碼或重新啟動更容易找出問題。