概要 · 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 でも、CPUIDPOPCNT 命令を利用可能と報告すれば、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 ルール種別

次のエラーメッセージが表示された場合:

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 は LAN トラフィックを捕捉しないため、システム DNS がプライベートサブネット内のサーバーに設定されていると、DNS ハイジャックは機能しません。次のいずれかを行えます:

  1. システム DNS に 1.1.1.1 のようなパブリック DNS サーバーを使用する
  2. または、システム DNS を Clash DNS(既定では 198.18.0.1)に手動で設定する