Clash Meta設定ファイルとは? なぜ学ぶ必要があるのか
Clash Meta(現在は正式に mihomo と改称)は、現在最も広く使われているプロキシカーネルの一つで、ClashX、Clash Verge、Clash Nyanpasuなどの人気クライアントを支えています。その核心的な機能であるノード管理、DNS解決、トラフィックルーティングはすべて、単一の YAML設定ファイル によって定義されています。
多くのユーザーはサブスクリプションリンクをインポートするだけで済みますが、その構造と仕組みを理解することには大きなメリットがあります:
- 精密なルーティング:国内通信を直接、海外通信をプロキシ経由にするカスタムルールを書き、無駄な通信を省けます。
- 効果的なトラブルシューティング:接続エラーが起きた際、原因がノードにあるのか、DNS解決なのか、ルール設定なのかを素早く特定できます。
- パフォーマンスの最適化:適切なDNS設定やTUNモードの使用により、ネットワーク体験を大幅に向上させられます。
- セキュリティ意識の向上:設定のすべてを把握することで、プライバシーが漏洩する可能性のある不明な設定を避けることができます。
既にClashベースのクライアント(ClashX、Clash Vergeなど)をインストール済みで、設定ファイルを深く理解し、カスタマイズしたいと考えている方を対象としています。初心者から、より最適化を目指す上級者まで役立つガイドです。
設定ファイルの基本構造
Clash Metaの設定ファイルは、いくつかの主要なフィールドで構成されています。以下は基本となる骨組みです。各項目について詳しく解説していきます:
# Clash Meta (mihomo) 基本設定
# プロキシポート (HTTPとSOCKS5で共有)
mixed-port: 7890
# LAN内の他デバイスからの接続を許可
allow-lan: true
# バインド先のアドレス; '*' はすべてのインターフェース
bind-address: '*'
# 動作モード: rule / global / direct
mode: rule
# ログレベル: silent / error / warning / info / debug
log-level: info
# ダッシュボード用外部コントローラーAPI
external-controller: 127.0.0.1:9090
# APIアクセスのシークレットキー (設定を推奨)
secret: "your-secret-here"
# プロセスベースのルール用設定
find-process-mode: strict
# Geoデータファイルの形式設定
geodata-mode: true
geox-url:
geoip: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip.dat"
geosite: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite.dat"
mmdb: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/country.mmdb"
主要項目の解説
- mixed-port:最も重要なポート設定です。7890に設定すると、HTTPとSOCKS5の両方のトラフィックがこの一つのポートを通ります。分離したい場合は
portとsocks-portを個別に使います。 - allow-lan:
trueにすると、同じWiFiに繋がっているスマホやタブレットが、あなたのPCをプロキシサーバーとして利用できるようになります。 - mode:トラフィックの全体的な挙動を制御します。
ruleが一般的で、ルールに基づいて振り分けます。globalはすべてプロキシ経由、directはすべて直接接続となります。 - external-controller:yacdやClash Vergeの内蔵パネルなどのダッシュボードが、プロキシの状態を監視・制御するためのAPIを公開します。
- find-process-mode:アプリ名に基づいたルール(例:Telegramだけ特定のノードを通す)を有効にします。
strictが最も正確ですが、リソースをわずかに消費します。
DNSの詳細設定
DNS設定は、Clash Metaの設定の中で最も影響力の大きい部分の一つです。誤った設定は、読み込みの遅延、サイトへのアクセス不能、さらにはDNS漏洩の原因となります。
dns:
enable: true
listen: 0.0.0.0:53
ipv6: false
# 動作モードの設定
# fake-ip: 仮想IPを返し、接続を高速化 (推奨)
# redir-host: 実際のIPを返し、互換性を重視
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
# fake-ipの対象外にするドメイン
fake-ip-filter:
- '*.lan'
- '*.local'
- 'localhost.ptlogin2.qq.com'
- '+.stun.*.*'
- '+.stun.*.*.*'
- 'lens.l.google.com'
- 'stun.l.google.com'
# メインDNSサーバー (国内ドメイン用)
nameserver:
- https://doh.pub/dns-query
- https://dns.alidns.com/dns-query
- 223.5.5.5
- 119.29.29.29
# フォールバックDNS (汚染の可能性がある海外ドメイン用)
fallback:
- https://dns.cloudflare.com/dns-query
- https://dns.google/dns-query
- tls://8.8.4.4:853
# フォールバックの判定ポリシー
fallback-filter:
geoip: true
geoip-code: CN
geosite:
- gfw
ipcidr:
- 240.0.0.0/4
domain:
- '+.google.com'
- '+.facebook.com'
- '+.youtube.com'
fake-ip vs redir-host
fake-ip モード が推奨の選択です。アプリがDNS解決を要求すると、Clashは即座に仮想IPを返し、バックグラウンドで非同期に本物の解決を行います。DNSの返答を待つ必要がないため、接続開始が非常にスムーズになります。
redir-host モード は、本物のIPが返ってくるのを待ってから接続を開始します。わずかに遅いですが、ローカルデバイスの発見や特定のゲームサービスなど、実際のIPアドレスに依存する環境では信頼性が高いです。
nameserver と fallback の連携
nameserver には、通常国内のパブリックDNSを指定し、ローカルドメインを最速で解決させます。fallback には海外のセキュアなDNS(CloudflareやGoogleなど)を指定します。Clashが国内DNSから汚染されたIPが返ってきたと判断した場合、自動的に fallback の結果を採用します。
fake-ipモードとTUNモードを併用する場合、dns.listen が正しく設定されていることを確認してください。そうでない場合、システムのDNSクエリがClashをバイパスしてISPのDNSに直接届いてしまい、プライバシーが漏洩する可能性があります。
プロキシノードの設定
このセクションは設定の心臓部であり、利用可能なすべてのプロキシサーバーを定義します。Clash Metaは幅広いプロトコルをサポートしています。主要なプロトコルの記述例は以下の通りです:
Shadowsocks (SS)
proxies:
- name: "SS-HK"
type: ss
server: hk.example.com
port: 8388
cipher: aes-256-gcm
password: "your-password"
udp: true
VMess
- name: "VMess-JP"
type: vmess
server: jp.example.com
port: 443
uuid: a1b2c3d4-e5f6-7890-abcd-ef1234567890
alterId: 0
cipher: auto
tls: true
network: ws
ws-opts:
path: /ws-path
headers:
Host: jp.example.com
Trojan
- name: "Trojan-US"
type: trojan
server: us.example.com
port: 443
password: "your-password"
udp: true
sni: us.example.com
skip-cert-verify: false
VLESS (Clash Meta専用)
- name: "VLESS-SG"
type: vless
server: sg.example.com
port: 443
uuid: a1b2c3d4-e5f6-7890-abcd-ef1234567890
network: ws
tls: true
udp: true
flow: xtls-rprx-vision
ws-opts:
path: /vless-ws
headers:
Host: sg.example.com
reality-opts:
public-key: "your-public-key"
short-id: "your-short-id"
Hysteria2 (Clash Meta専用)
- name: "Hy2-TW"
type: hysteria2
server: tw.example.com
port: 8443
password: "your-password"
obfs: salamander
obfs-password: "obfs-password"
sni: tw.example.com
skip-cert-verify: false
up: "30 Mbps"
down: "200 Mbps"
プロバイダーがHysteria2をサポートしている場合は、それを優先してください。QUICプロトコルベースのため、パケットロスの多い環境でも非常に高いパフォーマンスを発揮します。VLESS + Realityは検知回避に最も優れています。従来のSSやVMessは、最も汎用性が高く安定した選択肢です。
プロキシグループ戦略の設定
プロキシグループは、インテリジェントなルーティングの鍵です。複数のノードをまとめ、トラフィックをどのように割り振るかの戦略を定義します。
手動選択 (Select)
proxy-groups:
- name: "🚀 プロキシ"
type: select
proxies:
- "♻️ 自動選択"
- "🔮 負荷分散"
- "SS-HK"
- "VMess-JP"
- "Trojan-US"
- "VLESS-SG"
- "Hy2-TW"
- DIRECT
URLテストによる自動選択
- name: "♻️ 自動選択"
type: url-test
proxies:
- "SS-HK"
- "VMess-JP"
- "Trojan-US"
- "VLESS-SG"
- "Hy2-TW"
url: http://www.gstatic.com/generate_204
interval: 300
tolerance: 50
フォールバック (Fallback)
- name: "🔄 フォールバック"
type: fallback
proxies:
- "Hy2-TW"
- "VLESS-SG"
- "Trojan-US"
url: http://www.gstatic.com/generate_204
interval: 300
負荷分散 (Load Balance)
- name: "🔮 負荷分散"
type: load-balance
proxies:
- "SS-HK"
- "VMess-JP"
- "Trojan-US"
strategy: consistent-hashing
url: http://www.gstatic.com/generate_204
interval: 300
用途に応じた使い分け:
- select:最も柔軟。手動でノードを切り替えます。地域制限のある動画配信を見たい時など、出口IPを固定したい場合に最適です。
- url-test:全自動。常に最速のノードを選びます。
tolerance(ms) を設定することで、頻繁すぎる切り替えを防げます。 - fallback:優先順位付き。リストの上のノードがダウンした時に次を使います。
- load-balance:リクエストを複数ノードに分散します。
consistent-hashing戦略を使うと同じドメインは同じノードを通り、IP変更によるトラブルを防げます。
ルーティングルールの設定
ルールは、各接続をプロキシするか、直接接続するか、遮断するかを決定します。Clash Metaは上から順にルールを評価し、最初に一致したものを実行するため、順序が極めて重要です。
rules:
# ドメインの完全一致
- DOMAIN,google.com,🚀 プロキシ
# 後方一致 (サブドメインを含む)
- DOMAIN-SUFFIX,googleapis.com,🚀 プロキシ
- DOMAIN-SUFFIX,github.com,🚀 プロキシ
- DOMAIN-SUFFIX,youtube.com,🚀 プロキシ
# キーワード一致
- DOMAIN-KEYWORD,google,🚀 プロキシ
- DOMAIN-KEYWORD,twitter,🚀 プロキシ
- DOMAIN-KEYWORD,facebook,🚀 プロキシ
# GeoSiteルール (MetaCubeX拡張データベース)
- GEOSITE,google,🚀 プロキシ
- GEOSITE,github,🚀 プロキシ
- GEOSITE,telegram,🚀 プロキシ
- GEOSITE,cn,DIRECT
# IP CIDR一致
- IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
# GeoIPルール (IPの地理情報一致)
- GEOIP,CN,DIRECT
- GEOIP,private,DIRECT,no-resolve
# プロセス名一致 (find-process-modeが必要)
- PROCESS-NAME,Telegram,🚀 プロキシ
- PROCESS-NAME,Steam,DIRECT
# 最終一致ルール (必ず最後に置く)
- MATCH,🚀 プロキシ
ルールタイプの早見表
- DOMAIN:ドメインの完全一致。
google.comはwww.google.comには一致しません。 - DOMAIN-SUFFIX:後方一致。最もよく使われます。
- DOMAIN-KEYWORD:ドメインの一部にキーワードが含まれる場合に一致。
- GEOSITE:Clash Meta専用。カテゴリ分けされたドメインデータベースと照合します。手動でリストを作るより遥かに効率的です。
- IP-CIDR:宛先IPアドレスの範囲で一致させます。
no-resolveを付けるとDNS解決をスキップし、fake-ip下での無駄なルックアップを防ぎます。 - GEOIP:IPの所在地。
CNは中国本土のIPに一致します。 - PROCESS-NAME:アプリのプロセス名。アプリごとに挙動を変えられます。
- MATCH:これまでのルールにどれも当てはまらなかった場合の最終的な行き先です。
まず詳細な個別ルール(DOMAIN)を置き、次に広範なルール(GEOSITEなど)を置き、最後にIPベースのルールとMATCHを置くのが、精度とパフォーマンスを両立させるコツです。
TUNモードの設定
TUNモードは、プロキシ設定に対応していないアプリも含め、システム全体のすべての通信をキャプチャします。Clash MetaのTUNモードは非常に安定しており、真のシステムワイド・プロキシを実現するための最良の手段です。
tun:
enable: true
stack: system # system / gvisor / mixed
dns-hijack:
- any:53
- tcp://any:53
auto-route: true
auto-detect-interface: true
# macOS用のMTU設定
mtu: 9000
TUNスタックの選択
- system:OSのネットワークスタックを使用。パフォーマンスが最も高く、macOSで推奨されます。
- gvisor:ユーザー空間でのスタック。一部のLinux環境で安定性が増すことがあります。
- mixed:TCPはsystem、UDPはgvisorを使うハイブリッド。UDPの性能に問題がある場合に有用です。
dns-hijack は、すべてのDNSクエリをClashのDNSモジュールへ強制的に通し、DNS漏洩を防ぎます。auto-route はルーティングテーブルを自動構成し、手動の手間を省きます。
TUNモードの有効化には管理者権限が必要です。macOSでは初回起動時にVPN設定の許可を求めるプロンプトが出ますので、「許可」をクリックしてください。ClashX Proではこの機能が標準で組み込まれています。
上級編:サブルールと外部ルールセット
Clash Metaは、複雑なニーズを持つユーザー向けに、より強力な制御メカニズムを提供しています。
サブルール (Sub-Rules)
一度ルールが一致した後に、さらに別のルールセットを適用することができます。
# メインルール内での参照
rules:
- SUB-RULE,(AND,((GEOSITE,geolocation-!cn),(NOT,((GEOSITE,cn))))),overseas-rules
- SUB-RULE,(GEOSITE,cn),china-rules
- MATCH,🚀 プロキシ
# サブルーールの定義
sub-rules:
overseas-rules:
- GEOSITE,youtube,📹 YouTube
- GEOSITE,netflix,🎬 Netflix
- GEOSITE,openai,🤖 AI
- GEOSITE,telegram,📱 Telegram
- MATCH,🚀 プロキシ
china-rules:
- GEOSITE,bilibili,📺 Bilibili
- GEOSITE,zhihu,DIRECT
- MATCH,DIRECT
ルールプロバイダー (外部ルールセット)
ルールの数が増えた場合、外部ファイルやリモートURLに保存し、メインの設定をすっきりさせることができます。
rule-providers:
reject:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt"
path: ./ruleset/reject.yaml
interval: 86400
proxy:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt"
path: ./ruleset/proxy.yaml
interval: 86400
rules:
- RULE-SET,reject,REJECT
- RULE-SET,proxy,🚀 プロキシ
- GEOIP,CN,DIRECT
- MATCH,🚀 プロキシ
interval 秒ごとに自動でルールを更新できます。behavior フィールドは、ドメインリストなら domain、IPレンジなら ipcidr を指定します。
よくある間違いとトラブルシューティング
設定時によく遭遇する問題とその解決策をまとめました:
1. YAMLフォーマットエラー
これが最も多い原因です。YAMLはインデントに極めて厳格です:
- 必ず半角スペースでインデントしてください。タブキーは絶対に使わないでください。
- 同じレベルの項目はスペースの数を揃えてください(通常は2スペース)。
- コロンの後には必ず半角スペースが必要です。
key: value(正) /key:value(誤)。
2. ポートの競合
起動時にエラーが出る場合、mixed-port で指定したポート(通常 7890)が他のアプリに使われています。macOSならターミナルで lsof -i :7890 を実行して原因アプリを特定し、終了させるかClash側のポート番号を変えてください。
3. ノードの接続失敗
- サーバーのアドレスとポートが正しいか再確認。
- 認証情報(パスワードやUUID)に間違いがないか。
- 暗号化方式 (cipher) がサーバー側と一致しているか。
- TLSを使う場合、
sniフィールドが正しく設定されているか。
4. DNS解決の問題
dns.enableがtrueになっているか。- ISPによる汚染を防ぐため、DoH (DNS over HTTPS) 形式のサーバーを利用しているか。
- 特定のアプリがfake-ip下で動作しない場合は、そのドメインを
fake-ip-filterに追加。
一時的に log-level を debug に設定すると、すべての接続がどのルールに一致したかの全プロセスをログで見ることができます。トラブル解決後は、ログファイルが肥大化しないよう info に戻すのを忘れないでください。
よくある質問 (FAQ)
1. Clash MetaとオリジナルのClash設定ファイルの違いは何ですか?
Clash Meta (mihomo) は機能を大幅に拡張しています。VLESS、Hysteria2などの最新プロトコルのサポート、高度なTUNモード、サブルール、強化されたDNSなどが含まれます。オリジナルの設定はMetaで動きますが、Meta専用の設定をオリジナルのClashで動かすことはできません。
2. 設定ファイルはどこに保存されていますか?
macOSのClashXは ~/.config/clash/、Clash Vergeは独自のフォルダを使用します。クライアントの設定メニューから「設定フォルダを開く」などの項目を探すのが最も確実です。
3. DNSモードは fake-ip と redir-host のどちらがいいですか?
ほとんどのユーザーには fake-ip を推奨します。DNS解決を待たずに仮想IPで接続を開始するため、Web閲覧や動画視聴が劇的にスムーズになります。特定のオンラインゲームやLAN内デバイスの制御に問題が出る場合のみ、redir-host を検討してください。
4. 設定ファイルが読み込まれない時は?
YAMLのフォーマット、ポートの競合、ルールの構文エラーのいずれかが原因であることがほとんどです。バリデーターで書式をチェックし、ログ画面に表示される具体的なエラー行を確認してください。