症状:ルールは書いたのに「IP のまま」になる理由
HTTPS は転送路が暗号化されるため、プロキシのルールエンジンが最初から平文のホスト名を見られるとは限りません。多くの構成では、接続の宛先がすでに IP に解決された後に内核へ渡るため、ログには 1.2.3.4:443 のようにIP とポートだけが並びます。この状態では DOMAIN-SUFFIX,example.com,PROXY を書いても、評価対象にドメイン文字列が存在しないため、期待した行に届かず、GEOIP や MATCH など別の行に落ちることがあります。検索で多いのは「TUN も入れたしルールも増やしたのに、ダッシュボードではずっと IP 表示」というパターンで、ここでSniffer を有効にしてホスト名を復元すると、ドメイン分流がようやく一つの絵として繋がります。もちろん、名前解決そのものが別経路に逃げているケースは DNS 側の問題なので、層を混ぜずに切り分けるのが早いです。
Sniffer が行うこと(TLS・QUIC・宛先の上書き)
Sniffer は、パケットの一部を解析してアプリケーション層の手がかりを取り出す仕組みです。Clash Meta/Mihomo では、典型的に TLS クライアントハンドシェイク に含まれる SNI(Server Name Indication) から、接続先として想定されるホスト名を得ます。HTTP/3 で使われる QUIC についても、実装とバージョンに応じて同様の嗅探対象になります。得られたホスト名は、ルールマッチングの入力として使われ、override-destination(宛先上書き)を有効にしていれば、以降の処理がIP ではなく復元されたドメインを見る流れに寄せられます。キーワードとして「嗅探」と表記されるのは、この暗号の外側に出ているメタデータを読むイメージに由来します。設定キーの正式名称やデフォルト値は利用中のバージョンのドキュメントを正としてください。
整理:Sniffer は「ルールの書き方」そのものではなく、ルールに渡る情報をホスト名に戻すための前処理に近いです。DNS の挙動とセットで混乱しやすいので、まずログで IP 表示か/ドメイン表示か を確認するのが第一歩です。
前提:TUN・キャプチャ経路・ルールモード
Sniffer を実際に効かせるには、内核が対象トラフィックを観測できる経路に載せる必要があります。デスクトップでは TUN で仮想 NIC に流し込む構成が一般的で、システムプロキシだけでは一部アプリのフローが見え方が変わることがあります。手順の詳細は TUN モードの記事 を参照し、OS の権限ダイアログまで通したうえで本稿に戻ってください。また、ルールモード(Rule)でドメイン系ルールを試すのが素直です。グローバルに全て同じ出口へ寄せていると、「Sniffer が悪いのか、ポリシーがそもそも単純なのか」の切り分けが難しくなります。Windows の初期構成は Windows セットアップ記事 と併せると、GUI と YAML の対応が掴みやすいです。
設定の骨格(YAML スケッチ)
以下は説明用のスケッチです。キー名・階層・デフォルトはバージョンで変わり得るため、手元の Mihomo の設定スキーマに合わせて置き換えてください。意図としては、(1) sniffer を有効化し、(2) TLS/QUIC など嗅探対象のポートを列挙し、(3) 必要なら override-destination でルール判定にドメインを効かせる、という順です。force-domain や skip-domain は、嗅探の強制・除外を細かくしたいときに使います。国内ドメインやイントラ向けホストを誤って上書きしないよう、運用ポリシーに合わせて調整してください。
# Sketch — keys depend on your Mihomo / Clash Meta version
sniffer:
enable: true
override-destination: true
sniff:
TLS:
ports: [443, 8443]
QUIC:
ports: [443]
force-domain:
- "+.example.com"
skip-domain:
- "+.lan"
override-destination とルール命中の関係
override-destination をオンにすると、嗅探で得たホスト名が、以降のルール評価で宛先として優先されやすくなります(実装の詳細はバージョン注釈を確認)。オフのままだと、ログに SNI は出てもルール入力が IP のままという齟齬が残ることがあります。一方で、あらゆるフローを機械的に上書きすると、意図しないホストへの振る舞いが変わるリスクもあるため、まずは接続ログで効果を確認しながら広げるのが安全です。社内限定ドメインやストリーミングの複雑な CDN まわりでは、skip-domain で嗅探の対象から外す判断が必要になることもあります。
DNS・FakeIP との棲み分け(混同しやすい点)
Sniffer はパケットからホスト名を復元する話であり、DNS クライアントがどのサーバに問い合わせるかとは別レイヤです。FakeIP モードでは、ブラウザが見る IP と実際のオリジンとの対応が独自のルールで管理されるため、「DNS ガイドで直したつもりなのにログが読みにくい」という状態になりがちです。整理のコツは、DNS ガイドで名前解決とリーク対策を固め、本稿の Sniffer でHTTPS の可視性を補う、という二段構えです。詳細は Meta コア DNS リーク防止 を参照してください。また、DoH を有効にした直後にだけ挙動が変わる場合は、キャッシュやクライアント側の DNS キャッシュも疑います。
ルール配列の順序(DOMAIN 行が到達する位置)
Clash 系は rules を上から評価し、最初の一致で打ち切りです。Sniffer でドメインが見えるようになっても、より上段の IP-CIDR や広い GEOIP に先に吸われていれば、DOMAIN-SUFFIX 行には届きません。対策は、(1) ダッシュボードのルール命中表示で実際にどの行が選ばれているかを見る、(2) 狙いのドメイン行をより上へ移動する、(3) 例外をローカルに追記する、の三段です。PROCESS-NAME でプロセス別に振ったルールと組み合わせる場合も、どちらが先に評価されるかが結果を決めます。購読ルールセットが巨大なプロファイルでは、追記位置を誤ると「Sniffer を入れたのに変わらない」ように見えるので注意してください。
動作確認の手順
- TUN と ルールモードが意図どおりかを確認する。
snifferを有効化しコアをリロードし、接続一覧で HTTPS が ドメイン表示に変わるかを見る。- テスト用に狭い
DOMAIN-SUFFIXを一時的に上段へ置き、意図したポリシーに落ちるか確認する。 - 効かない場合は、
override-destinationの有無、skip-domainの誤登録、より上段ルールの先取りを疑う。 - DNS 側の症状が混じる場合は FakeIP・DoH 設定 に切り替えて再現条件を分離する。
よくあるつまずき
- Sniffer オフのまま:IP 表示が続き、ドメインルールに届かない。
- override-destination 未使用/不整合:ログには出るがルール入力が IP のまま。
- ルール順:広い IP/地域ルールが先にマッチし、DOMAIN 行が死んでいる。
- QUIC/HTTP3:443/UDP の扱いが環境によっては別経路になり、嗅探対象から外れる。
- DNS だけ直そうとして混乱:実際には SNI 可視化が不足している。
注意:職場・学校・契約ネットワークではプロキシやトラフィック解析が禁止されている場合があります。許可された環境でのみ設定し、他人の通信を観測・中継しないでください。
PROCESS-NAME やシナリオ記事との組み合わせ
ドメインで大枠を決め、プロセス名で例外を足す、という二層は現場でよく使われます。例えば「ブラウザはプロキシ、特定の会議アプリは直結」は PROCESS-NAME 記事 の出番であり、ブラウザ内のサイトを細かく分けたいときは本稿の Sniffer と DOMAIN ルールが主役です。どちらも TUN 前提の話が多いので、TUN ガイド とセットで読むと、設定画面のトグルとログの対応が掴みやすくなります。
ドキュメントとクライアント入手
Sniffer のキー一覧と挙動の差分は、利用中の Mihomo のリリースノートと公式ドキュメントを正としてください。日々のクライアント入手は 公式ダウンロードページ から行い、用語の整理は ドキュメント・チュートリアル も併用すると、GUI の項目名と YAML の対応が追いやすくなります。ソースや Issue は GitHub が適していますが、インストーラの取り違え防止のため、配布物の第一選択肢はサイト側に寄せるのがおすすめです。
まとめ
HTTPS が IP 表示のままになり ドメイン分流が効かないとき、Clash Meta/Mihomo では Sniffer によって TLS SNI などからホスト名を復元し、DOMAIN-SUFFIX 系ルールが評価できる入力に揃えるのが実務的な解です。override-destination、ルール順、TUN、DNS の各レイヤを混同せず、ログで一段ずつ確認すると迷子になりません。2026 年現在も、バージョンごとのスキーマ差はあるため、コピペより手元のドキュメントと接続ログの両方を見る姿勢がもっとも安全です。
ルールをテキストで管理できるエコシステムでは、Sniffer を足すことで「見えなかったホスト名」がルールに接続され、運用の説明可能性が高まります。過剰な嗅探範囲は避け、skip-domain などで意図をコードに残すと長期メンテナンスしやすくなります。