設定ガイド

もっと使いこなしたい方へ、ドキュメントはこちら

Clashクライアントのすべての動作は1つのconfig.yamlファイルで決まります。
このページでは設定ファイルの各セクションを詳しく解説し、例はそのままコピーして編集できます。

設定ファイルの全体構成

Clashクライアントの設定ファイルはYAML形式のテキストで、デフォルトではconfig.yamlという名前です。サブスクリプションを利用する場合はプロバイダー側で用意されているため、通常は手動編集の必要はありません。振り分けやDNSの動作をカスタマイズしたい場合に、この構造を理解する必要があります。設定は上から順に主に4つのブロックに分かれます:

config.yamlの骨格
# 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の例
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の例
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,ノード選択
GEOIPIPの所属国で一致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設定
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-portHTTPとSOCKS5で共用するミキシングポート7890
modeプロキシモード:rule / global / directrule
allow-lanLAN内のデバイスからClashクライアントを経由してインターネットに接続できるようにするfalse(必要に応じて有効化)
log-levelログレベル、トラブルシューティング時に上げるinfo
external-controllerコントロールパネルAPIアドレス127.0.0.1:9090

allow-lanを有効にすれば、同じWi-Fi内のスマホやテレビもプロキシを「パソコンのIP:7890」に指定するだけでClashクライアントを経由できます。各デバイスに個別にインストールする必要はありません。

完全な設定例

上記のすべての断片をつなげれば、そのまま動作する最小構成になります。ノード情報を差し替えるだけで使えます:

config.yamlの完全な最小構成例
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,ノード選択
変更が反映されない場合は? デスクトップ版は「プロファイル」ページの再読み込みボタンをクリック、Linuxのコマンドラインではsystemctl restart mihomoを実行してください。YAMLはインデントに敏感なので、エラーが出た場合はまずTabとスペースが混在していないか確認してください。