対象を確認する:変えるのはFake-IP応答であり、経路ルールではない

この記事では、OpenClashのfake-ipモードで特定ドメインにFake-IPを返したくない場合、または返す範囲を明示したい場合のfake-ip-filterだけを扱います。対象はOpenWrt上のOpenClash安定版v0.47.156とMihomoコアです。古いOpenClash、別のClashクライアント、redir-hostモードへ画面手順をそのまま流用しないでください。

Mihomoの公式DNS設定では、fake-ip-filterはFake-IPマッピングの対象を選ぶ項目です。DNS応答を合成アドレスにするか、実際の名前解決結果にするかを変えますが、接続先をDIRECTまたはPROXYへ振り分ける機能ではありません。通信経路は引き続きルーティングルールとプロキシグループが決めます。

項目が表示されない場合:v0.47.156の画面実装では、動作モードがfake-ipのときだけFake-IP Range、Fake-IPの永続化、Fake-IP-Filterが表示されます。項目を出すことだけを目的に、redir-host構成へ無理に適用しないでください。

通常は「サービス → OpenClash → 上書き設定 → DNS設定」から開きます。LuCIのテーマや言語パックによっては“Services → OpenClash → Overwrite Settings → DNS Settings”と表示されます。画面位置ではなく、Fake-IP-FilterとFake-IP-Filter-Modeという項目名で確認します。

ドメインを入力する前に3つのモードの判定方向を選ぶ

「上書き設定 → DNS設定」でFake-IP-Filterを有効にすると、v0.47.156ではblacklist、whitelist、ruleを選べます。初期値はblacklistです。ここでいう blacklist/whitelist はFake-IPを返す範囲を表し、プロキシサーバーの許可・拒否リストではありません。

モードDNSの動作向いている用途
blacklist一致時は実際の名前解決を使い、不一致ならFake-IPを返し得る少数の問題ドメインだけを除外する
whitelist一致時はFake-IPを返し、不一致なら実際の名前解決を使う限定したドメインだけをFake-IP対象にする
rule最初に一致したfake-ipまたはreal-ipを実行し、すべて不一致ならFake-IPを使う両方の結果を順序付きで管理する

whitelistを選んだのに、入力欄を「Fake-IPを返さないドメイン一覧」と考えるのが典型的な誤りです。ホワイトリストでは一致した名前だけにFake-IPを返します。プリンター、社内ホスト、接続確認、特定アプリの1ドメインを直したいだけなら、まず初期値のblacklistで試します。

変更前の状態を残す:現在のモード、元の一覧、DNS応答、再現手順を保存します。上流DNS、IPv6、地域バイパス、ルールセット、ブラウザのセキュアDNSまで同時に変えると、どの変更が効いたか判断できません。

blacklistに正確なホスト名を1つだけ入れて試す

問題を確実に再現できる正確なホスト名を1つ選びます。以下のdevice.example.netは同梱された既定項目と重ならないプレースホルダーです。実際にはログで確認した不具合対象のホスト名へ置き換えてください。Fake-IP-Filterの入力欄は1行1項目です。YAML配列のハイフンや説明文は付けません。v0.47.156は入力内容を/etc/openclash/custom/openclash_custom_fake_filter.listへ保存し、上書き処理がdns.fake-ip-filterへ統合します。

Fake-IP-Filter · blacklistdevice.example.net
  1. OpenClashがfake-ipモードであることを確認し、変更前のDNS応答とアプリの症状を記録し、記事末尾の方法で現在の一覧をバックアップします。
  2. 「上書き設定 → DNS設定」でFake-IP-Filterを有効にし、blacklistのままにします。
  3. 正確なホスト名を1つだけ追加します。すぐに検証する場合は「Apply Settings(設定を適用)」を1回実行します。変更の保存、OpenClashの有効化、再起動が行われるため、先に「Commit Settings(設定を保存)」を押す必要はありません。
  4. 再起動を待ち、起動ログにYAML、Fake-IP-Filter、DNSのエラーがないか確認します。
  5. 同じ端末からルーターDNSへ再度問い合わせ、ノードやプロキシモードを変えずに元の操作を試します。

完全一致で効果を確認してから範囲を広げます。MihomoのClash形式では、*.example.comは1階層のサブドメインだけに一致し、ルートやさらに深い階層には一致しません。+.example.comは接尾辞に近い動作で、ルートと複数階層を含みます。MihomoのYAMLではワイルドカードを引用符で囲みますが、OpenClashのこの入力欄は行単位のプレーンテキストです。YAMLの引用符やリスト記号を貼り付けないでください。

範囲を広げる前に検証*.device.example.net
+.corp.example.net

名前が同じサービスに見えるだけで公開サフィックス全体を追加しないでください。ログやDNS問い合わせから実際のホスト名を確認します。広すぎる例外は大量の問い合わせを実IPへ切り替え、本来の上流DNSや経路の問題を隠します。

whitelistとruleは設計上必要な場合だけ使う

whitelistは、あらかじめ指定した少数のドメインだけにFake-IPを返し、その他を実際の名前解決にする構成向けです。切り替えると一致しない全ドメインの既定動作が変わります。1台のテスト端末でログイン、LANサービス、普段使うサイト、経路ルールを確認してからネットワーク全体へ反映します。

切り替える前に最終的な実行一覧をバックアップして確認:whitelistでは、統合後の通常項目がすべて「一致時にFake-IPを返す」という逆の意味になります。ruleでは、サブスクリプション由来の項目やOpenClashの生成項目を含む最終的なdns.fake-ip-filterの各非コメント項目を、末尾のアクションがfake-ipまたはreal-ipになっている完全なルールにする必要があります。末尾のMATCHは解析上の必須条件ではなく、すべて不一致ならMihomoはFake-IPを使いますが、確認しやすいよう明示的なフォールバックを推奨します。次の例は独立したテスト用一覧であり、既存のblacklist形式へ追記するものではありません。最終一覧を確認できない場合はruleへ切り替えないでください。

Fake-IP-Filter · whitelist+.proxy-test.example.net
api.proxy-test.example.net

ruleはMihomoの経路ルールに似た上から下への順序で評価されますが、ここで使う動作はfake-ipとreal-ipです。どのルールにも一致しない場合、MihomoはFake-IPを使います。結果を確認しやすく保つため、末尾の動作も明示することを推奨します。次の例では2つの範囲だけを実IPにし、残りをFake-IPにします。

Fake-IP-Filter · ruleDOMAIN,device.example.net,real-ip
DOMAIN-SUFFIX,corp.example.net,real-ip
MATCH,fake-ip

ruleモードへ通常のblacklist形式を混ぜたり、動作欄へDIRECT、PROXY、プロキシグループ名を書いたりしません。GEOSITEとRULE-SETも利用できますが、参照先が存在し、対応する形式である必要があります。内容を確認できない集合より、少数の明示的なDOMAIN規則の方が安全です。

1ドメインの不具合ならblacklistから:他のドメインへの影響が最小で、切り戻しも容易です。「少数だけFake-IP」または「順序付きで混在」が本来の要件である場合に限り、whitelistまたはruleを選びます。

DNS応答、OpenClashログ、実際の通信を別々に確認する

v0.47.156の「Commit Settings(設定を保存)」は現在のフォームとカスタム一覧を保存しますが、OpenClashを再起動しません。「Apply Settings(設定を適用)」も設定を保存し、さらにOpenClashを有効化して再起動し、実行用設定を再生成します。検証するときはApplyを1回実行すれば十分で、先にCommitを押す必要はありません。再起動中の短い切断は想定内ですが、復旧しない場合は異常です。状態が戻ったら、まず生成ログを確認してからDNSを試します。

実際のアドレスとドメインへ置換nslookup device.example.net <ルーターのLANアドレス>

判断には実行中のfake-ip-rangeを使います。OpenClash v0.47.156の同梱テンプレートは198.18.0.1/16を使用しますが、上書き項目は初期状態でサブスクリプションの値を強制的に置き換えません。blacklistに一致した後は、上流DNSによる実アドレス、LAN内アドレス、または明示的な不存在応答になります。設定したFake-IPプールの外になっただけではアプリの復旧を証明できません。

  1. 端末がルーターDNSを使い、ブラウザのセキュアDNS、アプリ内DoH、手動DNSへ迂回していないことを確認します。
  2. 正確なホスト名を問い合わせ、応答したサーバー、アドレス、状態を記録します。
  3. OpenClashログで構文エラーや設定の拒否がないことを確認します。
  4. 元のログイン、機器探索、ページ表示、接続操作を再現します。
  5. 接続ログで想定した経路ルールとプロキシグループにマッチしたか確認します。

各手順が検証するのは、端末のDNS経路、Fake-IPマッピング、設定の有効性、アプリ動作、最終経路という別の層です。ICMPへ応答しないサービスも多いため、pingだけで成否を判断しないでください。

反映されないときは決まった順番で切り分ける

応答が変わらなくても、すぐに一覧を広げないでください。次の順に確認すると、規則が実行用設定へ入っていないのか、問い合わせがOpenClashを通っていないのかを分けられます。

症状最初の確認対応
Fake-IP-Filterが表示されない動作モードがfake-ipか対象を確認し、redir-hostへ無理に適用しない
1ドメインがまだFake-IPになる有効化、モード、綴り、実際の問い合わせ名blacklistに正確なホスト名を1件だけ登録した状態へ戻す
ルーターへの問い合わせは正常だがブラウザは失敗セキュアDNS、アプリ内DoH、キャッシュルーターDNSを使わせ、該当キャッシュを消す
実IPでもサイトが開かない経路ルール、グループ、ノード、証明書DNSマッピングと外向き通信を分ける
適用後にOpenClashが起動しないrule構文とログ最初のエラー元の一覧とモードへ戻し、1行ずつ追加

再起動時にサブスクリプションや別の上書きがDNS部分を置換していないかも確認します。OpenClashはカスタムFake-IP-Filterが有効で、生成対象もfake-ipの場合にだけ、ファイルの項目を既存のdns.fake-ip-filterの前へ追加します。各行の#以降を削除して前後の空白を除き、正規化後に完全一致する文字列だけを重複排除します。ワイルドカードと個別ホストで範囲が重なる項目は両方残ります。さらにOpenClashが生成項目を追加する場合もあるため、入力欄は最終一覧そのものではありません。

1つの症状を広範囲の例外にしない:ゲーム、プリンター、社内サービスの実際のホスト名をログで確認します。根拠なくgeosite:cn、ベンダー全体の接尾辞、公開コレクションを追加すると、多数のDNS応答が変わり、別の不具合を作ります。

IPv6のプロキシノード名、上流のAAAA応答、DNSハイジャック経路が原因なら、別記事のOpenClash IPv6ノード名のDNS切り分けを参照し、fake-ip-filterへ異なる問題をまとめないでください。

元の一覧を保存し、例外をいつでも戻せる状態にする

最初の変更前に、SSHでカスタム一覧を管理者だけが読める場所へコピーします。まず元ファイルの存在を確認し、まだ作成されていない場合はLuCI上の無効状態と空の一覧を記録します。次のコマンドはフィルター一覧だけを保存し、同名の保存先を上書きするため、既存バックアップがある場合は別のファイル名を使ってください。

OpenWrt Shellcp /etc/openclash/custom/openclash_custom_fake_filter.list   /root/openclash_custom_fake_filter.list.bak

切り戻すときはLuCIで元のモードと内容へ戻すか、カスタムFake-IP-Filterを無効にして、「Apply Settings(設定を適用)」でOpenClashを再生成・再起動します。下のSSHコマンドでバックアップを戻す場合は、LuCIを再読み込みして内容が復元されたことを確認してから適用し、古いフォームでファイルを上書きしないようにします。DNSと元のアプリ動作が戻ったことを確認してから、さらに狭い規則を試します。

バックアップ確認後のみ実行cp /root/openclash_custom_fake_filter.list.bak   /etc/openclash/custom/openclash_custom_fake_filter.list

継続運用では、各規則が必要な機器やサービス、元の症状、最終確認日を記録します。サービス更新やホスト名変更後は、例外を1つ外して再確認します。不要になった項目を削除し、管理できない別のドメインリストにしないことが重要です。

完了条件:確認したドメイン範囲だけを変更し、選んだモードの判定方向が要件と一致し、DNS応答・ログ・実通信のすべてで意図した結果を確認でき、元の一覧と復元方法が残っていることです。

対応プラットフォームの確認やOpenClash・Mihomo関連クライアントの入手は、サイトのダウンロードページを利用できます。更新しても、この記事のバックアップと単一変数テストは省略できません。

公式情報源とバージョン範囲

バージョン番号、ファイル名、画面表示は更新で変わる場合があります。作業前にリンク先の公式資料を確認してください。