1. Clashは「設定駆動」のプロキシコアである
Clashはもともと、ルールによって通信の行き先を振り分けるためのオープンソース・クロスプラットフォーム向けプロキシコア(中核プログラム)として知られていたGo製ソフトウェアです。役割はシンプルで、端末に届く接続を読み取り、YAMLなどの設定に従って「プロキシ経由」「ローカル直通(DIRECT)」「拒否(REJECT)」へマッピングします。
サブスクURLを貼ってすべてを闇雲に丸ごと切り替えるタイプの単機能アプリとは思想が異なり、Clashはポリシーとデータ構造をユーザーが持てることに強みがあります。ただしその反面、初見では「コアとGUI」「購読と変換」「モード(rule/global/direct)」など用語が多く、全体像が見えにくいのも事実です。
多くの場合、実際に触るのはコア単体ではなく、Windows向けのデスクトップアプリ、macOS向けのメニューバー常駐クライアント、Android向けのAPKなど、コアを内包したグラフィカルクライアントです。見た目はバラバラでも、腹の中で回っているのは同じ「設定を読んでルールで振り分ける」というパイプラインであると考えると理解が速いです。
2. トラフィックはどこから入り、どこへ出るか
代表的な受け口は次のとおりです。用途とトレードオフがはっきり違うので、まずここを押さえるのが近道です。
- HTTP/HTTPSプロキシ:たとえば
7890のようなローカルポートで待ち受け、ブラウザや互換アプリから明示的にプロキシ先を指定します。導入は軽い一方、プロキシを知らないアプリには届きません。 - SOCKS5:
7891など別ポートで待つ例が多く、プロトコルの幅が広い反面、やはりアプリ側の対応が前提です。 - TUN(仮想NIC):OSに仮想アダプタを作り、TCP/UDPをまとめてコアへ流します。非対応アプリを含め広く流量をさばける一方、権限やルーティングの影響範囲が大きく、ログの読み方も一段難しくなります。
接続がコアに入ったあと、ルール→プロキシグループ→アウトバウンドという評価の階段を降りていきます。アウトバウンドはVMessやVLESS、Shadowsocks、Trojanなど、プロバイダと契約したノードの実体に対応し、最終的な出口IPが決まります。REJECTは広告ドメインや危険ホストの遮断などに使われますが、誤設定すると普段使いのドメインまで落ちるので、ルールセットの出所には注意が必要です。
3. ルールエンジン:Clashの心臓部
ルールエンジンは、ホスト名・IP・国コードといった手掛かりから、その接続をどのポリシーに送るかを決める部分です。1行の基本形は次のイメージです。
ルール種別, 引数, ポリシー名またはDIRECT/REJECT
代表的な種別と意味合いは下表のとおりです(実際の設定では英語キーワードをそのまま書きます)。
| ルール種別 | 役割 | 例 |
|---|---|---|
DOMAIN | 完全一致のドメイン | DOMAIN,google.com,Proxy |
DOMAIN-SUFFIX | サフィックス一致 | DOMAIN-SUFFIX,google.com,Proxy |
DOMAIN-KEYWORD | 部分一致(幅が広くなりがち) | DOMAIN-KEYWORD,google,Proxy |
IP-CIDR | IPv4/IPv6レンジ | IP-CIDR,8.8.8.0/24,Proxy |
GEOIP | 国・地域コードで判定 | GEOIP,JP,DIRECT |
MATCH | 最後の逃がし先として必ず1行 | MATCH,Proxy |
評価は上から順の一本道です。だからこそ、「頻出ドメイン→Regional IP→GEOIP→MATCH」といった並べ替えがパフォーマンスと可読性の両面で効いてきます。サブスクリプション由来の巨大ルールをそのまま足すと、一見動いているのに特定サービスだけ遅い、という現象はよくあるため、自分用の追記はファイル末尾か専用snippetに分けると安全です。
4. OS別のGUIクライアントの選び方
利用環境ごとに代表作は次のような並びです。名称はコミュニティの移り変わりが速い領域なので、「公式ビルドの入手元」「最終更新日」「ライセンス形態」をセットで見る癖をつけると安心です。
- Windows:歴史的にはClash for Windows(CFW)が有名でしたが、メンテ状況は各フォーク・後継を要確認です。Clash Verge Rev系など、Mihomo対応のデスクトップUIが現行の選択肢になりやすいです。
- macOS:メニューバー型のClashX系や、クロスプラットフォームのVerge系など、Apple SiliconとIntelの両方で動作確認されているパッケージを選ぶと便利です。
- Android:ClashMeta for Android(CMFA)など、サブスク取り込みとルールプレビューがしやすいクライアントが定番です。バッテリー最適化の除外設定もセットで覚えるとトラブルが減ります。
- iOS:StashやShadowrocketのように、Clash形式を読めるアプリを使う構成が一般的です。国ごとのApp Store事情があるため、導入前にポリシーと入手経路を確認してください。
- Linux:同じくVerge系や、サーバ用途ならそのままコアバイナリをsystemd管理する構成もあります。
5. config.yaml の最小スケルトン
全体の筋を掴むには、次のような骨格を一度タイプしてみるのが早いです(値はダミーです)。
mixed-port: 7890 # HTTP + SOCKS をまとめて待受
allow-lan: false
mode: rule # global / direct も選択可
proxies:
- name: "node-a"
type: ss
server: 198.51.100.10
port: 8388
cipher: aes-256-gcm
password: "replace-me"
proxy-groups:
- name: "Proxy"
type: select
proxies:
- node-a
rules:
- GEOIP,JP,DIRECT
- MATCH,Proxy
実運用ではプロバイダが配る購読URLからプロフィールを生成し、手元のローカル設定で追記するのが一般です。購読変換サービスを挟む場合は、プライバシーと可用性のポリシーを読み、可能なら自前生成や信頼できるオープンツールを選ぶとリスクが下がります。また、機密トークンが埋まった完成版YAMLを共有リポジトリに置かないよう、バージョン管理の習慣にも注意してください。
6. まとめ:Clashは「方針をコードに落とす」ための道具
Clash/Mihomo系のスタックは、プロキシプロトコル・ルール・UIを層として切り離せるため、自宅ルータからモバイル端末まで一本のポリシーを持ち運びやすいのが魅力です。初日からすべてを暗記する必要はなく、まずは「モード」「購読」「代表的なルール種別」「TUNを使うか」の4点を理解し、チュートリアルに沿って一周回すと腹落ちが早くなります。
よくある質問
ClashとMihomo(Clash Meta)は同じものですか?
厳密には別プロジェクトですが、ユーザー体験の多くは互換に近いです。2023年以降はオリジナルClashコアの更新が止まっているため、実務上はMihomoなどのフォークが「生きたコア」として機能しています。GUIのバージョン画面でコア名とビルド日を確認するクセを付けると、記事やIssueを読むときの文脈ずれが減ります。
TUNモードとローカルプロキシは何が違いますか?
HTTP/SOCKSはアプリがプロキシを指定して自分から流します。TUNはOSに仮想インタフェースを作り、より広いアプリ集合へ設定を及ぼせます。便利さの代償として権限やDNS周りの挙動が複雑になるので、まずローカルプロキシで通し、必要になってからTUNを試す段階的導入が無難です。
ルールはどの順番で評価されますか?
上から順にマッチした時点で確定し、残りは評価されません。DOMAIN系を細かく刻むなら頻出ホストを上に寄せ、広いGEOIPは下に置く、最後にMATCHでフォールバック——このパターンが最も説明コストが低いです。
固定ノードだけを貼り替える閉じたアプリでは、ルール順やプロキシグループの意味がブラックボックスになりがちです。一方Clashは設定がテキストとして開けるため、仕事用Wi-Fiとモバイル回線で別ポリシーを切り替えたり、広告リストと本業トラフィックを分離したりといった細かな折りたたみが現実的になります。VPN型の単一トンネルに全員同じ挙動を押し込むより、利用シーンごとに出口を選べる点が、長く使うほど効いてきます。もし「方針を自分で持ちたい」と感じるなら、下のボタンから各OS向けクライアントを入手し、チュートリアルと合わせて一度フルセットを試すのがおすすめです。
さあ、はじめませんか?
利用中のOSに合わせたClashクライアントを選べば、短時間で導入を終えられます。