こんなときに読む記事

オンラインゲームの公式ランチャーだけ外へ出したい、某ストアのダウンローダーだけ安定ノードに載せたい、一方でブラウザや社内ツールは従来どおり直結(DIRECT)のままにしたい、というニーズは Windows 利用者のあいだでかなり一般的です。Clash ファミリーで全体を一括でプロキシにする方法(システムプロキシTUN+下位ルール全てプロキシ)は説明が多い一方、「どの接続がどの exe から来たか」を条件にルールを書きたい場合は、Clash Metamihomo コア)のプロセス名ルール、すなわち PROCESS-NAME の理解が近道になります。本稿は英語圏向け用語の per-app proxy(アプリ単位の出口)に相当する、いわゆる「アプリ別代理」を、Windows 上の .exe 名で表現する手順に絞ります。

初めて Clash 本体の導入とポート確認をしたい方は、Clash for Windows 系クライアント向けの総合ハンドブックから入り、TUN の挙動を押さえたい方は TUN モード完全ガイドを併読すると、本記事の前提が揃いやすいです。ルール構文全般の整理は ルール分流の深掘り記事が補助線になります。

PROCESS-NAME が「効く」前提:Meta と TUN

PROCESS-NAME は、接続元プロセス名(Windows では通常、実行ファイルのベース名)にマッチする拡張ルールで、Clash Meta 系で扱います。クラシックな Clash コアだけでは同じ行が使えない構成もあるため、まず利用中のクライアントの「Meta/mihomo かどうか」を確認してください。

次に重要なのが、コアが接続の発信元プロセスを識別できるかどうかです。OS の「システムプロキシ」にアプリを向けた場合、Clash から見ると多くのトラフィックはプロキシを設定したそのアプリ一種類にまとまり、細かい exe 分離が曖昧になることがあります。一方、TUN モードで仮想アダプタにトラフィックを乗せ、カーネル/ドライバ経路でメタデータを辿る設計のほうが、プロセス名ベースの判定と相性がよい、というのが実務的な感覚です。GUI によっては TUN スイッチと「プロセスルールを有効にする」のような表記がまとまっていることもあります。実際のトグル名は各クライアントのドキュメントに従ってください。

全アプリ同じ扱いの TUN」と「PROCESS-NAME で一部だけ上乗せ」は対立しません。まず TUN 経路を開き、そのうえで rules上のほうPROCESS-NAME を置けば、以降の GEOIPDOMAIN 系より先に、指定 exe だけ別ポリシーへ抜けられます。

ステップ 1:タスク マネージャー等で正しい exe 名を決める

ルールに書く文字列は、多くの場合 ファイル名+拡張子です。例:notepad.exe。タスク マネージャーの[詳細]でプロセス名を確認する、ゲームの場合は「ランチャー」と「実体のクライアント」で名前が違うかを必ず比較する、というのが定石です。ストア系・UWP 系は ApplicationFrameHost.exe の背後に子プロセスが隠れている、といった例外もあるため、うまく当たらないときは 実際に通信を発生させながらプロセス一覧を眺めるのが近道です。

同じ意図で完全パスを条件にしたい場合は、実装のある環境では PROCESS-PATH 系の行が使えることもあります。パス表記はエスケープや区切りに注意し、まずは PROCESS-NAME のほうが短くて試しやすいことが多いです。どちらを使うにせよ、ルール上の表記タスク マネージャー上の表記を 1:1 で照合してください。

ステップ 2:設定 YAML の rulesPROCESS-NAME を足す

基本形は、ドキュメントでも例示されているとおり、次のように行頭からタイプ、カンマ区切り、プロセス名、宛先です。すでに DOMAIN-SUFFIXGEOIP を並べているなら、「そのより上」、かつ MATCH より上に置くのが原則です。ここで向き先に書く GameProxyMySelect などの名前は、同じ設定内の proxy-groups のグループ名と一致させる必要があります。

下の抜粋のように、「特定のゲームだけ GameProxy、それ以外のトラフィックは後続ルール(例:国内 GEOIP,CN,DIRECT)に任せる」といった階層化が可能です。最終行の MATCH の振り分け方は、ご自身の購読プロファイルの方針に合わせてください。

rules:
  - PROCESS-NAME,ExampleGame.exe,GameProxy
  - PROCESS-NAME,SecondLauncher.exe,GameProxy
  - GEOIP,CN,DIRECT
  - MATCH,Proxy

ここで重要なのは、GameProxyselect か url-test か、UDP を必要とするゲームなら ノードの UDP 対応、など、プロセスを寄せる「器」のほうの設計も同時に決めることです。UDP やボイスチャットの扱いは、Clash ゲーミング向け TUN 分流の稿で触れているレイヤ(DNS・fake-ip・UDP)とも連動するので、症状が出たらあわせて参照すると切り分けが早いです。

方針の例:「代理したいアプリ少数」と「他は従来ルール任せ」

代表的な使い方は次のふたつです。ひとつは、PROCESS-NAME 行を数本だけ置き、指定 exe を特定の select グループへ送る。もうひとつは、まず DOMAIN 系で多くの通信を捌き、ドメインでは区別しにくいが exe 名なら一発で分かる客だけプロセス行で上書きする、という併用です。後者は、ブラウザはドメインルール、ゲームはプロセス行、のように住み分けしやすいメリットがあります。

「とにかく全部 DIRECT にした上で、例外だけ…」をやりたい場合は、MATCHGEOIP よりPROCESS-NAME,foo.exe,Proxy を置き、foo.exe 以外は従来どおり下流の規則で処理される、といった階層にします。逆に、ここを誤ると意図せず Proxy へ吸い上げる範囲が広がるため、行の上下関係はログをみながら何度か確認するのが安全です。

子プロセス・ランチャー・二重化に注意

ゲームや配信クライアントは、アップデータ → 本編32bit ランチャー → 64bit 実体のように、実際の通信が子プロセスで発生します。片方の exe だけ PROCESS-NAME に入れても、もう片方が抜けていると、期待した出口に行かないまま他ルールに流れます。必要なら両方、あるいはテスト中に接続を張ったプロセス名を Clash 側の接続履歴(あれば)と突き合わせます。

すでに別手段で ブラウザだけ手動プロキシにしている(本サイトの Chrome/Edge 単体プロキシの稿)場合は、TUN 系と併用すると経路が二重化したり、想定外のループに見えたりすることがあります。併用するなら、どちらの階層で「分岐」を担うかを一文でコメント残すなど、将来の自分向けのメモを残すと再現実験が楽になります。

TUN ドライバ・管理者権限・クライアント差

Windows では TUN 用の仮想アダプタや WFP まわりの扱いに、初回の管理者承認や、セキュリティソフトのファイアウォール層のポップアップが入ることがあります。有効化したのにプロセス行が全く当たらないときは、(1)本当に Meta コアで動いているか、(2)TUN インターフェースが有効か、(3)自クライアントがプロセス識別を内部でオフにしていないか、の三点から疑うとよいです。GUI によっては、接続画面に「プロセス名」列が出るかどうかがヒントになります。

社用 PC でポリシーが厳しい場合、TUN ドライバのインストール自体が制限されることもあるため、そのときは本稿の方式より、公式 VPN か、手動でアプリにだけプロキシを指定する方式のほうが現実的です。制約下では「できる/できない」を早めに切り分けたほうが、のちの手戻りが減ります。

うまくいかないときのチェック

ルールの順序

ルールは上から先勝ちです。意図した PROCESS-NAME より上に、より広い MATCHGEOIP が来ていると、そちらで処理が終わってしまいます。一時的に行を上へ移し、接続を再試行してみてください。

名前の揺れ

Game.exegame.exe、パス違いの二重起動、など。タスク マネージャー上の表示と同一の表記に寄せるのが近道です。疑わしければ PROCESS-PATH の検討に進みます(対応する場合)。

ログで確認

接続に関するデバッグログが出るクライアントでは、どのルールに当たったかを 1 件ずつ追えるかどうかが鍵です。行を足した直後にまったく挙動が変わらないなら、そもそも TUN 経路に乗っていない可能性を疑ってください。

まとめ

Windows で Clash Metamihomo)を使い、PROCESS-NAME 行で特定の exe だけを専用のポリシーグループに送る、というのは、いわゆる per-appアプリ別代理需要にストレートに答える手段です。ポイントは、(1)Meta コアであること、(2)プロセス情報がコアに届く導線(多くの場合 TUN)を有効化すること、(3)正しい exe 名をタスク マネージャー等で採ること、(4)ルール先頭への配置、の四点でした。ランチャーと本編、UDP/DNS といった下層の話はゲーム用の個別稿や TUN 全般の稿と併せて補完すると、トラブルが素早く片付きます。

配布物の取得とクライアント比較は、常に本サイトの案内に沿うと、画面と注意事項を一箇所で追えて安心です。オープンソースのリポジトリは、ライセンス確認やイシュー閲覧用として併用する、という分け方が分かりやすいでしょう。

Clash クライアントを無料でダウンロードする → ルールエンジンと TUN まわりの作りのよさは、同種ツールのなかでも「設定の見通し」という点で扱いやすいと感じる読者が多いはずです。本稿の手順をテンプレに、自分専用の PROCESS-NAME 数行を加えてみてください。