这里是一些大家遇到的常见问题。如果您有任何此处未列出的问题,请随时提交一个 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
- 华硕 RT-AC5300: armv5 #2356
- 联发科 MT7620A、MT7621A: mipsle-softfloat(#136)
- mips_24kc: #192
如果您的设备未在此处列出,您可以使用 uname -m 检查设备的 CPU 架构,并在发布页面中找到相应的版本。
不会修复的问题
官方 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 开源版。规则 Providers 目前仅在 Premium 内核 中可用。
DNS 劫持不起作用
由于 tun.auto-route 不会拦截局域网流量,如果您的系统 DNS 设置为私有子网中的服务器,则 DNS 劫持将不起作用。您可以:
- 使用非私有 DNS 服务器作为系统 DNS,如
1.1.1.1 - 或者手动将系统 DNS 设置为 Clash DNS(默认为
198.18.0.1)
