共有する設定と端末ごとの設定を分ける

PCとスマートフォンでClashの設定を共有する場合、共有するのは通常、ノードの取得元、プロキシグループ名、ルールです。クライアントのデータディレクトリ全体を共有する必要はありません。Windowsのシステムプロキシ、AndroidのVPNによる通信制御、Linuxのルーティング権限はそれぞれ異なります。ある端末で使用中のファイルをすべて別の端末にコピーすると、対応していないネットワークインターフェース名や待ち受けアドレス、実行状態まで引き継いでしまうことがあります。

クライアントとコアも区別しましょう。クライアントはサブスクリプションの追加や定期更新、設定の生成、システムプロキシの設定を担当します。Clashやmihomoのコアは、最終的な設定を読み込んで通信を処理します。クライアントの「オーバーライド」「マージ」「スクリプト」などの機能は、すべてのコアでそのまま読み込める共通の設定項目ではありません。

設定レイヤー共有に適した内容端末ごとに確認する内容
ノードとルールサブスクリプションURL、ルールセットの取得元、プロキシグループ名契約プランの端末数制限、ノードのプロトコル対応状況
コアの設定互換性のあるルールとDNSの基本設定TUN、DNSの待ち受け、ネットワークインターフェース、ポートの使用状況
クライアントの状態必要に応じて選択中のプロキシグループ名を記録システムプロキシ、自動起動、バックグラウンド権限、画面設定

方法1:各端末に同じサブスクリプションURLを追加する

ノードをまとめて更新するならサブスクリプションURLが適しており、PCとスマートフォンを併用する場合にも便利です。各クライアントが同じURLに個別にアクセスし、それぞれの端末にコピーを保存する仕組みです。1台での変更がほかの端末に即時反映されるわけではありません。複数端末での利用可否や同時接続数の数え方は、サービス提供側の条件を確認してください。

追加と更新の手順

  1. サブスクリプションの出力形式を確認します。Clashの完全なYAMLには通常、ノード、プロキシグループ、ルールが含まれます。ノードだけのサブスクリプションでは、残りをクライアントまたはローカル設定で補う必要があります。URLの末尾だけで形式を判断しないでください。
  2. 各端末のサブスクリプション管理画面で、「URLから追加」などの項目を選びます。項目名はクライアントによって異なります。追加後は設定をプレビューし、Webページやログイン案内、エラーメッセージが読み込まれていないか確認してください。
  3. 端末ごとに更新タスクを設定します。たとえばPCでは更新間隔を24時間に設定できます。スマートフォンではバックグラウンド動作も許可してください。予定時刻を設定しても、必ずその時刻に実行されるとは限りません。
  4. 手動で一度更新し、ノード数、プロキシグループ名、更新時刻を確認してから設定を有効にします。サブスクリプションが一覧に表示されたからといって、コアへの切り替えが完了したとは限りません。

サーバー側で生成されたサブスクリプション設定全体は、更新時に置き換わる場合があります。ダウンロードしたコピーのrulesを直接編集すると、次回の更新で変更が失われる可能性があります。長期間維持したいルールは、クライアントが対応するローカルオーバーライドに追加するか、自分で管理する設定ソースに保存してください。

サブスクリプションでは現在選択中のノードは同期されない

同じ名前のselectプロキシグループでも、スマートフォンではノードA、PCではノードBを選べます。一部のコアはprofile.store-selectedで端末ごとの選択状態を保存できますが、端末間の同期機能ではありません。自動遅延測定グループの結果もローカルネットワークの影響を受けるため、自宅の固定回線とモバイル回線で異なるノードが選ばれても正常です。

サブスクリプションURLには通常、アクセスに必要な認証情報が含まれています。URL全体を公開リポジトリやスクリーンショット、公開の問い合わせに載せたり、出所の分からないオンライン変換サービスに渡したりしないでください。漏えいした場合はサーバー側でURLを再発行し、各端末に保存したURLを更新します。ローカルファイルを削除しても、古いURLのアクセス権は無効になりません。

方法2:クラウドストレージで設定ソースを同期する

クラウドストレージは、カスタムYAMLやルールファイル、変更履歴の管理に適しています。特にPC間の同期に便利です。クライアントが実行中のデータディレクトリではなく、独立した「設定ソース」フォルダーを同期してください。実行用ディレクトリにはキャッシュ、ログ、データベース、ロックファイル、クライアント固有のメタデータが含まれている場合があります。

編集する端末を1台に決め、双方向の上書きを防ぐ

クラウドストレージに、次のようなフォルダーを作成できます。ファイル名は用途を示すためのもので、クライアントがその名前を認識する必要はありません。どのファイルを読み込むか、内部ディレクトリへのコピーが必要かは、クライアントごとに確認してください。

clash-config-source/
  shared-rules.yaml
  desktop-source.yaml
  mobile-source.yaml
  change-notes.txt
  1. 1台のPCをソースファイルの編集用に指定します。ほかの端末では読み取りまたはインポートだけを行い、オフライン編集による競合コピーの発生を防ぎます。
  2. 編集後、編集端末でYAMLの構文とルールの適用先を確認してから、クラウドストレージへのアップロード完了を待ちます。
  3. 受信側でダウンロード完了を確認し、設定を再インポートするか再読み込みします。ファイルがクラウドストレージのフォルダーに届いても、クライアントが新しい内容を読み込んだとは限りません。
  4. 直前に使えていたファイルと変更内容の記録を残します。元に戻す場合はソースファイルを復元し、クライアントで再読み込みしてください。

クラウドストレージの共有リンクは、プレビュー画面を表示したりログインを求めたりすることが多く、そのままサブスクリプションURLとして使えるとは限りません。クライアントが設定内容を直接取得できるURLが必要です。対応できない場合はローカルファイルとしてインポートしてください。スマートフォンでシステムのファイル選択画面からインポートすると、クライアントには一度だけコピーが保存され、その後のクラウド上の更新が自動反映されないことがあります。

機密情報を含む設定へのアクセスを制限する

完全な設定には、ノードのパスワード、サブスクリプションの認証情報、外部コントロールインターフェースのアクセスキーが含まれることがあります。クラウドストレージの共有範囲を限定し、不要になった公開共有は無効にしてください。バックアップと日常的な配布先も分けましょう。長期保管用のバックアップを、すべての端末が継続して読み込む運用設定として使うべきではありません。

方法3:サブスクリプションとローカルオーバーライドを併用する

ノードはサブスクリプションで更新しつつ、ポート、DNS、ルールを維持したい場合はオーバーライドが適しています。クライアントがサブスクリプションを取得し、独自のマージ処理やスクリプトで最終設定を生成してから、コアに渡します。オーバーライドの追加場所、形式、適用順序はクライアントによって異なります。特定のクライアント用のマージファイルを、そのまま別の端末に読み込めるとは限りません。

端末固有の設定はローカルに残す

以下はデスクトップ端末向けの一部設定例であり、単独で動作する完全なサブスクリプションではありません。ノードとプロキシグループは含まれていません。これらのトップレベル項目のマージに対応するクライアントのオーバーライド機能に追加するか、完全な設定に手動で組み込んでください。

mixed-port: 7890
allow-lan: false
bind-address: 127.0.0.1
mode: rule
log-level: info

mixed-port: 7890は、同じポートでHTTPとSOCKSのプロキシ接続を受け付けます。端末上で別のプログラムが7890を使用している場合は7893に変更し、そのポートを参照するシステムプロキシやアプリのプロキシ設定も更新してください。allow-lan: falseはLANからのアクセスを無効にします。この設定を、端末間でプロキシサービスを共有する設定と誤解しないでください。

スマートフォンでシステムのVPNインターフェースを使って通信を制御する場合、通常はPCのシステムプロキシのポート設定をそのまま引き継ぐ必要はありません。Androidのアプリ別プロキシ設定やバックグラウンド動作のバッテリー制限、PCのTUN設定と管理者権限は、端末ごとに確認してください。

ルール一覧が自動で結合されるとは限らない

YAMLはデータ形式であり、共通のオーバーライド処理は定義されていません。クライアントによってはローカルのrulesで一覧全体を置き換え、別のクライアントでは「ルールを先頭に追加」できます。ルールを追加する前に、マージ方法を確認してください。2件だけのルール一覧でサブスクリプション全体を上書きし、ほかの振り分けルールがすべて消えてから気付くことのないようにしましょう。

# ルールの順序を示す例です。転送先の PROXY は最終設定内に定義されている必要があります
rules:
  - DOMAIN-SUFFIX,example.com,PROXY
  - MATCH,DIRECT

上の例では、example.comとそのサブドメインへの通信をPROXYに、それ以外の通信をDIRECTに振り分けます。日常利用向けの汎用的な振り分け設定ではありません。実際にルールを追加するときは、そのルールに一致するフォールバックルールより前に配置してください。最終設定に「ノード選択」という名前のプロキシグループしかない場合、存在しないPROXYを参照することはできません。

クロスプラットフォーム対応:コア、DNS、TUNを確認する

同じYAMLをデスクトップクライアントで読み込めても、スマートフォンですべての項目が使えるとは限りません。Clashとmihomoの機能は完全には同じではなく、クライアントが設定を一部削除したり再生成したりすることもあります。読み込みに失敗したら、まず各端末のクライアントと実際のコアのバージョンを記録し、最初に出た解析エラーを確認してください。アプリ名だけを比較しても原因は分かりません。

  • ノードのプロトコル:サブスクリプションに含まれる各ノードの種類が、使用するコアでサポートされているか確認します。ある端末だけで特定のノードが表示されない場合、同期漏れではなく互換性の問題かもしれません。
  • DNSの待ち受け:たとえば127.0.0.1:1053は端末内で待ち受けるアドレスです。この設定行をコピーしただけでは、OSからのDNS問い合わせが自動的に1053番ポートへ送られることも、スマートフォンでDNS通信が自動的に制御されることもありません。
  • TUNとネットワークインターフェース:特定のインターフェース名や端末専用のルートを固定して共有しないでください。TUNに必要な権限、ルートの設定方法、DNSリダイレクトの入口は、対象のOSに合わせて設定します。
  • ファイル参照:proxy-providersやrule-providersで指定するローカルパスは、対象端末から読み取れる必要があります。メイン設定だけをコピーして参照先のファイルを入れ忘れると、読み込みや更新に失敗します。

ノードの取得元だけを共有したい場合は、各プラットフォームで個別のメイン設定を管理し、互換性のあるproxy-providersからノードプロバイダーを読み込めます。ただし、プロバイダーには対応するコンテンツ形式が必要です。任意の完全なサブスクリプションYAMLをurlに指定すれば互換性がある、というわけではありません。サブスクリプション側の出力形式と、対象コアの解析要件を事前に確認してください。

同期後に最終的な適用設定を確認する

確認すべきなのは「ファイルが同一か」ではなく、「共有したい部分が一致し、端末ごとの差異が保たれているか」です。設定ソース、オーバーライドファイル、クライアントが生成する実行設定は、別々のファイルである可能性があります。問題の調査では、クライアントの最終設定プレビュー、またはコアが実際に読み込んだファイルを優先して確認してください。

  1. 入力内容を確認:サブスクリプションを手動更新し、更新時刻とノード数を記録します。クラウドストレージを使う場合は、ファイルのダウンロード完了を確認してから再インポートします。
  2. 設定の構造を確認:プロキシグループ名、ルールの転送先、フォールバックルールを確認します。読み込みログに、存在しないプロキシグループやYAMLの解析エラーが出たら、まず設定構造を修正してください。
  3. 通信制御を確認:PCではシステムプロキシまたはTUNが有効かを確認します。スマートフォンではVPN接続と、プロキシが必要なアプリが制御対象になっているかを確認してください。
  4. 接続を確認:動作確認が必要なドメインにアクセスし、接続ログで適用されたルール、プロキシグループ、実際のノードを確認します。速度テストに成功しても、Webサイトへの接続確認の代わりにはなりません。
  5. 更新後も維持されるか確認:サブスクリプションをもう一度更新してクライアントを再起動し、カスタムルールが残っているか、端末のポート設定が正しいかを確認します。更新による上書きも検出できます。

よくある同期トラブル3例

症状まず確認する項目対処方法
PCでは更新されたが、スマートフォンのノードが変わらないスマートフォンの更新ログ、バックグラウンド制限、サブスクリプションURLアプリを前面にして手動更新し、取得内容と更新時刻を確認する
更新のたびにルールが消えるサブスクリプションのコピーを直接編集していないか、オーバーライドが設定されているか変更を対応するオーバーライド機能に移し、マージ順を確認する
クラウドストレージ上のファイルは同じなのに、動作が異なる有効な設定、コアのバージョン、プロキシグループの選択、通信制御の方法クラウド上のソースだけでなく、実際に使われている設定を比較する

端末の組み合わせに合わせて同期方法を選ぶ

スマートフォンとPCでノードを共有する場合は、同じサブスクリプションを各端末で更新し、通信制御の設定は端末ごとに保持する方法がおすすめです。2台のPCでカスタムルールを統一するなら、ソースファイルをクラウドストレージに保存できます。ただし、編集端末を1台に決め、実行用ディレクトリを直接同期しないでください。サブスクリプションの更新頻度が高く、個別ルールも維持したい場合は、サブスクリプションとローカルオーバーライドを併用し、ルール一覧のマージ順を明確にします。

端末を追加するときは、「取得元を追加する」「端末固有の設定を行う」「最終設定を確認する」「接続を検証する」の順に進めます。ノードとルールは追跡できる状態にし、ポート、TUN、権限は端末ごとに管理しましょう。すべてのファイルを完全に一致させるより、こうした運用のほうが保守しやすくなります。