簡介 · Clash文件

常見問題

Clash 在路由器或容器中出現節點異常、Premium 無法連線,或出現 RULE-SET 錯誤?依現象檢查 GOAMD64 架構、規則比對與 DNS 劫持,並了解規則複雜度對執行的影響。

  • GOAMD64
  • RULE-SET
  • Premium 核心
  • DNS 劫持
  • tun.auto-route
簡介
本文章節

歷史文件適用範圍

本文保留原版 Clash / Clash Premium 的歷史用法,供核對舊設定。文中的「僅 Premium」「暫不支援」及平台限制不代表目前 Mihomo 的能力;請勿據此覆蓋現用客戶端設定或執行權限相關指令。

使用 Mihomo 時,請對照 Mihomo 目前的設定文件;圖形介面、安裝與授權操作則以 對應客戶端的專案說明 為準。

這裡保留原版 Clash 的歷史問題與答覆。目前使用圖形客戶端時,請向該客戶端維護者回報;確認屬於 Mihomo 核心的問題後,再使用 Mihomo 問題回報。不確定專案歸屬時,可先查看 客戶端與專案來源;原版 Clash 的新增 Issue 入口已失效。回報前請移除日誌與設定中的訂閱權杖、密碼等資訊。

amd64 和 amd64-v3 有什麼區別?

引用自 golang/go:

在 Go 1.17 之前,Go 編譯器總是產生任何 64 位 x86 處理器都可以執行的 x86 二進位檔案。

Go 1.18 為 AMD64 引入了 4 個架構級別。每個層級都有不同的 x86 指令集,編譯器可將這些指令納入產生的二進位檔:

  • GOAMD64=v1(預設):基線。僅產生所有 64 位 x86 處理器都可以執行的指令。
  • GOAMD64=v2:所有 v1 指令,加上 CMPXCHG16B、LAHF、SAHF、POPCNT、SSE3、SSE4.1、SSE4.2、SSSE3。
  • GOAMD64=v3:所有 v2 指令,加上 AVX、AVX2、BMI1、BMI2、F16C、FMA、LZCNT、MOVBE、OSXSAVE。
  • GOAMD64=v4:所有 v3 指令,加上 AVX512F、AVX512BW、AVX512CD、AVX512DQ、AVX512VL。

例如,設定 GOAMD64=v3 後,Go 編譯器便可在產生的二進位檔中使用 AVX2 指令,某些情況下可提升效能;但這些二進位檔無法在不支援 AVX2 的舊款 x86 處理器上執行。

Go 工具鏈也可能產生較新的指令,但會透過動態檢查,確保這些指令只在具備相應能力的處理器上執行。例如使用 GOAMD64=v1 時,如果 CPUID 回報可使用 POPCNT 指令,math/bits.OnesCount 仍會採用該指令;否則便會退回通用實作。

Go 工具鏈目前不會產生任何 AVX512 指令。

請注意,此處以處理器概括說明。實際上,整個系統,包括韌體、Hypervisor 與核心,都必須提供支援。

我的系統應該使用哪個版本?

這裡是一些人們在 Clash 上使用的常見系統,以及每個系統的推薦版本:

  • NETGEAR WNDR3700v2: mips-hardfloat #846
  • NETGEAR WNDR3800: mips-softfloat #579
  • ASUS RT-AC5300:armv5 #2356
  • 聯發科 MT7620A、MT7621A:mipsle-softfloat(#136)
  • mips_24kc: #192

若此處未列出您的裝置,可使用 uname -m 檢查 CPU 架構,再到 Release 頁面尋找對應版本。

不會修復的問題

原版 Clash 專案當時列出以下不打算實作或修復的項目;這不代表目前 Mihomo 或其他客戶端的支援情況:

當官方 Go QUIC 庫發布時,以下內容將被考慮實施:

在本機機器上節點正常工作,但在路由器或容器中不起作用

您的系統可能未與世界時間同步。請參考您的平台關於時間同步的檔案——如果時間不同步,某些協議可能無法正常工作。

規則匹配的時間複雜度

請參閱此討論:#422

Clash Premium 無法存取網際網路

您可以參考這些相關討論:

錯誤:不支援的 RULE-SET 規則類型

如果您遇到了這個錯誤資訊:

txt
FATA[0000] Parse config error: Rules[0] [RULE-SET,apple,REJECT] error: unsupported rule type RULE-SET

您目前使用的是 Clash 開放原始碼版本。Rule Providers 目前僅能在Premium 核心中使用。

DNS 劫持不起作用

由於 tun.auto-route 不會攔截區域網路流量,若系統 DNS 指向私有子網路中的伺服器,DNS 劫持便不會生效。您可以:

  1. 使用非私有 DNS 伺服器作為系統 DNS,例如 1.1.1.1
  2. 或手動將系統 DNS 設為 Clash DNS(預設為 198.18.0.1)