簡介 · Clash文件

常見問題

彙整 Clash 核心常見問題,涵蓋 GOAMD64 架構選擇、路由器或容器節點異常、規則比對複雜度、Premium 連線、RULE-SET 錯誤與 DNS 劫持疑難排解。

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

以下整理了一些常見問題。若您的問題未列於此,歡迎隨時提交一個 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 核心專案不會實作/修復以下內容:

當官方 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