Clash YAML 設定ファイルはプロキシシステム全体の核心であり、その構造とフィールドの仕様を習得することは上級ユーザーへの必須条件です。サブスクリプションリンクが提供する設定は汎用テンプレートであることが多く、特定のシナリオに最適化されていません。本記事は Clash 公式の設定ファイル完全解説です。各コアフィールドの定義と公式推奨のベストプラクティスを体系的に説明します。
設定ファイルの全体構造
完全な Clash 設定ファイルは6つの主要セクションで構成されます:グローバルパラメータ、DNS 設定、プロキシノード(proxies)、プロキシグループ(proxy-groups)、ルール(rules)、そしてオプションの TUN 設定です。この6つのセクションが協調して、Clash がすべてのネットワークリクエストをどのように処理するかを決定します。
port: 7890
socks-port: 7891
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]
proxies: [ ... ]
proxy-groups: [ ... ]
rules: [ ... ]
グローバルパラメータ詳解
グローバルパラメータは Clash の基本動作を制御します。以下は最もよく使用されるフィールドです:
portとsocks-port:それぞれ HTTP プロキシと SOCKS5 プロキシのリスニングポートで、デフォルトは 7890/7891 です。mixed-port: 7890を使用して1つのポートで両プロトコルをサポートするよう統合することもできます。allow-lan:trueに設定すると、LAN 内の他のデバイスも Clash をプロキシサーバーとして利用できるようになり、ルーターレベルの共有プロキシシナリオに適しています。mode:グローバルプロキシモード。rule(インテリジェントなトラフィック分類)、global(すべてプロキシ経由)、direct(すべて直接接続)から選択できます。external-controller:RESTful API を公開するアドレスとポート。Yacd や MetaCubeXD などの各種ダッシュボードはこのインターフェースを通じて Clash と通信し、グラフィカルな制御を実現します。
proxies:プロキシノード設定
proxies 配列の各オブジェクトは1つのプロキシサーバーノードを表します。プロトコルによって必須フィールドは異なりますが、name、type、server、port はすべてのプロトコルに共通の必須項目です。
Clash(Mihomo カーネル)は Shadowsocks、VMess、VLESS、Trojan、Hysteria2、TUIC など20種類以上のプロトコルをサポートしています。以下は最もよく使用される3つのプロトコルの設定例です:
proxies:
- name: "🇯🇵 日本-01"
type: ss
server: jp.example.com
port: 8388
cipher: chacha20-ietf-poly1305
password: "your-password"
udp: true
- name: "🇺🇸 米国-01"
type: vmess
server: us.example.com
port: 443
uuid: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
alterId: 0
cipher: auto
tls: true
network: ws
ws-opts:
path: /ray
headers:
Host: us.example.com
- name: "🇸🇬 シンガポール-01"
type: trojan
server: sg.example.com
port: 443
password: "your-password"
sni: sg.example.com
udp: true
proxy-groups:プロキシグループ
プロキシグループは Clash が他のプロキシツールと差別化されるコア機能です。複数のノードを1つの論理プロキシユニットとして組み合わせ、手動選択・自動速度テスト・フェイルオーバー・負荷分散の4つの動作方式をサポートします。さらにプロキシグループ同士を相互にネスト参照して、柔軟な階層プロキシアーキテクチャを構築できます。
proxy-groups:
- name: "🚀 ノード選択"
type: select
proxies: ["♻️ 自動選択", "🇯🇵 日本-01", "🇺🇸 米国-01", DIRECT]
- name: "♻️ 自動選択"
type: url-test
url: http://www.gstatic.com/generate_204
interval: 300
tolerance: 50
proxies: ["🇯🇵 日本-01", "🇸🇬 シンガポール-01", "🇺🇸 米国-01"]
- name: "🎬 ストリーミング"
type: select
proxies: ["🇺🇸 米国-01", "🇯🇵 日本-01"]
上記の設定は2層構造を構築しています。「ノード選択」プロキシグループは対外的に公開されるエントリーポイントとして機能し、ユーザーはここで具体的なノードを手動選択するか「自動選択」プロキシグループを選択できます。「自動選択」プロキシグループはバックグラウンドで継続的に速度テストを実施し、最もレイテンシの低いノードに自動切換えします。
rules:トラフィック分類ルール
ルールリストは上から順に逐一マッチングされ、いずれかのルールが一致した時点で対応するアクションが実行され、それ以降のマッチングは停止します。ルールの形式は タイプ,マッチング値,ポリシー で、最後の1行は必ず MATCH のフォールバックルールにする必要があります。
rules:
- DOMAIN,google.com,🚀 ノード選択
- DOMAIN-SUFFIX,youtube.com,🎬 ストリーミング
- DOMAIN-KEYWORD,facebook,🚀 ノード選択
- GEOIP,JP,DIRECT
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- MATCH,🚀 ノード選択
RULE-SET を使ってコミュニティが管理するルールセットを参照することをお勧めします。Loyalsoldier/clash-rules などのルールセットには、直接接続ドメインとプロキシ経由ドメインのリストが精選されており、すぐに使えて定期的に更新されています。
設定のベストプラクティス
実際の使用において、体験を大幅に向上させるいくつかの設定のヒントがあります。第一に、よく使う地域限定ストリーミングプラットフォーム(Netflix、Disney+、YouTube)専用のプロキシグループを設定し、必要に応じて異なる地域のコンテンツにアクセスしやすくします。第二に、url-test プロキシグループに適切な tolerance(許容差)を設定し、レイテンシの差が小さい時の頻繁なノード切り替えを防ぎます。第三に、external-controller を Yacd や MetaCubeXD などのダッシュボードと組み合わせることで、ブラウザ上でリアルタイムに接続状態とトラフィックを監視でき、問題の切り分けが大幅に容易になります。