クライアント
クライアントは、サブスクリプションの取り込み、モード切り替え、ログ確認、システム連携の設定を行うアプリです。メニューバー常駐ツールやデスクトップ用の管理画面などがあります。通常はプロキシコアを呼び出して通信を処理しますが、画面で使える機能がそのままコアの機能とは限りません。設定を探すときは、まずクライアント名を確認しましょう。プロトコルの互換性を調べる場合は、使用中のコアとバージョンも確認してください。
設定用語ガイド · よく使う25の用語
まずクライアントとコアを区別し、サブスクリプション、ルール、通信の取り込みを理解しましょう。
設定画面に表示されるキーワードから調べ、プロトコル、モード、権限を混同しないようにします。
CORE / CLIENT
画面は管理を担い、コアは処理を実行します。サブスクリプションとローカルの変更を反映したものが最終設定です。
クライアントは、サブスクリプションの取り込み、モード切り替え、ログ確認、システム連携の設定を行うアプリです。メニューバー常駐ツールやデスクトップ用の管理画面などがあります。通常はプロキシコアを呼び出して通信を処理しますが、画面で使える機能がそのままコアの機能とは限りません。設定を探すときは、まずクライアント名を確認しましょう。プロトコルの互換性を調べる場合は、使用中のコアとバージョンも確認してください。
mihomoはClash Metaのエコシステムを起源とするオープンソースのプロキシコアです。プロトコル接続、DNS処理、ルール照合、出力先の選択などを担います。同じコアを複数のクライアントで利用できても、管理画面はそれぞれ異なる場合があります。新機能を設定する前に、クライアント名だけで判断せず、現在のコアが該当する設定項目に対応しているか確認してください。
YAMLはインデントでデータの階層を表します。Clashの設定では、ポート、ノード、プロキシグループ、ルールなどをこの形式で記述します。インデントにはスペースを使い、リスト項目のハイフンにも構文上の意味があります。ファイルを解析できても、形式が基本的に正しいことしか分かりません。存在しないプロキシグループを参照していたり、ポートが競合していたりすれば、読み込みや実行に失敗します。
サブスクリプションは、リモートURLからノードや設定全体を取得し、クライアントで定期的に更新する仕組みです。URL形式のサブスクリプション、ローカルのYAML、Base64形式のノード文字列はそれぞれ異なるため、同じ画面からそのまま利用できるとは限りません。URLにアカウントのアクセストークンが含まれることがあります。スクリーンショットやログを共有する前に、トークンを隠してください。説明用の値 https://example.com/sub?token=xxxx では接続できません。
設定オーバーライドは、サブスクリプションの内容にローカルの変更を適用する仕組みで、DNSやポートの調整、ルールの追加などに使われます。クライアントによってマージ、置換、スクリプト処理の方式が異なるため、同名の設定が同じ順序で反映されるとは限りません。サブスクリプションから生成されたファイルを直接編集すると、次回の更新で上書きされることがあります。まずクライアントの永続化設定を確認し、最後に有効な設定を確かめてください。
PROTOCOL / OUTBOUND
ノードは接続先を定義し、プロトコルは通信方式を定めます。インポートできても、認証やトランスポートの設定が一致しているとは限りません。
ノードはプロキシの出力先を定義する設定項目で、通常はサーバーアドレス、ポート、プロトコル、認証情報のほか、トランスポート層やTLSの設定を含みます。名前は識別用のラベルにすぎず、地域名から実際の所在地は判断できません。一覧に表示されていても、現在利用できるとは限りません。接続に失敗したら、選択中のノードとログを確認し、出力モードを切り替えるだけで済ませないようにしてください。
Shadowsocksは暗号化に対応したプロキシプロトコルで、設定では通常 type: ss と記述します。暗号化方式、パスワード、必要に応じてプラグインの設定をサーバー側と一致させてください。任意の方式で元の値を置き換えてはいけません。接続できない場合は、サーバーに到達できない、認証情報が一致しない、プラグインの設定に誤りがあるといった原因を切り分けましょう。すべてをノードの遅延のせいにしないでください。
VMessはユーザー識別情報で認証し、WebSocketなど複数のトランスポート方式を利用できます。ノード設定のUUID、トランスポートパス、ホスト名、TLSオプションはそれぞれ役割が異なり、いずれかが欠けても接続できないことがあります。認証やハンドシェイクの問題を調べる際は、端末の時刻が正確か確認し、サーバーから提供された設定を一つずつ照合してください。
VLESSは軽量なプロキシプロトコルで、プロトコル自体には暗号化機能がありません。通常はTLSやREALITYなどのセキュリティ機能と組み合わせます。UUID、トランスポート方式、セキュリティ設定、必要に応じてフロー制御の項目をそれぞれサーバー側と一致させてください。VMessノードのタイプをVLESSに変えるだけでは変換できません。また、プロトコル名だけで接続全体の安全性は判断できません。
Trojanは通常TLSで通信し、パスワード認証を使うプロキシプロトコルです。サーバーアドレス、認証パスワード、証明書検証に使うホスト名を正しく設定する必要があります。パスワードが正しくても証明書エラーは解消されません。ハンドシェイクに失敗した場合は、証明書の有効期限、端末の時刻、ホスト名を確認してください。証明書検証の無効化を常用の解決策にしないでください。
RULE / POLICY
接続はまずルールに照合され、一致した出力先またはプロキシグループに送られます。ルールの順序も設定の一部です。
ルール分岐では、ルールモードでドメイン、接続先IPアドレスなどの条件をもとに、接続の出力先を決めます。ルールは通常上から順に確認され、最初に一致したルールのポリシーが適用されます。たとえば DOMAIN-SUFFIX,apple.com,DIRECT は、指定したドメインのサフィックスに直結を適用します。末尾に MATCH を置くと、どのルールにも一致しなかった接続を処理できます。調べる際は、一致したルールと最終的な出力先の両方を確認してください。
プロキシグループは複数のノードや出力先ポリシーをまとめ、ルールから一括で参照できるようにします。select は手動選択、url-test は指定URLへのテスト結果による選択、fallback は候補の順に利用可能な出力先へ切り替える方式です。グループが別のグループを参照することもあります。グループ名を確認したら、最終的にどのノードが選ばれているかも確認してください。
DIRECT は、リモートのプロキシノードを経由せず、端末が利用できるネットワークから接続先へ直接接続する組み込みの出力先ポリシーです。直結通信も、端末のルーティング、DNS、ファイアウォール、ネットワーク環境の影響を受けます。TUNを有効にすると、接続がいったんコアに入り、ルールによって直結が選ばれることもあります。直結は、クライアントによる処理を完全に迂回することではありません。
REJECT はルールに一致した接続を拒否します。明確に遮断したい接続に適用してください。ページ本体は表示できても、画像、ログイン、APIリクエストが失敗する場合、必要なドメインが誤って拒否されている可能性があります。接続ログで対象と一致したルールを特定し、範囲を調整してください。拒否ルールをすべて削除するのは避けましょう。
GeoIPは、データベースに記録されたIPアドレスの割り当て情報をもとに地域を判定します。たとえば GEOIP,CN,DIRECT のように指定します。リアルタイムの位置情報ではなく、ドメインを所有する組織による分類とも異なります。CDNのIPアドレス変更やデータ更新によって結果が変わるほか、ドメイン名での接続はIP判定の前に名前解決が必要な場合があります。ルールの no-resolve は、その項目のために追加の名前解決が行われるのを防ぎます。
DNS / NETWORK STACK
名前解決の経路、返されるアドレス、通信の取り込みは相互に関係します。遅延テストの結果は、指定した条件での数値にすぎません。
DNSはドメイン名からIPアドレスなどのレコードを取得する仕組みで、多くのネットワーク接続に先立って行われます。OS、ブラウザー、プロキシコアは別々にキャッシュを持つことがあり、異なるDNSサーバーを使う場合もあります。コアのDNS設定を変更しても、アプリがすぐに新しい経路を使うとは限りません。名前解決に問題がある場合は、まず誰がどこにリクエストを送っているかを確認し、必要に応じて該当するキャッシュを消去してください。
Fake-IPはアプリに仮想アドレスを返し、コア内にアドレスとドメインの対応関係を保存します。よく使われる仮想アドレス範囲は 198.18.0.0/16 です。アプリがそのアドレスに接続し、通信がコアに届くと、コアはドメインを復元して分岐できます。正しく機能するには通信が適切に取り込まれている必要があります。互換性に問題がある場合は、必要に応じて fake-ip-filter を設定し、除外範囲をむやみに広げないでください。
Redir-Hostは仮想アドレスではなく、名前解決で得た実際のアドレスをアプリに返します。実IPアドレスが必要な一部の状況で利用できます。関連するドメインルールを照合するには、コアが名前解決の記録、スニッフィングなどの方法でドメインを把握している必要があります。このモードに切り替えても、DNSが必ずプロキシを経由するわけではありません。アプリに実IPアドレスが表示されるだけで、正しく分岐されたとは判断できません。
DNSリークとは、DNSクエリが想定した名前解決経路から外れ、意図しないDNSサーバーに送信される現象です。問題になるかどうかは、プライバシーとルーティングの目的によって異なります。ブラウザーの暗号化DNS、IPv6の設定、通信を取り込まれていないアプリなどが別の経路を使う場合もあります。テスト結果は分岐の設計とあわせて判断してください。直結するドメインをローカルで名前解決しても、必ずしもリークではありません。
ノードの遅延は、通常、クライアントが指定したアドレスへの接続テストで計測した時間です。ICMP Pingと同じとは限りません。名前解決、接続確立、暗号化ハンドシェイク、サーバーの応答が数値に含まれることがあり、ダウンロード速度には換算できません。比較時はテスト先と条件をそろえてください。タイムアウトした場合も、実際のアクセス状況やログとあわせて判断しましょう。
SYSTEM / PERMISSION
システムプロキシはアプリ層の接続口、TUNはネットワークインターフェースによる通信の取り込みです。必要な権限はクライアントの実装によって異なります。
システムプロキシはローカルのプロキシアドレスとポートをOSに登録し、その設定に従うアプリから利用できるようにします。一部のターミナルツール、ゲーム、独自の通信処理を行うプログラムはシステム設定を参照しません。そのため、スイッチを有効にしてもすべての接続が取り込まれるわけではありません。クライアントの終了後にネットワークへ接続できなくなった場合は、停止したポートを指すプロキシ設定がシステムに残っていないか確認してください。
TUNは仮想ネットワークインターフェースとルーティングを使ってネットワークパケットを取り込み、システムプロキシに従わない一部の接続にも対応できます。通常は追加の権限やバックグラウンドサービスが必要です。TUNはグローバルプロキシモードと同じではなく、コアに入った通信もルールによって直結かプロキシかが決まります。他のVPNや仮想ネットワークアダプターと併用する場合は、ルーティングとDNSの競合に注意し、実際の接続経路を確認してください。
mixed-port は、HTTPプロキシとSOCKSプロキシの接続を同時に受け付けるローカルの待ち受けポートです。7890 はよく使われる例であり、固定値ではありません。アプリに設定するアドレスとポートは、現在の待ち受け設定と一致させてください。他の端末から接続できるかどうかは、待ち受けアドレス、allow-lan、ファイアウォールの設定にも左右されます。ポートを変更しただけでは、LANからのアクセスは許可されません。
Windowsの一部サンドボックスアプリはネットワーク分離の制限により、ローカルのループバックアドレス上にあるプロキシサービスへ接続できない場合があります。ブラウザーは使えるのに特定のアプリだけ使えない、といった症状が見られます。ループバックの例外設定を行うと、指定したアプリからのローカルアクセスを許可できます。まず対象アプリがこの制限を受けているか確認し、クライアントのツールで設定してください。システムの保護をすべて無効にする必要はありません。
クライアントが仮想インターフェース、プロキシによる通信の取り込み、バックグラウンドサービスのためにシステムの許可を求めることがありますが、必要な権限はクライアントごとに異なります。macOSのネットワーク拡張、システム拡張、キーチェーンの確認はそれぞれ別の機能に関するもので、同じスイッチではありません。ダイアログに表示されたアプリ名と操作の目的を確認してください。拒否した場合は該当する設定画面から許可し直し、一般的な接続エラーを理由にすべての権限を許可しないでください。