ホーム/設定リファレンス
Clash設定ファイル完全リファレンス
config.yamlはClashの唯一の「頭脳」です。この記事ではトップレベルの項目を1つずつ分解し、各項目がどんな型で、デフォルト値は何か、いつ変更が必要かを解説します。辞書のように調べれば、ソースコードを読むよりずっと速く答えが見つかります。
基本ネットワーク項目
これらの項目は、Clashがローカルでどのポートを監視し、どのように通信を受け付けるかを決めるもので、ほぼすべての設定で使用されます。
HTTPプロキシの監視ポート、例:7890。システムプロキシを設定すると、HTTP/HTTPS通信はどちらもこのポートに送られます。
SOCKS5プロキシの監視ポート。一部のツール(ダウンローダーやコマンドラインプログラム)はSOCKS5にのみ対応しているため、このポートを別途設定する必要があります。
混合ポート。1つのポートでHTTPとSOCKS5の両方の接続を受け付けます。現代のクライアントでは通常このポート1つを設定するだけで済み、portとsocks-portを別々に書くより手間がかかりません。
LAN内の他のデバイスが、本機のIP経由でこのプロキシポートに接続することを許可するかどうか。スマホからパソコン上で動いているClashに接続したい場合はオンにする必要があります。あわせて下記のauthenticationを設定し、LAN内の見知らぬデバイスにただ乗りされないようにすることをおすすめします。
プロキシポートをバインドするネットワークインターフェースのアドレス。*はすべてのインターフェースで待ち受けることを意味します。通常は変更不要です。
実行モードとログ
ruleはrulesリストに従って振り分けます(日常利用に推奨)。globalはすべての通信を同じプロキシグループに強制的に通します。一時的なデバッグによく使われます。directはすべての通信を直接接続にし、プロキシをオフにしつつクライアントは起動したままにするのと同じ状態になります。
ログの詳細度。接続の問題を調査する際は一時的にdebugに変更し、各ルールの具体的なマッチング過程を確認できます。日常使用ではinfoのままにして、ログファイルが急速に肥大化しないようにすることをおすすめします。
IPv6サポートを有効にするかどうか。お使いのネットワークと一部のノードがIPv6にネイティブ対応している場合は、有効にすることで互換性を高められます。判断に迷う場合は、ネットワークによってIPv6対応状況が大きく異なるため、無効のままにしておくのが安全です。
外部コントローラーとダッシュボード
RESTful APIの待ち受けアドレスを開きます。付属のWeb管理パネル(ダッシュボード)は、このインターフェースを通じてプロキシの状態、接続リスト、リアルタイム通信量を読み取っています。GUI付きのクライアントの多くはこの項目を自動で設定してくれます。
external-controllerのインターフェースにアクセスするために必要なキーです。allow-lanが有効でパネルがLANに公開されている場合は、必ずキーを設定してください。そうしないとLAN内の誰でもあなたのプロキシ設定を読み取り・変更できてしまいます。
proxies:ノード定義
proxiesはリスト形式で、各項目が1つの具体的なプロキシノードを表します。項目はプロトコルによって異なりますが、いずれも以下の共通項目を含みます。
| 項目 | 説明 |
|---|---|
name | ノードの表示名。ルールやプロキシグループで参照されるのはこの名前です |
type | プロトコルの種類:ss / vmess / trojan / socks5など |
server | サーバーアドレス(ドメインまたはIP) |
port | サーバーポート |
| その他の項目 | プロトコルによって異なります。例えばShadowsocksはcipherとpasswordが必要、VMessはuuidとalterIdが必要です |
proxies:
- name: HK01
type: ss
server: hk01.example.com
port: 443
cipher: aes-256-gcm
password: "your-password"
- name: JP01
type: trojan
server: jp01.example.com
port: 443
password: "your-password"
sni: jp01.example.com
購読リンクが標準形式であれば、クライアントがこの部分をまるごと自動的に解析してくれるため、通常は手書きする必要はありません。ただし構造を理解しておくと、「特定のノードに接続できない」際にどの項目が原因なのかを調べる助けになります。
proxy-groups:スケジューリンググループ
4種類のタイプ(select / url-test / fallback / load-balance)の動作の違いは応用設定で詳しく解説していますので、ここではよく使う汎用項目をいくつか補足します。
| 項目 | 適用対象 | 説明 |
|---|---|---|
proxies | グループに含まれる具体的なノードまたはサブグループの名前のリスト | グループに含まれる具体的なノードまたはサブグループの名前のリスト |
use | すべて | proxy-providersのリモートノード集合を参照し、ノードリストの手書きを代替する |
url | url-test / fallback / load-balance | ヘルスチェックに使う速度測定用アドレス。一般的にはgenerate_204のような軽量なエンドポイントを使用 |
interval | url-test / fallback / load-balance | ヘルスチェックの間隔(秒) |
tolerance | url-test | 遅延の許容誤差(ミリ秒)。近い遅延のノード間で頻繁に切り替わるのを防ぐ |
strategy | load-balance | consistent-hashingまたはround-robinで振り分けアルゴリズムを決定 |
rules:振り分けルール
完全なルールタイプの一覧は応用設定・ルールタイプの詳細をご覧ください。ここではフォーマットのみ説明します:各行はカンマ区切りの3項目タイプ,値,アクションです(MATCHのみ例外で2項目)。
rules:
- DOMAIN-SUFFIX,github.com,Auto
- GEOIP,CN,DIRECT
- MATCH,Auto
dns:ドメイン解決
各項目の詳細とFake-IP / Redir-Hostの使い分けは応用設定・DNSとFake-IPをご覧ください。主要な項目のクイックリファレンス:
| 項目 | 型 | 説明 |
|---|---|---|
enable | boolean | 内蔵DNSモジュールを有効にするかどうか(TUNモードでは必須) |
enhanced-mode | fake-ip / redir-host | ドメイン解決の戦略、応用設定の比較を参照 |
fake-ip-range | string | Fake-IPが使用する仮想アドレス範囲。本機のLANアドレス範囲と重複しないようにする必要がある |
nameserver | string[] | デフォルトで使用する上流DNSサーバー |
fallback | string[] | 結果が信頼できないと判断された場合に使う予備のDNS |
fallback-filter | object | fallbackを有効にするタイミングを決める判定条件。例えばgeoip-codeによる判定など |
tun:仮想ネットワークアダプター
内部動作の仕組みは応用設定・TUNモードの内部動作をご覧ください。主要項目:
| 項目 | 型 | 説明 |
|---|---|---|
enable | boolean | TUNモードを有効にするかどうか |
stack | system / gvisor | ネットワークスタックの実装方式、応用設定の比較を参照 |
auto-route | boolean | システムのルーティングテーブルを自動的に仮想アダプターへ向けるかどうか |
auto-detect-interface | boolean | 物理ネットワークインターフェースを自動検出し、出口インターフェースの手動指定を不要にする |
dns-hijack | string[] | ハイジャックして処理すべきDNSリクエストのアドレス範囲 |
profile:キャッシュ戦略
有効にすると、selectタイプのプロキシグループで手動切り替えたノードが記憶され、次回クライアントを起動したり購読を更新したりしても、設定ファイルに書かれたデフォルトノードに戻らず、前回の選択を維持します。
Fake-IPのドメイン-IPマッピングをキャッシュするかどうか。有効にすると再起動後の再マッピングのオーバーヘッドを減らせますが、ごくまれにマッピングと実際の解決結果が一時的に一致しなくなることがあります。
最小構成の設定例
以上の内容をまとめると、実際に動作する最小構成の設定はおおよそ次のようになります(実際の利用ではproxiesは通常購読から自動生成されるため、手書きする必要はほとんどありません)。
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
external-controller: 127.0.0.1:9090
proxies:
- name: Node01
type: ss
server: example.com
port: 443
cipher: aes-256-gcm
password: "your-password"
proxy-groups:
- name: Auto
type: url-test
proxies: [Node01]
url: "https://www.gstatic.com/generate_204"
interval: 300
rules:
- GEOIP,CN,DIRECT
- MATCH,Auto
このファイルをconfig.yamlとして保存しクライアントにインポートすれば、正常に振り分けが機能する最小構成のシステムになります。その後は必要に応じてdns、tun、rule-providersなどのモジュールを順に追加していきましょう。