設定ファイルの全体構成
Clashクライアントの設定ファイルはYAML形式のテキストで、デフォルトではconfig.yamlという名前です。サブスクリプションを利用する場合はプロバイダー側で用意されているため、通常は手動編集の必要はありません。振り分けやDNSの動作をカスタマイズしたい場合に、この構造を理解する必要があります。設定は上から順に主に4つのブロックに分かれます:
# 1. Basic settings: ports, mode, log level mixed-port: 7890 mode: rule # 2. Proxy nodes: where traffic can go proxies: [...] # 3. Proxy groups: how to pick a node proxy-groups: [...] # 4. Rules: which traffic goes where rules: [...]
覚えておくべきことは1つだけ:proxiesは「どんな経路があるか」を定義し、proxy-groupsは「どう経路を選ぶか」を定義し、rulesは「どの通信がどの経路を通るか」を定義します。
プロキシノード(proxies)
各ノードは1つのリスト項目で、typeがプロトコルを決定します。プロトコルごとにフィールドが少し異なります。ClashクライアントはShadowsocks、VMess、VLESS、Trojan、WireGuardなど主要プロトコルに対応しており、以下は最も一般的な2つの記法です:
proxies: - name: "香港01" type: ss server: hk01.example.com port: 8388 cipher: aes-256-gcm password: "your-password" - name: "東京02" type: vmess server: jp02.example.com port: 443 uuid: 23ad6b10-8d1a-40f7-8ad0-e3e35cd38297 alterId: 0 cipher: auto tls: true
サブスクリプションを利用する場合、この部分は一切気にする必要はありません。ノードリストはサブスクリプションに応じて自動更新されます。
プロキシグループ(proxy-groups)
プロキシグループはノードを「1つの選択肢」としてまとめるもので、ルール側ではグループ名を参照します(個別のノードは参照しません)。よく使われる4つのタイプ:
| タイプ | 動作 | 適した用途 |
|---|---|---|
select | 手動選択。選んだノードがそのまま使われます | 日常利用のメイン、自分でコントロール |
url-test | 定期的に速度テストし、最速ノードを自動選択 | 手間をかけたくない方に、一度設定すればそのまま |
fallback | 順番にチェックし、最初に使えるノードを採用 | メイン/バックアップ回線、障害時に即切り替え |
load-balance | 複数のノードにリクエストを分散 | 高並列ダウンロード、複数接続 |
proxy-groups: - name: "ノード選択" type: select proxies: [自動選択, 香港01, 東京02] - name: "自動選択" type: url-test proxies: [香港01, 東京02] url: "http://www.gstatic.com/generate_204" interval: 300
interval: 300は300秒ごとに速度テストを行うことを意味します。テストURLはgstaticの204ページが最も安定しています。
振り分けルール(rules)
ルールは上から順に1件ずつ照合され、最初にマッチしたものが有効になります。そのため、より具体的なルールを上に配置し、最後にMATCHで残りをすべて拾います。各ルールの形式は「タイプ,マッチ内容,出口」です:
| ルールタイプ | 意味 | 例 |
|---|---|---|
DOMAIN | 完全なドメイン名の厳密一致 | DOMAIN,www.google.com,ノード選択 |
DOMAIN-SUFFIX | ドメインとそのすべてのサブドメインに一致 | DOMAIN-SUFFIX,youtube.com,ノード選択 |
DOMAIN-KEYWORD | ドメインにキーワードが含まれていれば一致 | DOMAIN-KEYWORD,github,ノード選択 |
IP-CIDR | 対象IPが指定範囲内にあれば一致 | IP-CIDR,8.8.8.8/32,ノード選択 |
GEOIP | IPの所属国で一致 | GEOIP,JP,DIRECT |
MATCH | 残りすべての通信を拾う最終ルール | MATCH,ノード選択 |
出口にはプロキシグループ名のほか、2つの組み込み値があります:DIRECT(プロキシを経由せず直接接続)とREJECT(接続を拒否。広告ブロックによく使われます)。
rules: # Ads: reject outright - DOMAIN-KEYWORD,adservice,REJECT # Specific services: via proxy group - DOMAIN-SUFFIX,youtube.com,ノード選択 - DOMAIN-SUFFIX,github.com,ノード選択 # Local traffic: direct connection - DOMAIN-SUFFIX,jp,DIRECT - GEOIP,JP,DIRECT # Everything else: via proxy group - MATCH,ノード選択
DNS設定
DNSは「ドメイン名がどうIPに変換されるか」を決定します。設定が不適切だと汚染や誤判定が発生するため、以下の実績ある設定をそのまま使うことをおすすめします:
dns: enable: true enhanced-mode: fake-ip fake-ip-range: 198.18.0.1/16 nameserver: - 1.1.1.1 # Cloudflare - 8.8.8.8 # Google fallback: - https://1.1.1.1/dns-query - https://8.8.8.8/dns-query
ポイント:fake-ipモードは応答が速く互換性も良好。nameserverは通常のドメイン解決を担当し、fallbackは暗号化DNSでドメイン解決の汚染を防ぎます。
ポートとよく使う設定
| フィールド | 説明 | 推奨値 |
|---|---|---|
mixed-port | HTTPとSOCKS5で共用するミキシングポート | 7890 |
mode | プロキシモード:rule / global / direct | rule |
allow-lan | LAN内のデバイスからClashクライアントを経由してインターネットに接続できるようにする | false(必要に応じて有効化) |
log-level | ログレベル、トラブルシューティング時に上げる | info |
external-controller | コントロールパネルAPIアドレス | 127.0.0.1:9090 |
allow-lanを有効にすれば、同じWi-Fi内のスマホやテレビもプロキシを「パソコンのIP:7890」に指定するだけでClashクライアントを経由できます。各デバイスに個別にインストールする必要はありません。
完全な設定例
上記のすべての断片をつなげれば、そのまま動作する最小構成になります。ノード情報を差し替えるだけで使えます:
mixed-port: 7890 allow-lan: false mode: rule log-level: info external-controller: 127.0.0.1:9090 dns: enable: true enhanced-mode: fake-ip nameserver: [1.1.1.1, 8.8.8.8] fallback: [https://1.1.1.1/dns-query] proxies: - name: "香港01" type: ss server: hk01.example.com port: 8388 cipher: aes-256-gcm password: "your-password" proxy-groups: - name: "ノード選択" type: select proxies: [香港01] rules: - DOMAIN-KEYWORD,adservice,REJECT - GEOIP,JP,DIRECT - MATCH,ノード選択
systemctl restart mihomoを実行してください。YAMLはインデントに敏感なので、エラーが出た場合はまずTabとスペースが混在していないか確認してください。