よく寄せられる質問をまとめています。ここにない質問がある場合は、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 命令を生成しません。
なお、この説明でいうプロセッサーは簡略化した表現です。実際には、システム全体(ファームウェア、ハイパーバイザー、カーネル)が対応している必要があります。
自分のシステムでは、どのバージョンを使うべきですか?
以下に、Clash でよく使われるシステムと、それぞれの推奨バージョンを示します:
- NETGEAR WNDR3700v2: mips-hardfloat #846
- NETGEAR WNDR3800: mips-softfloat #579
- ASUS RT-AC5300:armv5 #2356
- MediaTek 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 のオープンソース版です。Rule Providers は現在、Premium コア でのみ利用できます。
DNS ハイジャックが機能しない
tun.auto-route は LAN トラフィックを捕捉しないため、システム DNS がプライベートサブネット内のサーバーに設定されていると、DNS ハイジャックは機能しません。次のいずれかを行えます:
- システム DNS に
1.1.1.1のようなパブリック DNS サーバーを使用する - または、システム DNS を Clash DNS(既定では
198.18.0.1)に手動で設定する
