技術リファレンスドキュメント · 公式権威資料

Clash 技術ドキュメントセンター

コアアーキテクチャの原理 · ルール構文の完全マニュアル · プロトコルサポート一覧
入門からマスターまで、Clash のあらゆる設定の詳細を把握するのを助けます

コアアーキテクチャ

Clash(Mihomo)は、Go 言語で開発された高性能なルール分流プロキシコアエンジンです。そのアーキテクチャを理解することで、より正確で効率的な設定を作成できるようになります。

アーキテクチャ概要

Mihomo(旧 Clash.Meta)コアは、以下の主要なサブシステムが連携して動作します:

インバウンド リスナー (Inbound)
ローカルポートをリッスンし、アプリケーションからのトラフィックを受信します。HTTP / HTTPS / SOCKS5 / TUN / Transparent Proxy など、複数のインバウンドタイプをサポートしており、mixed-portHTTP+SOCKS5 混合ポートを同時に提供することも可能です。
ルールエンジン (Rule Engine)
設定ファイル内のrulesリストを順番にマッチングし、各接続に対してプロキシ経由か直接接続(Direct)かを決定します。DOMAIN、IP-CIDR、GeoIP、PROCESS-NAME など20種類以上のマッチング条件をサポートしており、ヒットした時点で停止します。
プロキシ アウトバウンド (Outbound / Proxy)
設定されたプロキシノードを介してトラフィックを転送します。Shadowsocks、VMess、VLESS、Trojan、Hysteria2 などのプロトコルをサポートしています。ポリシーグループ(proxy-groups)により、自動速度測定、フェイルオーバー、負荷分散などのインテリジェントな経路選択を実現します。
DNS サブシステム
高性能な DNS リゾルバーを内蔵し、DoH (DNS over HTTPS)、DoT (DNS over TLS)、DoQ (DNS over QUIC) をサポートしています。FakeIP モードにより DNS 漏洩を完全に防ぎ、プロキシトラフィックの盗聴を防止します。
RESTful API とダッシュボード
を通じてexternal-controllerRESTful API を公開し、プロキシノードのリアルタイム切り替え、トラフィック統計の確認、設定の更新が可能です。Clash Dashboard、Yacd、MetaCubeXD などの Web コントロールパネルと互換性があります。

トラフィック処理フロー

ネットワークリクエストがアプリから発行され、最終的に Clash によって転送されるまで、以下の処理チェーンをたどります:

アプリケーション
ブラウザ / ゲーム / コマンドライン
インバウンド リッスン
HTTP / SOCKS5 / TUN
DNS 解析
FakeIP / RealIP
ルールマッチング
順次マッチング、ヒットで停止
ポリシー アウトバウンド
PROXY / DIRECT / REJECT
FakeIP の原理:FakeIP モードを有効にすると、Clash DNS は各ドメインに対してフェイク IP(例:198.18.x.x)を割り当てます。アプリがこのフェイク IP を使って接続を開始すると、Clash インバウンドがこれを識別してドメインを復元し、ルールエンジンのマッチングを行います。これにより、実際の IP がローカルアプリに公開されるのを完全に防ぎ、根本的に DNS 漏洩を根絶します。

プロキシモード

Clash は4つの動作モードをサポートしており、設定ファイルのmodeフィールドまたはクライアント インターフェースで切り替えることができます:

日常利用に推奨
Rule ルールモード

のリストに沿ってrules1項目ずつマッチングし、各接続をプロキシにするか直接接続にするかを決定します。国内のサイトは直接接続で速度を維持し、国外のサイトは自動的にプロキシを経由します。速度とプライバシーを両立させた、ほとんどのユーザーにとって最適な選択肢です。

mode: rule
グローバルプロキシ
Global グローバルモード

すべてのトラフィック(国内を含む)がプロキシサーバーを経由して転送されます。海外アカウントの操作など、完全に一貫した出口 IP が必要なシーンに適していますが、国内サイトへのアクセス速度が低下します。

mode: global
デバッグ・速度測定
Direct ダイレクトモード

すべてのトラフィックはプロキシを経由せず、直接送信されます。プロキシ機能をオフにするのと同等です。通常、プロキシ自体が接続に影響しているかどうかのトラブルシューティングや、クライアントを終了せずに一時的にプロキシを無効にする場合に使用します。

mode: direct
上級者向け
Script スクリプトモード

JavaScript を使用して完全にカスタマイズされたルーティングロジックを記述します。リクエストのドメイン、IP、ポート、プロセス名などのすべての属性にアクセスでき、ルールリストをはるかに超える柔軟な制御が可能です。

mode: script
TUN モード vs システムプロキシ
特性 システムプロキシ(System Proxy) TUNモード
動作レイヤー アプリケーションレイヤー(Layer 7) ネットワークレイヤー(Layer 3)
カバー範囲 プロキシをサポートするアプリのみ(ブラウザなど) 全トラフィック(ゲーム、コマンドライン、すべてのアプリ)
必要権限 一般ユーザー権限 管理者 / root 権限が必要
設定の複雑さ 簡単、クライアントでワンクリック有効化 ネットワークドライバーのインストールが必要(自動)
推奨シーン 日常的なブラウザ利用 ゲーム加速、Steam、グローバルプロキシ

DNS メカニズム

Clash には DNS リゾルバーが内蔵されており、DNS クエリを細かく制御することで漏洩を防ぎ、より正確な分流を実現します:

FakeIP モード
ドメインに対してフェイク IP (198.18.0.0/16) を割り当て、DNS 漏洩を完全に根絶します。ルールマッチングはドメインレベルで行われます(最も正確)。ほとんどのユーザーに推奨されます。
RealIP モード
先に実際の IP を解析してからルールをマッチングさせ、IP-CIDR ルールを有効にします。CDN ドメインの場合、IP の帰属先によって分流が不正確になる可能性があるため、正確な IP ルーティングが必要なシーンに適しています。
config.yaml · 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つの部分で構成され、半角コンマ , で区切られます:

ルールタイプ
DOMAIN-SUFFIX
,
マッチング条件
google.com
,
ターゲットポリシー
🚀 ノード選択

ルールは上から下の順に一つずつマッチングされ、最初にヒットした時点で停止します。どのルールにもヒットしない場合は、最後のMATCHフォールバックルールが適用されます。

ルールタイプの詳細

ドメイン DOMAIN
完全なドメイン名を正確にマッチングします。大文字と小文字を区別します。
DOMAIN,www.google.com,PROXY
ドメイン DOMAIN-SUFFIX
ドメインのサフィックス(サブドメインを含む)をマッチングします。最も一般的に使用されるドメインルールタイプです。
DOMAIN-SUFFIX,google.com,PROXY
ドメイン DOMAIN-KEYWORD
ドメイン名にキーワードが含まれていればマッチングします。カバー範囲が最も広いです。
DOMAIN-KEYWORD,googleapis,PROXY
ドメイン DOMAIN-REGEX
正規表現を使用してドメイン名をマッチングします。柔軟で強力です。
DOMAIN-REGEX,^(www\.)?google\.com$,PROXY
IP アドレス IP-CIDR
IPv4 CIDR アドレス範囲をマッチングします。no-resolve パラメータを追加すると DNS 解析をスキップできます。
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
IP アドレス IP-CIDR6
IPv6 CIDR アドレス範囲をマッチングします。
IP-CIDR6,2400:3200::/32,DIRECT
地理的位置 GEOIP
IP の帰属国/地域に基づいてマッチングします。GeoIP データベースを使用します。
GEOIP,CN,DIRECT
地理的位置 GEOSITE
Geosite ドメインデータベースを使用してマッチングします (v2ray-rules-dat)。大量のプリセットドメイン分類をカバーしています。
GEOSITE,cn,DIRECT
プロセス PROCESS-NAME
接続を開始したプロセス名に基づいてマッチングします (Windows/macOS/Linux)。
PROCESS-NAME,steam.exe,DIRECT
プロセス PROCESS-PATH
プロセスのフルパスに基づいてマッチングします。プロセス名よりも正確です。
PROCESS-PATH,/usr/bin/curl,PROXY
ネットワーク NETWORK
プロトコルタイプに基づいてマッチングします。tcpまたはudp
NETWORK,udp,REJECT
ネットワーク PORT / DST-PORT
ターゲットポートまたはポート範囲をマッチングします。
DST-PORT,443,PROXY
ルールセット RULE-SET
外部のルールセットファイル (.yaml / .list) を参照します。リモート URL サブスクリプションをサポートし、自動更新が可能です。
RULE-SET,gfw,PROXY
フォールバック MATCH
すべてのトラフィックをマッチングします。必ずルールリストの最後に配置し、すべてのルールにヒットしなかった場合の最終的なフォールバックポリシーとして機能します。
MATCH,🚀 ノード選択
ポリシーキーワード:ルールのターゲットポリシーには、カスタマイズしたポリシーグループ名(例:🚀 ノード選択)の他に、3つの組み込みキーワードがあります:
  • DIRECT— 直接接続。プロキシを経由しません
  • PROXY— デフォルトのプロキシを使用します(proxies 内の最初のノードを使用するのと同等です)
  • REJECT— 接続を拒否します(広告フィルタリングでよく使われます)

ポリシーグループ (proxy-groups)

ポリシーグループは Clash ルール体系の中核であり、複数のノードを組み合わせて異なる経路選択動作を持つ論理グループを作成します:

select 手動選択
ユーザーがクライアントのインターフェースでノードまたはサブポリシーグループを手動で選択します。最も柔軟で、最も一般的なポリシーグループタイプです。切り替えにはクライアントを開く必要があります。
type: select
url-test 自動速度測定
すべてのノードに対して定期的に HTTP 速度測定リクエストを発行し、遅延が最も低いノードを自動的に選択します。interval速度測定の間隔(秒)を設定します。tolerance切り替えの許容誤差(ms)を設定します。
type: url-test
fallback 自動フェイルオーバー
最初の利用可能なノードを優先的に使用し、最初のノードが到達不能になったときに自動的に次のノードに切り替えます。安定したメインノード + 予備ノードが必要なシーンに適しています。
type: fallback
load-balance ロードバランシング
接続を複数のノードに分散させます。consistent-hashing(同一ドメインは固定ノード)とround-robin(ラウンドロビン)の2つの戦略があります。
type: load-balance
relay チェーンプロキシ
トラフィックを複数のノードを介して順番に転送します(ノード1 → ノード2 → ... → ターゲット)。マルチホッププロキシを実現します。各ホップごとに遅延が増加することに注意してください。
type: relay

完全な設定例

以下は、コア設定、プロキシノード、ポリシーグループ、およびルールリストを含む完全な config.yaml の例です:

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種類以上の主要なプロキシプロトコルをネイティブにサポートしており、ほとんどのプロキシサービス サブスクリプションおよび自前ノードと互換性があります。

サポートプロトコル一覧

Shadowsocks
SS
最も広く使用されているプロキシプロトコルの一つで、長年の実績があり、AEAD 暗号化 (AES-256-GCM / ChaCha20-Poly1305) をサポートしています。設定が簡単で、互換性が非常に高いのが特徴です。
✓ AEAD 暗号化 ✓ 簡単設定 ✓ 高い互換性
VMess
V2Ray
V2Ray のコアプロトコルであり、WebSocket、gRPC、HTTP/2、QUIC など、複数の転送方式をサポートしています。TLS と組み合わせることでトラフィックのカモフラージュが可能になり、高い検閲回避能力を発揮します。
✓ TLS カモフラージュ ✓ WS/gRPC ✓ HTTP/2
VLESS
V2Ray Next
VMess の次世代の軽量バージョンで、対称暗号化のオーバーヘッドを排除し、パフォーマンスが向上しました。Reality TLS フィンガープリント カモフラージュをサポートしており、現在、検閲耐性が最も強いプロトコルの一つです。
✓ Reality ✓ 極めて低いオーバーヘッド ✓ TLS フィンガープリント
Trojan
Trojan-GFW
プロキシトラフィックを HTTPS 443 ポートの正規の TLS トラフィックに見せかけることで検閲を回避します。検閲システムに対して通常の HTTPS とほとんど区別がつかないため、安定性が非常に高いです。
✓ HTTPS カモフラージュ ✓ 443 ポート ✓ 高い安定性
Hysteria2
次世代
QUIC/UDP ベースの高性能プロキシプロトコル。パケット損失や遅延の多いネットワーク環境向けに特別に最適化されており、3G/4G ネットワークや海外回線において、従来の TCP プロトコルをはるかに超える速度を実現します。
✓ QUIC/UDP ✓ 低速回線での加速 ✓ 超低遅延
TUIC
v5
同じく QUIC/UDP ベースの現代的なプロキシプロトコルで、Hysteria2 と同様の設計思想を持ちます。0-RTT 接続再利用をサポートし、ハンドシェイクの遅延を効果的に削減するため、高頻度の短時間接続に適しています。
✓ QUIC/UDP ✓ 0-RTT ✓ 接続再利用
WireGuard
VPN 級
次世代の VPN プロトコルで、カーネルレベルの実装、極限までシンプルな設計、優れたパフォーマンス、現代的な暗号化技術を特徴としています。Clash はユーザースペースでの実装により WireGuard ノードのアウトバウンドをサポートしており、カーネルモジュールのインストールは不要です。
✓ カーネル級のパフォーマンス ✓ 現代的な暗号化 ✓ ネイティブ UDP
ShadowsocksR
SSR
Shadowsocks の派生バージョンで、難読化(obfs)やプロトコルプラグインが追加されています。新しいノードで見かけることは少なくなりましたが、Mihomo は互換性のためにサポートを維持しています。
✓ 難読化サポート 後方互換性
SOCKS5
ローカルプロキシ
古典的なプロキシプロトコルで、TCP および UDP (SOCKS5 UDP) をサポートしています。ローカルノードの中継や他のプロキシツールとの連携によく使われます。
✓ TCP/UDP ✓ 認証サポート
HTTP / HTTPS
HTTP プロキシ
標準的な HTTP プロキシプロトコル (CONNECT トンネル)。互換性が最も広く、企業内ネットワークのプロキシ環境に適しています。TCP トラフィックのみをサポートします。
✓ 幅広い互換性 HTTP CONNECT
SSH
安全なトンネル
SSH トンネルを介してトラフィックを転送します。サーバー側の特別な設定は不要で、SSH アクセスが可能なサーバーがあれば利用できます。一時的な使用やテストシーンに適しています。
✓ サーバー側設定ゼロ OpenSSH 互換
Hysteria
v1 / 旧版
Hysteria2 の旧バージョンで、引き続き利用可能です。新しいノードには Hysteria2 の使用を推奨しますが、Mihomo は v1 への互換サポートを維持しています。
後方互換性

転送レイヤーオプション (Transport)

VMess、VLESS、Trojan などのプロトコルは、下位プロトコル層の上に複数の転送方式を重ねることで、トラフィックのカモフラージュ能力をさらに強化できます:

WebSocket (ws)
最も一般的な転送方式。CDN (CloudFlare など) と組み合わせて使用でき、検閲回避能力が高いですが、遅延はネイティブ TCP よりわずかに高くなります。
HTTP/2 (h2)
HTTP/2 ベースのマルチプレクシング転送。並列パフォーマンスが良く、TLS が必要です。大容量通信に適しています。
gRPC
gRPC フレームワークベースの転送。同じく CDN サポート、マルチプレクシング、低遅延を特徴とし、TLS が必要です。
Reality
VLESS 専用。トラフィックを実際のウェブサイトの TLS フィンガープリントに見せかけます。ドメインなしでも動作し、検閲耐性が最も強いです。
TCP (ネイティブ)
最も基本的な TCP 直接接続転送で、遅延が最も低く、追加のカモフラージュはありません。厳格な封鎖がないネットワーク環境に適しています。
Split HTTP
リクエストを複数の HTTP セグメントに分割してディープパケットインスペクション (DPI) を回避します。互換性が良く、CDN と併用可能です。

主要プロトコルの比較

速度、検閲耐性、設定の難易度を総合的に比較し、最適なプロトコル選びをサポートします:

プロトコル 速度 検閲耐性 設定難易度 推奨シーン 推奨度
VLESS + Reality ★★★★★ ★★★★★ 中程度 自前ノードの第一候補 強く推奨
Hysteria2 ★★★★★ ★★★★ 簡単 低速 / 高遅延環境 強く推奨
Trojan ★★★★ ★★★★ 簡単 日常利用の主力 推奨
VMess + WS + TLS ★★★★ ★★★★ 中程度 CDN 経由のシーン 推奨
TUIC v5 ★★★★★ ★★★ 中程度 低遅延・小パケット 推奨
Shadowsocks ★★★★ ★★★ 極めて簡単 プロキシ購読 / 初心者 一般的
WireGuard ★★★★★ ★★ やや難 企業 VPN / Warp 特定用途
プロキシサービスをご利用の方へ:有料のプロキシサービス(VPN プロバイダー)をご利用の場合、プロトコルはサービス側で決定されるため、通常は手動で選択する必要はありません。購読後に Clash クライアントにインポートするだけで、クライアントが各ノードのプロトコルタイプを自動的に識別します。具体的なインポート手順については、インストール・使用チュートリアル

準備はいいですか?

Clash クライアントをダウンロードし、チュートリアルに従ってサブスクリプションを設定すれば、5分以内に使い始めることができます。