コアアーキテクチャ
Clash(Mihomo)は、Go 言語で開発された高性能なルール分流プロキシコアエンジンです。そのアーキテクチャを理解することで、より正確で効率的な設定を作成できるようになります。
アーキテクチャ概要
Mihomo(旧 Clash.Meta)コアは、以下の主要なサブシステムが連携して動作します:
mixed-portHTTP+SOCKS5 混合ポートを同時に提供することも可能です。rulesリストを順番にマッチングし、各接続に対してプロキシ経由か直接接続(Direct)かを決定します。DOMAIN、IP-CIDR、GeoIP、PROCESS-NAME など20種類以上のマッチング条件をサポートしており、ヒットした時点で停止します。external-controllerRESTful API を公開し、プロキシノードのリアルタイム切り替え、トラフィック統計の確認、設定の更新が可能です。Clash Dashboard、Yacd、MetaCubeXD などの Web コントロールパネルと互換性があります。トラフィック処理フロー
ネットワークリクエストがアプリから発行され、最終的に Clash によって転送されるまで、以下の処理チェーンをたどります:
198.18.x.x)を割り当てます。アプリがこのフェイク IP を使って接続を開始すると、Clash インバウンドがこれを識別してドメインを復元し、ルールエンジンのマッチングを行います。これにより、実際の IP がローカルアプリに公開されるのを完全に防ぎ、根本的に DNS 漏洩を根絶します。プロキシモード
Clash は4つの動作モードをサポートしており、設定ファイルのmodeフィールドまたはクライアント インターフェースで切り替えることができます:
のリストに沿ってrules1項目ずつマッチングし、各接続をプロキシにするか直接接続にするかを決定します。国内のサイトは直接接続で速度を維持し、国外のサイトは自動的にプロキシを経由します。速度とプライバシーを両立させた、ほとんどのユーザーにとって最適な選択肢です。
mode: ruleすべてのトラフィック(国内を含む)がプロキシサーバーを経由して転送されます。海外アカウントの操作など、完全に一貫した出口 IP が必要なシーンに適していますが、国内サイトへのアクセス速度が低下します。
mode: globalすべてのトラフィックはプロキシを経由せず、直接送信されます。プロキシ機能をオフにするのと同等です。通常、プロキシ自体が接続に影響しているかどうかのトラブルシューティングや、クライアントを終了せずに一時的にプロキシを無効にする場合に使用します。
mode: directJavaScript を使用して完全にカスタマイズされたルーティングロジックを記述します。リクエストのドメイン、IP、ポート、プロセス名などのすべての属性にアクセスでき、ルールリストをはるかに超える柔軟な制御が可能です。
mode: script| 特性 | システムプロキシ(System Proxy) | TUNモード |
|---|---|---|
| 動作レイヤー | アプリケーションレイヤー(Layer 7) | ネットワークレイヤー(Layer 3) |
| カバー範囲 | プロキシをサポートするアプリのみ(ブラウザなど) | 全トラフィック(ゲーム、コマンドライン、すべてのアプリ) |
| 必要権限 | 一般ユーザー権限 | 管理者 / root 権限が必要 |
| 設定の複雑さ | 簡単、クライアントでワンクリック有効化 | ネットワークドライバーのインストールが必要(自動) |
| 推奨シーン | 日常的なブラウザ利用 | ゲーム加速、Steam、グローバルプロキシ |
DNS メカニズム
Clash には DNS リゾルバーが内蔵されており、DNS クエリを細かく制御することで漏洩を防ぎ、より正確な分流を実現します:
dns: enable: true enhanced-mode: fake-ip # fake-ip | redir-host fake-ip-range: 198.18.0.1/16 listen: 0.0.0.0:1053 nameserver: - https://doh.pub/dns-query # DoH 国内 - https://dns.alidns.com/dns-query fallback: - https://1.1.1.1/dns-query # DoH 国外予備 - tls://8.8.8.8:853 fallback-filter: geoip: true geoip-code: CN
ルール構文
Clash のルールシステムは、その最も強力な機能の一つであり、YAML 形式で各トラフィックの行き先を正確に制御します。
ルール形式
各ルールは3つの部分で構成され、半角コンマ , で区切られます:
ルールは上から下の順に一つずつマッチングされ、最初にヒットした時点で停止します。どのルールにもヒットしない場合は、最後のMATCHフォールバックルールが適用されます。
ルールタイプの詳細
DOMAIN,www.google.com,PROXYDOMAIN-SUFFIX,google.com,PROXYDOMAIN-KEYWORD,googleapis,PROXYDOMAIN-REGEX,^(www\.)?google\.com$,PROXYno-resolve パラメータを追加すると DNS 解析をスキップできます。IP-CIDR,192.168.0.0/16,DIRECT,no-resolveIP-CIDR6,2400:3200::/32,DIRECTGEOIP,CN,DIRECTGEOSITE,cn,DIRECTPROCESS-NAME,steam.exe,DIRECTPROCESS-PATH,/usr/bin/curl,PROXYtcpまたはudp。NETWORK,udp,REJECTDST-PORT,443,PROXYRULE-SET,gfw,PROXYMATCH,🚀 ノード選択🚀 ノード選択)の他に、3つの組み込みキーワードがあります:DIRECT— 直接接続。プロキシを経由しませんPROXY— デフォルトのプロキシを使用します(proxies内の最初のノードを使用するのと同等です)REJECT— 接続を拒否します(広告フィルタリングでよく使われます)
ポリシーグループ (proxy-groups)
ポリシーグループは Clash ルール体系の中核であり、複数のノードを組み合わせて異なる経路選択動作を持つ論理グループを作成します:
type: selectinterval速度測定の間隔(秒)を設定します。tolerance切り替えの許容誤差(ms)を設定します。type: url-testtype: fallbackconsistent-hashing(同一ドメインは固定ノード)とround-robin(ラウンドロビン)の2つの戦略があります。type: load-balancetype: relay完全な設定例
以下は、コア設定、プロキシノード、ポリシーグループ、およびルールリストを含む完全な config.yaml の例です:
# ── 基本設定 ────────────────────────────────────── mixed-port: 7890 # HTTP + SOCKS5 混合ポート allow-lan: false mode: rule log-level: info external-controller: 127.0.0.1:9090 # ── DNS ────────────────────────────────────────── dns: enable: true enhanced-mode: fake-ip nameserver: - https://doh.pub/dns-query # ── プロキシノード ──────────────────────────────────── proxies: - name: ホンコン 01 type: vmess server: hk1.example.com port: 443 uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx alterId: 0 cipher: auto tls: true network: ws ws-opts: path: /ws headers: Host: hk1.example.com # ── ポリシーグループ ────────────────────────────────────── proxy-groups: - name: 🚀 ノード選択 type: select proxies: - ♻️ 自動選択 - ホンコン 01 - DIRECT - name: ♻️ 自動選択 type: url-test url: https://www.gstatic.com/generate_204 interval: 300 tolerance: 50 proxies: - ホンコン 01 # ── ルールリスト ──────────────────────────────────── rules: - GEOSITE,cn,DIRECT # 国内ドメイン直接接続 - GEOIP,CN,DIRECT # 国内 IP 直接接続 - DOMAIN-SUFFIX,local,DIRECT # ローカルネットワーク直接接続 - IP-CIDR,127.0.0.0/8,DIRECT,no-resolve - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve - MATCH,🚀 ノード選択 # その他のトラフィックはプロキシ経由
プロトコルサポート一覧
Clash (Mihomo) は、20種類以上の主要なプロキシプロトコルをネイティブにサポートしており、ほとんどのプロキシサービス サブスクリプションおよび自前ノードと互換性があります。
サポートプロトコル一覧
転送レイヤーオプション (Transport)
VMess、VLESS、Trojan などのプロトコルは、下位プロトコル層の上に複数の転送方式を重ねることで、トラフィックのカモフラージュ能力をさらに強化できます:
主要プロトコルの比較
速度、検閲耐性、設定の難易度を総合的に比較し、最適なプロトコル選びをサポートします:
| プロトコル | 速度 | 検閲耐性 | 設定難易度 | 推奨シーン | 推奨度 |
|---|---|---|---|---|---|
| VLESS + Reality | 中程度 | 自前ノードの第一候補 | 強く推奨 | ||
| Hysteria2 | 簡単 | 低速 / 高遅延環境 | 強く推奨 | ||
| Trojan | 簡単 | 日常利用の主力 | 推奨 | ||
| VMess + WS + TLS | 中程度 | CDN 経由のシーン | 推奨 | ||
| TUIC v5 | 中程度 | 低遅延・小パケット | 推奨 | ||
| Shadowsocks | 極めて簡単 | プロキシ購読 / 初心者 | 一般的 | ||
| WireGuard | やや難 | 企業 VPN / Warp | 特定用途 |
準備はいいですか?
Clash クライアントをダウンロードし、チュートリアルに従ってサブスクリプションを設定すれば、5分以内に使い始めることができます。