Clash Meta設定チュートリアル 2026:mihomo YAML設定完全ガイド

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の両方のトラフィックがこの一つのポートを通ります。分離したい場合は portsocks-port を個別に使います。
  • allow-lantrue にすると、同じ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 の結果を採用します。

⚠️
DNS漏洩の注意点

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.comwww.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モードの権限

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.enabletrue になっているか。
  • ISPによる汚染を防ぐため、DoH (DNS over HTTPS) 形式のサーバーを利用しているか。
  • 特定のアプリがfake-ip下で動作しない場合は、そのドメインを fake-ip-filter に追加。
🛠️
デバッグのコツ

一時的に log-leveldebug に設定すると、すべての接続がどのルールに一致したかの全プロセスをログで見ることができます。トラブル解決後は、ログファイルが肥大化しないよう 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のフォーマット、ポートの競合、ルールの構文エラーのいずれかが原因であることがほとんどです。バリデーターで書式をチェックし、ログ画面に表示される具体的なエラー行を確認してください。

関連リソース

📥 ClashXをダウンロード ⚙️ Clash Meta 概要 🛡️ Mac向けVPN推奨 📝 ブログとチュートリアル