以下整理了一些常見問題。若您的問題未列於此,歡迎隨時提交一個 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 規則類型
如果您遇到了這個錯誤資訊:
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 劫持便不會生效。您可以:
- 使用非私有 DNS 伺服器作為系統 DNS,例如
1.1.1.1 - 或手動將系統 DNS 設為 Clash DNS(預設為
198.18.0.1)
