接続トラブルシューティング · Clash 技術ブログ

Clash Verge Rev:DNS オーバーライドが再起動でオフになる

同じサブスクリプションで DNS 設定を変えていないのに、確認済みのオーバーライドが再起動後にオフになりますか?保護対象の項目を調べ、Clash Verge Rev v2.5.7 に更新して実行時設定で検証します。復旧手順も確認できます。

  • Clash Verge Rev
  • DNS オーバーライド
  • サブスクリプション設定
  • v2.5.7
目次

スイッチが再びオフになるのは、サブスクリプションの変更に対する保護の場合も、確認済みの選択が保存されなかった場合もあります。同じサブスクリプションを使い、対象フィールドを保存して、スイッチの状態と実際の名前解決を別に確認します。常にオンにしようとすると、再確認が必要な配信元の変更を見落とす可能性があります。

確認した DNS 上書きが、再起動後も無効になるのはなぜ?

「DNS 上書き」は Clash Verge Rev の設定画面にある DNS の値をコア設定に書き込みます。コアは接続を実際に処理するプログラムで、dns.enable が名前解決機能の有効・無効を決めます。上書きスイッチとは別です。サブスクリプションに保護対象の解析設定がある場合、ローカル値でノードやウェブサイトが使えなくならないよう、アプリが確認を求めます。

同じサブスクリプションを使い、保護対象の DNS 値と再起動前後の上書き状態を保存します。対象の値が変わらず、有効化を確認済みなのに再起動後に無効になる場合が、この修正の対象です。更新で対象フィールドが変わった場合や、未確認の別のサブスクリプションへ切り替えた場合に、再確認を求めるのは正常な保護動作です。

公式 issue #7996 は macOS の v2.5.4、#8024 は Windows の v2.5.5 で再起動のたびに再確認が必要になる事例を記録しています。Clash Verge Rev v2.5.7 の Release には、この問題の修正が明記されています。これらの報告だけで、すべての OS や旧バージョンに同じ問題があるとは言えません。

TUNを有効にすると名前解決に失敗し、実行時設定に不完全なdnsセクションしか残っていない場合は、当サイトのmacOS TUN DNS残留設定のトラブルシューティングを参照してください。これはissue #8122の別の設定生成問題であり、v2.5.7の今回の修正だけでは結論を出せません。

再起動時の誤停止か、サブスクリプション更新後の保護かを見分けるには

まず設定画面で Clash Verge Rev のバージョン、現在選択中のサブスクリプション名、DNS オーバーライドの状態を記録します。すでに通信できない場合は TUN をオフにし、通常の通信か以前使えていたシステムプロキシを復旧してください。オフラインのまま DNS 設定を何度も変更しないでください。

設定を変える前に、現在のサブスクリプション、自分で作成した拡張設定、クライアント設定をバックアップし、オーバーライド画面で保持したい DNS 値を控えます。サブスクリプションにはノードのパスワードやトークンが含まれることがあります。バックアップは手元に保管し、公開する際は機密情報を伏せてください。

現在のサブスクリプションの元ファイルで dns を確認します。v2.5.7 のタグ付きソースでは、値が空でない proxy-server-nameserver、proxy-server-nameserver-policy、nameserver-policy だけを確認が必要な保護対象として判定します。

nameserver だけがある場合や、空のリスト、空のマッピング、空文字列は、この判定の対象になりません。「サブスクリプションに dns 項目が一つでもあれば保護が働く」と解釈しないでください。

再起動前後で、この三つの項目の実際の値とサブスクリプションの識別情報を比較します。バックグラウンド更新、別のサブスクリプションへの切り替え、保護対象の値の変更があれば、新しい内容について再確認が必要か判断します。無関係な項目の変更やマッピングのキー順変更だけでは、同じサブスクリプションの確認は失効しないはずです。

この節では現在のバージョンの動作だけを記録します。サブスクリプションの名前解決設定をローカル DNS で上書きする必要がある場合にだけ、有効にして警告を読んでください。同じサブスクリプションを更新しない状態で、確認結果、スイッチ、実行時設定を保存し、更新後の比較に使います。

サブスクリプションと項目の比較結果

確認できた状態次の手順
同じサブスクリプションで保護対象の値は不変なのに、確認済みのオーバーライドが再起動後にオフこの記事の修正対象です。バージョンを確認し、v2.5.7 に更新してください。
更新で保護対象の値が変わった、または初めて別のサブスクリプションへ切り替えた再確認が必要です。新しい内容を比べてから上書きするか決めてください。
サブスクリプションには nameserver だけがあり、三つの保護対象に空でない値はないこの保護判定には当たりません。設定の保存、拡張設定、ログを別途確認してください。
オーバーライドはオンのままだが、TUN を有効にするとドメイン名を解決できない実行時設定と DNS の上流を確認してください。スイッチの保存を TUN 障害の原因と決めつけないでください。

v2.5.7 で修正し、サブスクリプションの DNS 保護を維持するには

Clash Verge Rev プロジェクトの公式 Release で v2.5.7 を確認し、端末で通常使っている更新方法でアップデートします。出所を確認できないミラーからダウンロードせず、アプリのデータディレクトリを空にしたり、生成された実行時設定を直接編集したりしないでください。更新前のサブスクリプションと拡張設定のバックアップを残し、実際に有効な DNS を前後で比較します。

更新後も元と同じサブスクリプションを使い、保護対象の三つの DNS 項目が変わっていないか確認します。ローカル設定での上書きが必要なら、有効にして警告を一度確認し、次の節の手順で再起動を検証してください。

v2.5.7 のタグ付きソースでは、確認結果をサブスクリプションごとに保存します。同じサブスクリプションと保護対象の値なら再起動後もオンを維持し、値が変わればオフにするテストがあります。この修正は有効な確認を記憶するもので、サブスクリプションの DNS 保護をなくすものではありません。未確認の別のサブスクリプションではオフになる場合がありますが、元に戻して保護対象の値が同じなら、元の確認は引き続き有効なはずです。

公式の拡張設定ドキュメントによると、オーバーライドがオンのときは画面に入力した dns 項目と hosts がサブスクリプションの対応する項目を置き換えます。オフのとき、アプリはこのスイッチによってサブスクリプションの dns を変更しません。ただし、グローバル拡張設定、サブスクリプションごとの拡張設定、スクリプトは後段で結果を書き換える可能性があります。スイッチがオンのまま解析結果が想定と違うなら、繰り返し切り替えず、実行時設定と拡張設定の適用順を確認してください。

同じサブスクリプションでアプリを二度再起動し、DNS 上書きが有効なままか確認する

まず公式 v2.5.7 を使っており、現在のサブスクリプションと保護対象の DNS 項目がテスト前と同じであることを確認します。一度オンにして確認した後、アプリを完全終了して二回再起動します。どちらの起動後も、このサブスクリプションの DNS オーバーライドはオンのままであるはずです。

実行中の構成の dns を確認し、入力した上書き値が反映されていることを確かめてから、同じノードで実際の HTTPS サイトにアクセスします。Windows で TUN を有効にする前に、実際のサービスコンポーネントにセキュリティ修正が含まれているか確認してください。未確認の旧サービスは無効のままにします。

TUN が必要な場合は、まずシステムプロキシまたは通常のネットワークで接続できることを確認します。権限とサービスの条件を満たしてから短時間だけ TUN を有効にし、名前解決、ページ全体の読み込み、接続ログを確認してください。

二つ目のサブスクリプションがある場合は、切り替え先のオーバーライド状態を確認してから元に戻します。別のサブスクリプションで未確認のためにオフになっても、元の設定が失われたとは限りません。保護対象の DNS の内容が実際に更新された場合は再確認を求めるべきであり、「常にオン」にするために保護を回避しないでください。

上書きが消える、または通信できない場合は、元の設定に戻して証拠を保存する

まずTUNとローカルのDNS上書きを無効にし、公式ドキュメントに従って現在のサブスクリプションに含まれるDNSから実行時設定を生成させます。通常のネットワーク、または以前に動作を確認したシステムプロキシが復旧したことを確認してください。拡張設定やサブスクリプションも変更していた場合は、事前のバックアップでそれらを元に戻し、再起動して実行時設定を確認します。上書きを無効にするのはローカルの上書きを取り消すだけで、コアのDNSを無効にすることでも、元のサブスクリプションが正しいと保証することでもありません。

オンの状態を強制するために verge.yaml の確認値を手作業で変えたり、出所の分からない DNS を貼り付けたり、Profile やアプリのデータディレクトリ全体を消したりしないでください。v2.5.7 でも同じサブスクリプションの保護対象三項目が全く変わっていないのにオフになるなら、OS とクライアントのバージョン、サブスクリプションの自動更新の有無、再起動前後のスイッチの状態、機密情報を伏せた該当項目、実行時設定の差分とログをプロジェクトの issue に報告してください。

スイッチはオンのままでも TUN で通信できない場合は、DNS 設定の適用経路、上流の名前解決、ノード、ネットワークインターフェースを調べ、この設定保存の問題と混同しないでください。当サイトには macOS TUN で DNS 設定が残存する別の問題について、該当する証拠がある場合の調査、修正、復旧手順を掲載しています。

参考資料